mirror of
https://github.com/glomatico/votify.git
synced 2026-09-26 19:12:27 +02:00
f6b7f0277785cb55063cf45f15d8ba2efb795718
Votify
A Python CLI app for downloading songs/podcasts from Spotify in Vorbis (OGG).
Features
- Download songs and podcasts in Vorbis 96/128kbps or in 320kbps with a premium account
- Download synced lyrics
- Highly configurable
Prerequisites
- Python 3.8 or higher
- The cookies file of your Spotify browser session in Netscape format (free or premium)
- You can get your cookies by using one of the following extensions on your browser of choice at the Spotify website with your account signed in:
- Firefox: https://addons.mozilla.org/addon/export-cookies-txt
- Chromium based browsers: https://chrome.google.com/webstore/detail/gdocmgbfkjnnpapoeobnolbbkoibbcif
- You can get your cookies by using one of the following extensions on your browser of choice at the Spotify website with your account signed in:
- Unplayplay
- Build it from source: https://git.gay/glomatico/unplayplay.
Installation
- Install the package
votifyusing pippip install votify - Set up the
cookies.txt.- You can either move to the current directory from which you will be running Votify or specify its path using the command line arguments/config file.
- Set up Unplayplay
- You can either add it to your PATH or specify its path using the command line arguments/config file.
Usage
votify [OPTIONS] URLS...
Examples
- Download a song
votify "https://open.spotify.com/track/18gqCQzqYb0zvurQPlRkpo" - Download an album
votify "https://open.spotify.com/album/0r8D5N674HbTXlR3zNxeU1"
Configuration
Votify can be configured using the command line arguments or the config file.
The config file is created automatically when you run Votify for the first time at ~/.votify/config.json on Linux and %USERPROFILE%\.votify\config.json on Windows.
Config file values can be overridden using command line arguments.
| Command line argument / Config file key | Description | Default value |
|---|---|---|
--wait-interval, -w / wait_interval |
Wait interval between downloads in seconds. | 10 |
--force-premium, -f / force_premium |
Force to detect the account as premium. | false |
--save-cover, -s / save_cover |
Save cover as a separate file. | false |
--overwrite / overwrite |
Overwrite existing files. | false |
--read-urls-as-txt, -r / - |
Interpret URLs as paths to text files containing URLs. | false |
--save-playlist / save_playlist |
Save a M3U8 playlist file when downloading a playlist. | false |
--lrc-only, -l / lrc_only |
Download only the synced lyrics. | false |
--no-lrc / no_lrc |
Don't download the synced lyrics. | false |
--config-path / - |
Path to config file. | <home>/.votify/config.json |
--log-level / log_level |
Log level. | INFO |
--print-exceptions / print_exceptions |
Print exceptions. | false |
--cookies-path / cookies_path |
Path to cookies file. | ./cookies.txt |
--quality, -q / quality |
Audio quality. | medium |
--output-path, -o / output_path |
Path to output directory. | ./Spotify |
--temp-path / temp_path |
Path to temporary directory. | ./temp |
--download-mode, -d / download_mode |
Download mode. | ytdlp |
--aria2c-path / aria2c_path |
Path to aria2c binary. | aria2c |
--unplayplay-path / unplayplay_path |
Path to unplayplay binary. | unplayplay |
--template-folder-album / template_folder_album |
Template folder for tracks that are part of an album. | {album_artist}/{album} |
--template-folder-compilation / template_folder_compilation |
Template folder for tracks that are part of a compilation album. | Compilations/{album} |
--template-file-single-disc / template_file_single_disc |
Template file for the tracks that are part of a single-disc album. | {track:02d} {title} |
--template-file-multi-disc / template_file_multi_disc |
Template file for the tracks that are part of a multi-disc album. | {disc}-{track:02d} {title} |
--template-folder-episode / template_folder_episode |
Template folder for episodes (podcasts). | Podcasts/{album} |
--template-file-episode / template_file_episode |
Template file for episodes (podcasts). | {track:02d} {title} |
--template-file-playlist / template_file_playlist |
Template file for the M3U8 playlist. | Playlists/{playlist_artist}/{playlist_title} |
--date-tag-template / date_tag_template |
Date tag template. | %Y-%m-%dT%H:%M:%SZ |
--exclude-tags / exclude_tags |
Comma-separated tags to exclude. | null |
--truncate / truncate |
Maximum length of the file/folder names. | null |
--no-config-file, -n / - |
Do not use a config file. | false |
Tag variables
The following variables can be used in the template folder/file and/or in the exclude_tags list:
albumalbum_artistartistcompilationcomposercopyrightcoverdiscdisc_totalisrclabellyricsplaylist_artistplaylist_titleplaylist_trackproducerratingrelease_daterelease_yeartitletracktrack_totalurl
Download qualities
The following qualities are available:
high(320kbps, requires premium account)medium(160kbps)low(96kbps)
Download modes
The following modes are available:
ytdlparia2c- Faster than
ytdlp - Can be obtained from here: https://github.com/aria2/aria2/releases
- Faster than