Savify 是一个 Python 库,它从选定的提供商(默认为 YouTube)下载歌曲,然后从 Spotify 中抓取元信息。根据查询,Savify 将查找歌曲并将其下载为 mp3 格式,质量高达320 kb/s !该应用程序还将抓取id3v2 标签并将其写入您的所有歌曲。标签包括标题、艺术家、年份、专辑甚至封面艺术!
Savify 支持所有 Spotify 曲目、专辑和播放列表链接。此外,还有一个集成的搜索功能,因此即使您没有 Spotify 链接,您也可以简单地输入歌曲名称,Savify 就会下载它!
除了 mp3 之外,Savify 还可以下载并转换为其他文件类型。在应用程序内,您可以指定下载歌曲的格式和质量,以便在所有设备上实现最大兼容性。可用格式:mp3、aac、flac、m4a、opus、vorbis 和 wav。标签和封面艺术仅适用于以 mp3 格式下载的歌曲。
请注意,该库不会以任何方式违背 Spotify TOS,歌曲不是直接从 Spotify 中翻录的,而是使用 youtube-dl python 库从 YouTube 和 Soundcloud 等其他来源下载。 Spotify 仅用于收集要嵌入到下载的歌曲文件中的准确元信息。
访问我们的官方 Docker Hub 镜像存储库并获取最新的 Docker 镜像:https://hub.docker.com/repository/docker/lauurencerawlings/savify
任何问题或反馈请加入Discord 服务器
Savify 依赖开源 FFmpeg 库来转换元数据并将其写入其下载的歌曲。请确保 FFmpeg 已安装在您的计算机上并添加到系统路径中。请按照此处的教程进行操作。
如果您想使用 Savify 下载个人 Spotify 播放列表,请确保其可见性设置为“公开”。这样 Savify 就可以使用 Spotify API 从您的播放列表中检索歌曲详细信息。
如果您使用的是 Windows,您可以下载最新的预打包可执行包(我建议您这样做,因为您不必提供 Savify API 密钥),或者您可以下载 python 库并直接使用 CLI 运行该模块。
转到此处下载最新的 Savify.exe,然后确保您拥有:
下载 FFmpeg 并将其添加到您的路径中
Spotify API 凭据已添加到您的环境变量中
就是这样,你应该可以走了!请参阅下面的一些用法示例。
$ pip install -U savify
克隆存储库并确保您位于根目录中。执行以下构建命令:
$ docker build -t savify:dev .
目前 Savify 仅支持 Spotify URL 和搜索查询,但将来将添加对 Spotify URI 的支持。
如果您已从发布页面下载了最新的 Savify.exe,请打开终端并导航到与二进制文件相同的目录,然后您可以运行:
$ Savify.exe
如果您使用的是 Python 包,并且 savify 安装到您的站点包中,并且您的 pip 文件夹位于您的 PATH 中(默认情况下应该如此),那么您可以从任何地方简单地运行:
$ savify
如需帮助,请运行:
$ savify --help
使用上面的默认值:
$ savify "https://open.spotify.com/track/4Dju9g4NCz0LDxwcjonSvI"
指定您自己的选项:
$ savify "https://open.spotify.com/track/4Dju9g4NCz0LDxwcjonSvI" -q best -f mp3 -o "/path/to/downloads" -g "%artist%/%album%"
通过搜索查询:
$ savify "You & I - Bru-C" -t track -q best -f mp3 -o "/path/to/downloads" -g "%artist%/%album%"
可用变量: %artist%, %album%, %playlist%
例如:
$ savify "You & I - Bru-C" -o /path/to/downloads -g "%artist%/%album%"
将下载到以下目录结构:
/路径/到/下载| |- /Bru-C | |- /原声| |- Bru-C - 你和我.mp3
查询类型: | 追踪 |
---|---|
质量: | 最好的 |
格式: | mp3 |
小路: | Windows:HOME/AppData/Roaming/Savify/downloads Linux:HOME/.local/share/Savify/downloads MacOS:主页/库/应用程序支持/Savify/下载 |
分组: | 没有分组 |
有关更多使用示例,请阅读文档。
在容器内运行 savify,该容器也可以附加到其他容器的网络。如果您想要运行多个 savify 实例和/或想要使用 VPN 进行下载,这会很方便。您可以使用自建的 Docker 镜像,也可以使用官方的 Docker 镜像。确保使用正确的 Docker 映像名称和标签。
$ docker run laurencerawlings/savify:latest
如果未指定参数,容器将打印帮助页面。只需附加您的参数,确保从主机挂载一个文件夹,以便下载是持久的( -v
) - pwd
用于挂载您所在的当前目录 - 并在完成后删除容器( --rm
)。您必须使用环境变量 ( -e
) 指定您的 Spotify 客户端 ID 和密钥:
$ docker run --rm -v "`pwd`:/root/.local/share/Savify/downloads" -e SPOTIPY_CLIENT_ID=client_id -e SPOTIPY_CLIENT_SECRET=client_secret laurentrawlings/savify:最新的“https://open.spotify.com/playlist/...”
如果要保留日志,只需将以下参数添加到 docker run 命令即可挂载日志记录目录: -v "./logs:/root/.local/share/Savify/logs"
使用 shell 脚本实现自动化:
$ nano savify.sh
#!/bin/bashdocker run --rm -v "`pwd`:/root/.local/share/Savify/downloads" -e SPOTIPY_CLIENT_ID=client_id -e SPOTIPY_CLIENT_SECRET=client_secret Laurencerawlings/savify:最新 1 美元
然后运行:
$ sh savify.sh "https://open.spotify.com/track/4Dju9g4NCz0LDxwcjonSvI"
您还可以选择使用我们的 docker 脚本快速启动,该脚本具有集成的 VPN 检查功能,以查看脚本是否可以连接到任何 VPN 容器。该脚本非常适合使用 cron 进行调度:
$ wget https://github.com/laurencerawlings/savify/latest/download/savify-docker-scripts.zip $ 解压 savify-docker-scripts.zip && rm savify-docker-scripts.zip $ cd savify-docker-scripts/
然后,您必须使用您喜欢的文本编辑器(我们更喜欢 nano)编辑配置文件,保存它(Ctrl + X,Y 用于保存 nano 中的更改)并将其重命名为config.sh
。
$ 纳米模板.config.sh $ mv template.config.sh 配置.sh
然后您可以运行该脚本:
$ bash批量下载.sh
要使用 Savify Python 模块,您需要自己的 Spotify 开发应用程序来访问他们的 API。要执行此操作,请在此处注册。当您提出新的申请时,请记下您的客户 ID 和密码。您可以通过两种方式将 id 和 Secret 传递给 Savify:
现在您需要向系统添加 2 个环境变量:
SPOTIPY_CLIENT_ID
SPOTIPY_CLIENT_SECRET
要了解如何执行此操作,请查找适合您的特定操作系统的在线教程。完成此操作后,请确保重新启动 shell。
创建 Savify 对象时,您可以使用元组传入您的 id 和密钥:
s = Savify(api_credentials=("CLIENT_ID","CLIENT_SECRET"))
将软件包安装到您的环境中:
$ pip install savify
导入并使用 Savify:
from savify import Savifyfrom savify.types import Type, Format, Qualitys = Savify()# Spotify URLs.download("SPOTIFY URL")# 搜索查询# 类型:TRACK、ALBUM、PLAYLISTs.download("QUERY", query_type=Type.追踪)
保存可选的构造函数参数(请参阅上面的默认值):
导入日志记录 从 savify 导入 Savify from savify.types import 类型、格式、质量 从 savify.utils 导入 PathHolder # 质量选项:最差、Q32K、Q96K、Q128K、Q192K、Q256K、Q320K、最佳 # 格式选项:MP3、AAC、FLAC、M4A、OPUS、VORBIS、WAV Savify(api_credentials=None,quality=Quality.BEST,download_format=Format.MP3,path_holder=PathHolder(downloads_path='path/for/downloads'),group='%artist%/%album%',quiet=False,skip_cover_art =False,log_level=logging.INFO)
手动自定义 youtube-dl 选项:
from savify import Savifyoptions = {'cookiefile': 'cookies.txt'}Savify(ydl_options=options)
传入你自己的记录器:
from savify import Savifyfrom savify.logger import Loggerlogger = Logger(log_location='path/for/logs', log_level=None) # 静默输出Savify(logger=logger)
group 参数用于对输出路径中下载的歌曲进行排序。路径字符串的可能变量有:%artist%、%album% 和 %playlist%。变量被歌曲元数据替换。例如,使用上述 Savify 对象下载的歌曲将保存到如下路径:path/for/downloads/Example Artist/Example Album/Example Song.mp3
如果您想尝试添加到 Savify,请使用此处的说明。从那里您可以添加任何您认为可以使 Savify 变得更好的添加内容。
如果您正在开发 Savify,请在本地安装 pip 软件包,以便您可以进行并测试您的更改。从根目录运行:
$ pip install -e .
然后您可以运行 Python 模块:
$ savify
该包是使用 Cookiecutter 和 audreyr/cookiecutter-pypackage 项目模板创建的。