文章目录
- Gamdl:用命令行下载 Apple Music 的全部内容
- 为什么需要这个工具
- 支持哪些内容
- 音频编码选择
- 安装和基本用法
- 配置灵活度
- 适合谁用
Gamdl:用命令行下载 Apple Music 的全部内容
gamdl 在 GitHub 上拿到了 2,392 Star。
这是一个 Python 写的命令行工具,专门从 Apple Music 下载歌曲、MV 和 Post 视频。下载质量这块,歌曲支持 AAC 256kbps、Dolby Atmos、ALAC 无损等多种编码,MV 最高能到 4K 分辨率。歌词也能同步下载,LRC、SRT、TTML 三种格式任选。
为什么需要这个工具
Apple Music 的客户端本身不提供下载导出功能,哪怕你是付费订阅用户,音乐也只能在 App 内播放。对于想把音乐文件存到本地、导入其他播放器、或者做音乐库备份的人来说,一直缺少一个靠谱的命令行方案。
gamdl 解决的就是这个问题。给它一个 Apple Music 的链接,它直接从苹果服务器拉取音频或视频文件,自动写入歌曲名、艺术家、专辑、封面等元数据标签,下载完就能用。
支持哪些内容
支持的链接类型覆盖面很广:单曲、专辑、播放列表、MV、艺人页面、Post 视频,甚至 Apple Music Classical 也支持。不管是目录页还是个人资料库里收藏的内容,都能处理。
批量下载也方便,艺人页面链接丢进去,可以选择下载该艺人的全部专辑、精选辑、现场版、单曲 EP、热门歌曲或 MV,不需要一个个手动挑。
音频编码选择
Web 编码直接可用,不需要额外配置:aac-web(AAC 256kbps)、aac-he-web(AAC-HE 64kbps)。
如果想用更高质量的编码,比如 Atmos 768kbps、AC3 640kbps、ALAC 无损,需要配合 Wrapper 服务使用。Wrapper 是同一个作者开发的辅助服务,负责处理账号认证、播放请求和解密。启动 Wrapper 后,gamdl 通过--use-wrapper参数开启即可。
另外还支持双耳渲染(binaural)和降混(downmix)版本,对耳机用户有实际意义。
安装和基本用法
安装就一行命令:
pip install gamdl使用前需要准备 Apple Music 的 Cookies 文件。在浏览器登录 Apple Music 网页版,用插件导出 Netscape 格式的 cookies.txt,放到工作目录下。Firefox 用 Export Cookies 插件,Chrome 用 Get cookies.txt LOCALLY。
下载歌曲:
gamdl "https://music.apple.com/us/album/never-gonna-give-you-up-2022-remaster/1624945511?i=1624945512"下载整张专辑:
gamdl "https://music.apple.com/us/album/whenever-you-need-somebody-2022-remaster/1624945511"下载某个艺人的全部内容:
gamdl "https://music.apple.com/us/artist/rick-astley/669771"交互界面用方向键移动、空格切换选中、Ctrl+A 全选、回车确认,操作逻辑很直观。
配置灵活度
gamdl 的配置项相当多。可以通过命令行参数传入,也可以写配置文件(Linux 在 ~/.gamdl/config.ini,Windows 在 %USERPROFILE%.gamdl\config.ini),首次运行自动生成。
几个实用的配置:
输出路径默认是当前目录下的 Apple Music 文件夹,可以用-o改。文件命名支持模板变量,比如{album_artist}/{album}作为专辑文件夹、{track:02d} {title}作为单曲文件名,专辑日期、碟片编号、播放列表名称都能作为模板字段。
下载模式默认用 yt-dlp,也可以切换到 N_m3u8DL-RE,后者速度更快,但需要额外安装 FFmpeg。
封面图格式支持 JPG、PNG 和原始格式,尺寸默认 1200 像素,都可以调整。
适合谁用
想把 Apple Music 曲库备份到本地的人。订阅到期后下载的文件还在,不依赖任何流媒体服务。
做 DJ 或音乐编辑的人,需要原始音频文件而不是流媒体缓存。
想在非苹果设备上播放 Apple Music 内容的用户,下载后同步到任意播放器即可。
有编程需求的开发者,gamdl 可以作为 Python 库嵌入项目,通过异步接口批量处理下载任务。
e Music 内容的用户,下载后同步到任意播放器即可。
有编程需求的开发者,gamdl 可以作为 Python 库嵌入项目,通过异步接口批量处理下载任务。