No description
  • Rust 50.5%
  • Python 47.4%
  • Nix 2.1%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-07-26 14:51:25 +02:00
src begin set_song_metadata implementation 2025-11-10 17:48:19 +01:00
.gitignore add initial spotify webapi client support 2025-05-16 17:27:00 -05:00
Cargo.lock implement play_song and add docstrings 2025-06-05 17:08:46 -05:00
Cargo.toml implement play_song and add docstrings 2025-06-05 17:08:46 -05:00
flake.lock add nix flake to track dev deps 2025-05-16 14:44:38 -05:00
flake.nix add nix flake to track dev deps 2025-05-16 14:44:38 -05:00
README.md implement play_song and add docstrings 2025-06-05 17:08:46 -05:00
tsar.py handle episodes 2026-07-26 14:51:25 +02:00
tsar_create_credentials.py update to support non-password authentication 2024-10-30 15:32:44 -05:00

tsar - the spotify audio recorder

requires:

librespot
 - build with `cargo build --features passthrough-decoder`
spotipy
eyed3
click
ffmpeg

Build

# start dev env
nix develop
# build
cargo build

usage:

normal usage:

./tsar.py --output_dir="out" --playlist_id="spotify:playlist:<rand>" --username="<username>" --cache_dir="cache_dir"

empty the playlist once complete:

./tsar.py --output_dir="out" --playlist_id="spotify:playlist:<rand>" --username="<username>" --cache_dir="cache_dir" --empty_playlist

use a custom build of librespot:

./tsar.py --output_dir="out" --playlist_id="spotify:playlist:<rand>" --username="<username>" --cache_dir="cache_dir" --librespot_binary="<path/to/binary>"

Create cached credentials

for librespot (the player portion) https://github.com/librespot-org/librespot/wiki/Options#headless-oauth

librespot --cache cache_dir --enable-oauth --oauth-port 0

for rspotify (the controller portion)

./tsar_create_credentials

this will create .spotify_token_cache.json

put it in the cache_dir privided to tsar