搜索和下载音乐专辑封面
sacad的Python项目详细描述
SACAD
智能自动封面下载程序
SACAD是一个多平台的命令行工具,无需手动干预即可下载唱片封面,非常适合与脚本、音频播放器等集成。
自1.6版以来,sacad还提供了一个新的命令行工具sacad_r
,用于扫描音乐库、从音频标记读取元数据和自动下载丢失的封面,还可以选择将图像嵌入音频文件(自1.9版起)。
自2.0版以来,sacad被重写为使用asyncio框架,这通常会使sacad
的处理速度提高约40%,并使处理速度提高600-700%(是的,提高了6-7倍!)对于sacad_r
。
功能
- 可以针对特定的图像大小,查找高分辨率封面的结果
- 支持JPEG和PNG格式
- 目前支持以下封面来源:
- last.fm
- 谷歌图片
coverlib(站点关闭)- 亚马逊CD(.com、.ca、.cn、.fr、.de、.co.jp和.co.uk变体)
- 亚马逊数字音乐
- 智能排序算法为一个给定的查询选择最佳覆盖,使用几个因素:源可靠性、图像格式、图像大小、图像与参考覆盖的相似性等
- 使用optipng或jpegoptim自动压缩图像(可以节省30%的文件大小而不损失任何质量,非常适合便携式播放器)
- 在本地缓存搜索结果,以便将来更快地进行搜索
- 尽一切努力避免被源阻止:隐藏用户代理并自动处理速率限制
- 如果需要,自动转换/调整图像大小
- 多平台(Windows/Mac/Linux)
sacad的设计是健壮的,可以成批执行数千个查询:
- HTML解析不使用正则表达式,但使用了LXML库,它速度更快,对页面更改更健壮
- 当源报告的图像大小不可靠时(即google images),自动下载文件的第一个kb以从文件头获取其实际大小
- 同时处理多个查询(使用asyncio),以加快处理速度
- 自动重用TCP连接(HTTP保持活动状态),以获得更好的性能
- 自动重试失败的http请求
- 音乐库扫描支持所有常见的音频格式(MP3、AAC、Vorbis、FLAC…)
- 由于测试覆盖率很高,覆盖源页面或API更改会很快被检测到,SACAD也会相应地快速更新
安装
SACAD要求Python>;=3.5
独立Windows可执行文件
windows用户可以下载不需要python的standalone binary。
Arch Linux
arch linux用户可以安装sacadaur包。
来自PYPI(带PIP)
- 如果还没有,请使用python 3的install pip
- 安装sacad:
pip3 install sacad
来源
- 如果还没有,那么对于Python 3,install setuptools
- 克隆此存储库:
git clone https://github.com/desbma/sacad
- 安装sacad:
python3 setup.py install
可选
另外,如果您想从图像处理中受益(无损重新压缩以节省额外空间):
在ubuntu和其他debian衍生物上,您可以使用sudo apt-get install optipng jpegoptim
安装两者。
请注意,根据CPU的速度,处理可能会显著减慢处理速度,因为它非常占用CPU(特别是对于PNG文件)。
命令行用法
提供了两个工具:sacad
用于搜索和下载一个封面,以及sacad_r
用于扫描音乐库并下载所有丢失的封面。
运行sacad -h
/sacad_r -h
获得完整的命令行引用。
示例
下载木偶大师的封面s从metallica到文件AlbumArt.jpg
,目标是~600x600像素分辨率:sacad "metallica" "master of puppets" 600 AlbumArt.jpg
。
使用与前面示例相同的参数下载库的封面:sacad_r library_directory 600 AlbumArt.jpg
限制
- 仅支持前盖
添加覆盖源
如果您是python开发人员,添加一个新的封面源代码非常容易,您需要继承CoverSource
类并实现以下方法:
getSearchUrl(self, album, artist)
parseResults(self, api_data)
updateHttpHeaders(self, headers)
(可选)
有关详细信息,请参见代码中的注释。
许可证
Mozilla Public License Version 2.0