votify

glomaticoMIT更新放缓

命令行工具,从 Spotify 批量下载歌曲、播客和视频,支持 AAC、OGG Vorbis 等格式,适合离线收藏音乐内容。

A command-line app for downloading songs, podcasts and videos from Spotify.

1.9.9发布于 2026-04-27 09:46 UTC946star86fork同步于 2026-11-07 07:34 UTC

怎么上手

由 README 提炼,执行前请确认
pip install votify[librespot]
硬件要求按 README 说明

README 未说明硬件要求;仅要求 Python 3.10 及以上,未提及 GPU 或显存

下载:源码 zip·GitHub Releases(安装包)本站不镜像安装包

项目说明

由 README 自动翻译提炼

从 Spotify 下载歌曲、播客和视频的命令行工具,支持按链接批量抓取

命令行工具,从 Spotify 批量下载歌曲、播客和视频,支持 AAC、OGG Vorbis 等格式,适合离线收藏音乐内容。

核心能力

  • 按 URL 下载单曲、专辑、播放列表、播客和音乐视频
  • 提供艺术家 URL 即可下载其全部作品
  • 可下载 LRC 格式的同步歌词
  • 支持 Vorbis、AAC、FLAC 多档音质选择
  • 用模板自定义文件夹与文件命名规则

容易踩的坑

必须先在 Spotify 网页登录后导出 Netscape 格式 cookies 并放到工作目录的 cookies.txt;默认 librespot 会话需安装 librespot extra,AAC/FLAC 音质还需 .wvd 文件及 FFmpeg 等外部工具;README 警告有用户使用后账号被 Spotify 封禁,且新账号用默认设置可能无法下载歌曲

内容由模型根据 README 生成,可能不完整或不准确,以官方文档为准。看原文 README

最近发版

5 个版本1.9.9
  1. 1.9.9最新正式版2026-04-27 · 2026-04-27 09:46 UTC
    • Fixed auth issue with desktop session.
  2. 1.9.82026-04-16 · 2026-04-16 15:49 UTC
    查看更新说明
    • Update unplayplay version.
  3. 1.9.72026-04-16 · 2026-04-16 15:38 UTC
    查看更新说明
    • Added UPC tag
  4. 1.9.62026-04-13 · 2026-04-13 01:15 UTC
    查看更新说明
    • Fixed auth issue with desktop session.
  5. 1.9.52026-04-01 · 2026-04-01 23:46 UTC
    查看更新说明
    • Allow AAC and MP4 FLAC for desktop session type.
    • Fixed desktop session token refresh.

用户点评

登录用户的真实使用记录,可按版本和硬件筛选
共 0 条

    还没有人点评。第一个说出真实体验的人最有价值。

    README 原文

    未翻译

    Votify

    PyPI version Python versions License Downloads

    A command-line app for downloading songs, podcasts and videos from Spotify.

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

    ✨ Features

    • 🎵 Songs - Download songs.
    • 🎙️ Podcasts - Download podcasts.
    • 🎬 Videos - Download podcast videos and music videos.
    • 🎤 Synced Lyrics - Download synced lyrics in LRC format.
    • 🧑‍🎤 Artist Support - Download an entire discography by providing the artist's URL.
    • ⚙️ Highly Customizable - Extensive configuration options for advanced users.

    📋 Prerequisites

    Required

    • Python 3.10 or higher
    • Spotify cookies - Export your browser cookies in Netscape format while logged in at the Spotify homepage:

    [!WARNING]

    • Some users have reported that Spotify suspended their accounts after using Votify. Use it at your own risk.
    • You may not be able to download songs with default settings if your account is too new. In this case, refer to the Dependencies section for alternative configurations that may support new accounts.

    Dependencies

    Add these tools to your system PATH or specify their paths via command-line arguments or the config file. The tools needed depend on which audio quality, video format, and download speed you want. Use the table below to find the required tools for your use case:

    FeatureConfigurationRequired Tools
    Songs in Vorbis (default)audio_quality: vorbis-low|vorbis-medium|vorbis-highsession_type: librespotNone
    audio_quality: vorbis-low|vorbis-medium|vorbis-highsession_type: desktopSpotify DLL
    Songs in AAC Qualityaudio_quality: aac-medium|aac-highsession_type: librespot|webaudio_remux_mode: ffmpeg.wvd fileFFmpeg
    audio_quality: aac-medium|aac-highsession_type: librespot|webaudio_remux_mode: mp4box.wvd fileMP4Boxmp4decrypt
    audio_quality: aac-medium|aac-highsession_type: librespot|webaudio_remux_mode: mp4decrypt.wvd filemp4decrypt
    audio_quality: aac-medium|aac-highsession_type: desktopaudio_remux_mode: ffmpegSpotify DLLFFmpeg
    audio_quality: aac-medium|aac-highsession_type: desktopaudio_remux_mode: mp4boxSpotify DLLMP4Boxmp4decrypt
    audio_quality: aac-medium|aac-highsession_type: desktopaudio_remux_mode: mp4decryptSpotify DLLmp4decrypt
    Songs in FLAC Qualityaudio_quality: flac-mp4|flac-mp4-24session_type: librespot|webaudio_remux_mode: ffmpegL1-certified .wvd fileFFmpeg
    audio_quality: flac-flac|flac-flac-24session_type: desktopSpotify DLL
    audio_quality: flac-mp4|flac-mp4-24session_type: desktopaudio_remux_mode: ffmpegSpotify DLLFFmpeg
    Podcasts in Vorbisaudio_quality: vorbis-low|vorbis-medium|vorbis-highNone
    Podcasts in AAC Qualityaudio_quality: aac-medium|aac-highaudio_remux_mode: ffmpegFFmpeg
    audio_quality: aac-medium|aac-highaudio_remux_mode: mp4boxMP4Boxmp4decrypt
    audio_quality: aac-medium|aac-highaudio_remux_mode: mp4decryptmp4decrypt
    Music Videossession_type: librespot|webvideo_format: mp4video_remux_mode: ffmpeg.wvd fileFFmpegmp4decrypt
    session_type: librespot|webvideo_format: mp4video_remux_mode: mp4box.wvd fileMP4Boxmp4decrypt
    session_type: librespot|webvideo_format: webmvideo_remux_mode: ffmpeg.wvd fileFFmpegShaka Packager
    session_type: librespot|webvideo_format: webmvideo_remux_mode: mp4box.wvd fileMP4BoxShaka Packager
    Podcast Videosprefer_video: truevideo_remux_mode: ffmpegFFmpeg
    prefer_video: truevideo_remux_mode: mp4boxMP4Box
    Faster Downloadsaudio_download_mode: aria2caria2c
    audio_download_mode: curlcURL
    Reference
    ToolDownloadNotes
    .wvd fileExtract using KeyDiveRequired for AAC/FLAC quality. L1-certified required for FLAC. Extract from Android device (emulator files may not work)
    Spotify DLLExtract the file Spotify.dll from the Spotify for Windows desktop app version 1.2.88.483 inside its installation directoryRequired for desktop session
    FFmpegWindows / LinuxUsed for audio/video remuxing and conversion
    MP4BoxDownloadAlternative for audio/video remuxing
    mp4decryptDownloadDecrypts MP4 files when used with MP4Box
    Shaka PackagerDownloadDecrypts WebM video files
    aria2cDownloadFaster download alternative
    cURLDownloadDownload alternative

    📦 Installation

    1. Install Votify via pip:

      pip install votify[librespot]
      
    2. Set up the cookies file:

      • Place the cookies file in your working directory as cookies.txt, or
      • Specify its path using --cookies-path or in the config file.

    [!NOTE]

    • The 'librespot' extra is required when session_type is set to librespot. If you want to use the desktop or web session types, the extra is not required and you can install the package with pip install votify instead.

    🚀 Usage

    votify [OPTIONS] URLS...
    

    Supported URL types

    • Song
    • Album
    • Playlist
    • Podcast episode
    • Podcast series
    • Music video
    • Artist

    Examples

    Download a song:

    votify "https://open.spotify.com/track/18gqCQzqYb0zvurQPlRkpo"
    

    Download an album:

    votify "https://open.spotify.com/album/0r8D5N674HbTXlR3zNxeU1"
    

    Download a podcast episode:

    votify "https://open.spotify.com/episode/3kwxWnzGH8T6UY2Nq582zx"
    

    Download a podcast series:

    votify "https://open.spotify.com/show/4rOoJ6Egrf8K2IrywzwOMk"
    

    Download a music video:

    votify "https://open.spotify.com/track/31k4hgHmrbzorLZMvMWuzq"
    

    Download a music video from a song:

    votify "https://open.spotify.com/track/18gqCQzqYb0zvurQPlRkpo" --prefer-video
    

    Download a podcast video:

    votify "https://open.spotify.com/episode/3kwxWnzGH8T6UY2Nq582zx" --prefer-video
    

    Choose which media to download from an artist:

    votify "https://open.spotify.com/artist/0gxyHStUsqpMadRV0Di1Qt"
    

    Auto-select artist albums without a prompt:

    votify "https://open.spotify.com/artist/0gxyHStUsqpMadRV0Di1Qt" --auto-media-option albums
    

    Download liked tracks:

    votify --auto-media-option liked-tracks
    

    Interactive prompt controls

    KeyAction
    Arrow keysMove selection
    SpaceToggle selection
    Ctrl + ASelect all
    EnterConfirm selection

    ⚙️ Configuration

    Votify can be configured using command-line arguments or the config file.

    Config file location:

    • Linux: ~/.votify/config.ini
    • Windows: %USERPROFILE%\.votify\config.ini

    The file is created automatically on first run. Command-line arguments override config file values.

    Configuration options

    Command-line argument / Config file keyDescriptionDefault
    General
    --wait-interval / wait_intervalWait interval between downloads in seconds10
    --read-urls-as-txt, -r / -Read URLs from text filesfalse
    --config-path / -Config file path<home>/.votify/config.ini
    --log-level / log_levelLogging levelINFO
    --log-file / log_fileLog file pathnull
    --no-exceptions / no_exceptionsDon't print exceptionsfalse
    --no-config-file, -n / -Don't use a config filefalse
    --database-path / database_pathPath to the SQLite database file for registering downloaded medianull
    --auto-media-option / auto_media_optionAuto media optionnull
    Spotify
    --session-type / session_typeSession type to uselibrespot
    --cookies-path, -c / cookies_pathCookies file path./cookies.txt
    --wvd-path / wvd_path.wvd file pathnull
    --spotify-dll-path / spotify_dll_pathSpotify DLL file path for desktop session decryptionnull
    --prefer-video / prefer_videoPrefer video streams when availablefalse
    Output
    --output, -o / outputOutput directory path./Spotify
    --temp / tempTemporary directory path.
    --save-cover-file / save_cover_fileSave cover as a separate filefalse
    --save-playlist-file / save_playlist_fileSave a M3U8 playlist file when downloading a playlistfalse
    --overwrite / overwriteOverwrite existing filesfalse
    --cover-size / cover_sizeCover size to useextra-large
    --exclude-tags / exclude_tagsComma-separated tags to excludenull
    --truncate / truncateMaximum length of file/folder namesnull
    Template
    --album-folder-template / album_folder_templateFolder template for album tracks{album_artist}/{album}
    --compilation-folder-template / compilation_folder_templateFolder template for compilation tracksCompilations/{album}
    --podcast-folder-template / podcast_folder_templateFolder template for podcast episodesPodcasts/{album}
    --no-album-folder-template / no_album_folder_templateFolder template for tracks not in an album{artist}/Unknown Album
    --single-disc-file-template / single_disc_file_templateFile template for single-disc album tracks{track:02d} {title}
    --multi-disc-file-template / multi_disc_file_templateFile template for multi-disc album tracks{disc}-{track:02d} {title}
    --podcast-file-template / podcast_file_templateFile template for podcast episodes{track:02d} {title}
    --no-album-file-template / no_album_file_templateFile template for tracks not in an album{title}
    --playlist-file-template / playlist_file_templateFile template for M3U8 playlistsPlaylists/{playlist_artist}/{playlist_title}
    --date-tag-template / date_tag_templateDate tag template%Y-%m-%dT%H:%M:%SZ
    Song / Podcast
    --audio-quality / audio_qualityComma-separated audio quality priorityvorbis-medium
    --audio-download-mode / audio_download_modeAudio download mode to useytdlp
    --audio-remux-mode / audio_remux_modeAudio remux mode to useffmpeg
    --synced-lyrics-only / synced_lyrics_onlyOnly download synced lyrics filefalse
    --no-synced-lyrics-file / no_synced_lyrics_fileDon't create synced lyrics filefalse
    Video
    --video-format / video_formatVideo format to usemp4
    --video-resolution / video_resolutionVideo resolution to use1080p
    --video-remux-mode / video_remux_modeVideo remux mode to useffmpeg
    Executables
    --aria2c-path / aria2c_pathPath to aria2c binaryaria2c
    --curl-path / curl_pathPath to curl binarycurl
    --ffmpeg-path / ffmpeg_pathPath to FFmpeg binaryffmpeg
    --mp4box-path / mp4box_pathPath to MP4Box binarymp4box
    --mp4decrypt-path / mp4decrypt_pathPath to mp4decrypt binarymp4decrypt
    --shaka-packager-path / shaka_packager_pathPath to Shaka Packager binarypackager

    Template variables

    Tags usable in template folder/file options and in the exclude_tags list:

    • album, album_artist
    • artist
    • composer
    • date (supports strftime format: {date:%Y})
    • disc, disc_total
    • isrc
    • label
    • media_id
    • media_type
    • playlist_id, playlist_artist, playlist_title, playlist_track
    • producer, publisher
    • rating
    • title, track, track_total
    • upc

    Tags usable in the exclude_tags list only:

    • compilation, copyright, cover
    • description
    • lyrics
    • url

    Cover sizes

    • small - Up to 64px
    • medium - Up to 300px
    • large - Up to 640px
    • extra-large - Up to 2000px

    Audio qualities

    • vorbis-low - Vorbis 96kbps
    • vorbis-medium - Vorbis 160kbps, songs only
    • vorbis-high - Vorbis 320kbps, songs only, requires an active premium subscription
    • aac-medium - AAC 128kbps, .wvd file required for songs
    • aac-high - AAC 256kbps, songs only, .wvd required, requires an active premium subscription
    • flac-flac - FLAC lossless (native), songs only, Spotify DLL required, requires an active premium subscription
    • flac-flac-24 - FLAC 24-bit (native), songs only, Spotify DLL required, requires an active premium subscription
    • flac-mp4 - FLAC lossless in MP4 container, songs only, L1-certified .wvd file required, requires an active premium subscription
    • flac-mp4-24 - FLAC 24-bit in MP4 container, songs only, L1-certified .wvd file required, requires an active premium subscription

    [!NOTE]

    • L1-certified .wvd file is required for flac-mp4 and flac-mp4-24 qualities.
    • Spotify DLL is required for flac-flac and flac-flac-24 qualities (desktop session only).

    Video formats

    • mp4 - H.264 up to 1080p with AAC 128kbps
    • webm - VP9 up to 1080p with Opus 160kbps
    • ask - Prompt to choose available video and audio codecs

    Session types

    • librespot - Librespot session (for Vorbis quality with web support)
    • desktop - Spotify desktop session (for Vorbis and FLAC quality)
    • web - Spotify web session (for AAC quality and videos)

    Download modes

    • ytdlp - Default download mode
    • aria2c - Faster alternative
    • curl - Alternative using curl

    [!NOTE]

    • yt-dlp is only used as a file download library. Tracks are still fetched directly from Spotify's servers, and yt-dlp is only responsible for handling the file download process.

    Video remux modes

    • ffmpeg
    • mp4box

    Audio remux modes

    • ffmpeg
    • mp4box
    • mp4decrypt

    [!NOTE] Audio remux modes only apply for AAC qualities.

    Video resolutions

    • 144p, 240p, 360p, 480p, 576p, 720p, 1080p

    Auto media options

    • artist-top-tracks - Auto-select artist top tracks
    • artist-albums - Auto-select albums
    • artist-compilations - Auto-select compilations
    • artist-singles - Auto-select singles
    • artist-videos - Auto-select music videos
    • liked-tracks - Auto-select liked tracks (URL not required)

    Log levels

    • DEBUG, INFO, WARNING, ERROR

    📄 License

    MIT License - see the LICENSE file for details.

    🤝 Contributing

    I'm generally not reviewing pull requests that change or add features at this time. Only critical bug fixes will be considered. Feel free to open issues for bugs or feature requests.

    🙏 Credits