No updates detected yet. GitHub releases will appear here.
ListenBrainz playlists → downloaded, tagged library → Plex. Rust, with a daemon, CLI and Nix package.
翻訳待ち
Loading the full README.
Read the full README ↗ListenBrainz builds you a fresh Weekly Jams and Weekly Exploration every week.
tapedeck turns them into music you own. It looks every track up on MusicBrainz, downloads
it with yt-dlp, writes proper tags, files it into a clean Artist/Album/Track tree, keeps
an m3u8 per playlist and pushes the playlist to Plex. Run it once, or let the daemon do it
every few hours.
Vibe coded, built for one person. tapedeck is written with AI assistance for my own setup and comes with no guarantees. You are welcome to try it and to file issues; I will try to fix them.
ListenBrainz ──▶ MusicBrainz ──▶ yt-dlp ──▶ tags ──▶ Artist/Album (Year)/01 - Title.opus
playlists metadata audio lofty │
├──▶ playlists/*.m3u8
└──▶ Plex playlist
I used Explo for this and wanted a few things it
doesn't do: a real library layout instead of a flat folder of files, a database so a song
that shows up in three weekly playlists is downloaded once, a daemon with a CLI that talks
to it, and output that scripts (or an AI agent) can parse. tapedeck is that, in Rust. The
binary is called td.
What you get
{album_artist}/{album} ({year})/{track:02} - {title}.{ext} by default, yours if you prefer.Enter in the TUI plays a track and queues the rest through mpv, locally or
streamed from the NAS, and scrobbles to ListenBrainz so next week's playlists know.td tui on another machine browses and controls the NAS..lrc files next to the music, so Plexamp
shows them, and in the database, so Subsonic apps get them too. On by default, no account.[steam] at the Steam client's steamapps/music, or give it
a steamcmd account and the daemon downloads every soundtrack you own. They come in with
their own tags and artwork, no MusicBrainz needed.td daemon runs on an interval and listens on a Unix
socket; every other command talks to it if it's running and does the work itself if
not.Rust · clap · rusqlite · lofty · reqwest · tokio · yt-dlp · MusicBrainz · ListenBrainz
yt-dlp and ffmpeg on PATH, unless you install through Nix, which bundles them.Prebuilt binaries for Linux and macOS (x86_64 and arm64) are attached to each release. With bin:
bin install github.com/arunoruto/tapedeck
Nix, with x86_64-linux builds served from arunoruto.cachix.org (the flake advertises
the cache; accept it with --accept-flake-config or add it to your substituters):
nix run github:arunoruto/tapedeck -- --help
Cargo:
cargo install --git https://github.com/arunoruto/tapedeck
This is the beginning of the README. Read the rest at the original. Read the full README ↗
td--json everywhere. One JSON object per line, for scripts and agents.token_file, and SQLite is the single source of
truth.