No description
Find a file
2025-11-11 21:31:36 +01: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 return completed tracks, added song_count_limit, and track removal via 2025-11-11 21:31:36 +01: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