en un clic
resolve-playlist
// Resolve YouTube video IDs for unmatched tracks in a stored playlist. Uses yt-dlp (no API quota). Scores candidates on channel quality, duration match, and title similarity.
// Resolve YouTube video IDs for unmatched tracks in a stored playlist. Uses yt-dlp (no API quota). Scores candidates on channel quality, duration match, and title similarity.
Interactively review flagged tracks from the YouTube resolver. Edit review JSON files to accept or reject candidates, then run spoti-bye review to apply.
Import a Spotify playlist into the local SQLite database. Supports Spotify URLs (playlist/track/album), Exportify CSVs, and JSON track lists.
Bulk import or sync all Spotify playlists from an Exportify zip export. Detects new, updated, and unchanged playlists. YouTube IDs are preserved on updates.
| name | resolve-playlist |
| description | Resolve YouTube video IDs for unmatched tracks in a stored playlist. Uses yt-dlp (no API quota). Scores candidates on channel quality, duration match, and title similarity. |
| triggers | ["resolve youtube ids","resolve playlist","find youtube videos","match youtube"] |
Resolve YouTube video IDs for tracks in the local database using yt-dlp.
yt-dlp must be installed: brew install yt-dlp or pip install yt-dlpspoti-bye resolve --playlist=<id> --threshold=5 --delay=1500
Options:
--playlist=ID — required--threshold=N — minimum score to auto-accept (default: 5; use 1 for aggressive auto-accept)--delay=MS — delay between searches in ms (default: 1500; increase if hitting bot detection)--dry-run — preview without writing to DB--verbose — show scoring details for each candidateEach YouTube candidate is scored on:
Tracks scoring below threshold go to a review file at ~/.spoti-bye/youtube-review-<id>.json.
spoti-bye review # process flagged tracks
If yt-dlp starts failing with "Sign in to confirm", increase --delay or wait a few hours.
for id in $(sqlite3 ~/.spoti-bye/playlists.db "SELECT DISTINCT pt.playlist_id FROM songs s JOIN playlist_tracks pt ON pt.song_id = s.id WHERE s.youtube_video_id IS NULL ORDER BY pt.playlist_id;"); do
echo "=== Playlist $id ==="
spoti-bye resolve --playlist=$id --threshold=1 --delay=1500
done