Skip to main content

A Python CLI app for downloading songs/podcasts from Spotify.

Project description

Votify

A Python CLI app for downloading songs/podcasts from Spotify.

Discord Server: https://discord.gg/aBjMEZ9tnq

Features

  • Download songs and podcasts in Vorbis 96/128kbps or in 320kbps with a premium account
  • Support for artist links to download all of their albums
  • Download synced lyrics
  • Highly configurable

Prerequisites

Installation

  1. Install the package votify using pip
    pip install votify
    
  2. 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.
  3. 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"
    
  • Choose which albums to download from an artist
    votify "https://open.spotify.com/artist/0gxyHStUsqpMadRV0Di1Qt"
    

Interactive prompt controls

  • Arrow keys - Move selection
  • Space - Toggle selection
  • Ctrl + A - Select all
  • Enter - Confirm selection

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
--read-urls-as-txt, -r / - Interpret URLs as paths to text files containing URLs. 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
--save-cover, -s / save_cover Save cover as a separate file. false
--save-playlist / save_playlist Save a M3U8 playlist file when downloading a playlist. false
--overwrite / overwrite Overwrite existing files. false
--exclude-tags / exclude_tags Comma-separated tags to exclude. null
--truncate / truncate Maximum length of the file/folder names. null
--lrc-only, -l / lrc_only Download only the synced lyrics. false
--no-lrc / no_lrc Don't download the synced lyrics. false
--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:

  • album
  • album_artist
  • artist
  • compilation
  • composer
  • copyright
  • cover
  • disc
  • disc_total
  • isrc
  • label
  • lyrics
  • playlist_artist
  • playlist_title
  • playlist_track
  • producer
  • rating
  • release_date
  • release_year
  • title
  • track
  • track_total
  • url

Download qualities

The following qualities are available:

  • high (320kbps, requires premium account)
  • medium (160kbps)
  • low (96kbps)

Download modes

The following modes are available:

Credits

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

votify-1.3.1.tar.gz (20.4 kB view details)

Uploaded Source

Built Distribution

votify-1.3.1-py3-none-any.whl (22.6 kB view details)

Uploaded Python 3

File details

Details for the file votify-1.3.1.tar.gz.

File metadata

  • Download URL: votify-1.3.1.tar.gz
  • Upload date:
  • Size: 20.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-requests/2.32.3

File hashes

Hashes for votify-1.3.1.tar.gz
Algorithm Hash digest
SHA256 78cc967936002edd56e32afef6703098a1bc0b62ae99c9b3e54aa01bdd8d5807
MD5 937eaa4e4b1912bd901519252cd88a5b
BLAKE2b-256 798e025d4bb5dfdb03684b7b4048b3e17387903e16363c13100439a114aee5cc

See more details on using hashes here.

File details

Details for the file votify-1.3.1-py3-none-any.whl.

File metadata

  • Download URL: votify-1.3.1-py3-none-any.whl
  • Upload date:
  • Size: 22.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-requests/2.32.3

File hashes

Hashes for votify-1.3.1-py3-none-any.whl
Algorithm Hash digest
SHA256 7d7c728844089c560c503ac5313dfeabe16499b2e30820fc53eac1b93e24ae72
MD5 b4c653fcdf1425c03c5d68617f1734dd
BLAKE2b-256 c40e488fcb5d705015d880398e3dec09e49a3960183a2d7ac3cd98f246c0aa0a

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page