Skip to content
fill-music-player logo

Fill Music Player

fill-music-player

Use when a user wants to fill a portable music player (Walkman, iPod, USB drive) with a curated random selection from a music library on a NAS or local directory. Handles format filtering, artist/album diversity balancing, and size targeting.

oleg-koval/agent-skills0installs3stars

SKILL.md

Full skill instructions

<!-- Generated by scripts/​build-adapters.sh. Do not edit directly. -->

fill-music-player

Curates a DJ-balanced selection of tracks from a source music library and copies them to a portable player, respecting device capacity and supported formats.

Quick Reference

# Dry run first (always recommend this)
fill-music-player --source /​Volumes/​music --dest /​Volumes/​WALKMAN/​MUSIC --dry-run

# Copy for real
fill-music-player --source /​Volumes/​music --dest /​Volumes/​WALKMAN/​MUSIC

# Or run the script directly with uv
uv run fill_music_player.py --source ~/​Music --dest /​Volumes/​USB --dry-run

Run fill-music-player --help for all options.

Key Parameters

FlagDefaultPurpose
--source / -srequiredSource music root (NAS mount, ~/​Music, etc.)
--dest / -drequiredPlayer destination directory
--target-gb95% of free spaceHow many GB to fill
--formatsmp3,m4a,wma,aacAllowed extensions
--max-per-artist4Artist diversity cap
--max-per-album3Album diversity cap
--skip-dirs(none)Top-level dirs to skip
--dry-runfalsePreview without copying

Workflow

  1. Always do --dry-run first
  2. Review the per-genre breakdown
  3. Adjust --skip-dirs, --max-file-mb, or --max-per-artist if needed
  4. Run without --dry-run to copy

Device Formats

DeviceRecommended --formats
Sony Walkman NWZ seriesmp3,m4a,wma
iPod (classic/​nano)mp3,m4a,aac
Generic USB playermp3
Any modern playermp3,m4a,wma,aac,ogg,flac

Edge Cases and Troubleshooting

SituationWhat happensFix
NAS disconnects mid-copyCopy fails for that file, logged as error, continues with next trackRe-run; already-copied files are skipped (if not dst.exists())
Source has only FLAC/​lossless0 files selected (FLAC not in default formats)Use --formats flac or --formats mp3,flac
FAT32 filename too long or illegal charsFilenames are sanitized: <>:"/|?* replaced with _, truncated to 80 charsAutomatic — no action needed
Mixed/​broken ID3 tagsFalls back to folder name parsing (Genre/​Artist - Album/​track.mp3)Works transparently; folder structure is the reliable fallback
Very large files (DJ mixes, radio shows)Skipped by default (>20 MB)Adjust with --max-file-mb 50 to include mixes
Tiny files (jingles, corrupt)Skipped by default (<300 KB)Adjust with --min-file-kb 100 to be more permissive
One artist dominates the libraryCapped at 4 tracks per artist, 3 per albumLower with --max-per-artist 2 for more variety
Empty genre directoriesSilently skipped, no errorNormal behavior
Destination already has filesExisting files are not overwritten or deleted; new tracks added alongsideClear destination first if you want a fresh set
SMB/​NFS mount is slowScanning with mutagen tag reading can take 5-10 min for large librariesExpected; the dry-run output appears once scanning completes

Real-World Example

Filling a Sony Walkman NWZ-B183F (4 GB) from a Synology DS918+ NAS with ~9,000 tracks across blues, funk, hip-hop, soul, IDM, dubstep, dub, indie, and post-rock:

# Step 1: Preview
fill-music-player \
  --source /​Volumes/​music \
  --dest /​Volumes/​WALKMAN/​MUSIC \
  --skip-dirs "jingles,!recordings,!restored,dubrecords" \
  --formats mp3,m4a,wma \
  --dry-run

# Output:
#   Found 8914 candidate tracks across 14 genres
#   Funk     →  86 tracks  (440.8 MB)
#   blues    →  38 tracks  (316.7 MB)
#   hiphop   →  33 tracks  (234.7 MB)
#   ...
#   Selected 348 tracks  (2473.0 MB)

# Step 2: Copy
fill-music-player \
  --source /​Volumes/​music \
  --dest /​Volumes/​WALKMAN/​MUSIC \
  --skip-dirs "jingles,!recordings,!restored,dubrecords" \
  --formats mp3,m4a,wma

Result: 348 tracks, 2.4 GB, balanced across 14 genres with max 4 tracks per artist. Artists included Fela Kuti, ZZ Top, Mobb Deep, Gregory Porter, Tinariwen, Chick Corea, Hudson Mohawke, and Funkadelic. Total copy time over SMB: ~12 minutes.

More skills from oleg-koval

promptctl logo
oleg-koval/agent-skills

promptctl

Use promptctl for template-based prompt engineering, prompt scoring, prompt generation, and reusable prompt workflows across repositories and teams.

3 0
View
product-builder logo
oleg-koval/agent-skills

product-builder

Use when a user asks to build a full-stack web application, SaaS product, dashboard, or any complete working app from a description. Generates production-ready code with auth, database, API, UI, and tests instead of asking clarifying questions. Activates on "build me X", "create an app that", or ...

3 0
View
docs-index-keeper logo
oleg-koval/agent-skills

docs-index-keeper

Keep a repository's Markdown docs index in sync by installing and running docs-index-keeper in pre-commit hooks, CI, or one-off maintenance flows.

3 0
View
gh-cli logo
oleg-koval/agent-skills

gh-cli

GitHub CLI (gh) comprehensive reference for repositories, issues, pull requests, Actions, projects, releases, gists, codespaces, organizations, extensions, and all GitHub operations from the command line.

3 0
View
viral-launch logo
oleg-koval/agent-skills

viral-launch

Set up a project repository and launch plan for shareable marketing, public launch readiness, and growth loops without pretending virality is guaranteed.

3 0
View

Popular AI tools

Kaiber logo
Video

Kaiber

Generate, edit, and beat-sync AI video with leading models in one workspace.

Paid
View
Vimcal logo
Productivity

Vimcal

The world's fastest calendar for remote work

Free
View

Transform Your Design with AI Designer by ImgCreator.ai

Freemium
View
Akool AI logo
Content & writing

Akool AI

Revolutionizing Video Production with AI-Powered Creativity

Paid
View

Extend an image past the frame and let AI fill the new aspect ratio.

Freemium
View
StarByFace logo
Security

StarByFace

Discover your celebrity doppelgänger with StarByFace!

Free
View
C

ChainClarity explains 700+ crypto whitepapers in plain English, with layered summaries, comparisons, research tools, alerts, and a $4.99 Pro plan.

Freemium
View
Opus Clip logo
Coding & apps

Opus Clip

Opus.ai: Revolutionize Your Web Experience

Free
View