news 2026/10/21 1:11:20

Gamdl 完整指南:3 步搞定 Apple Music 无损下载

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Gamdl 完整指南:3 步搞定 Apple Music 无损下载

Gamdl 完整指南:3 步搞定 Apple Music 无损下载

【免费下载链接】gamdlA command-line app for downloading Apple Music songs, music videos and post videos.项目地址: https://gitcode.com/GitHub_Trending/ga/gamdl

Gamdl(Glomatico's Apple Music Downloader)是一个命令行工具,专门从 Apple Music 下载歌曲、MV 和用户视频;配合 Wrapper 使用,还能拿到官方网页端给不了的 ALAC 无损音源。如果你正在为「订阅了会员却没法把歌存下来」发愁,这篇指南值得存一下。

先看痛点:为什么官方客户端不够用

日常使用 Apple Music,很多人会撞到三堵墙:

  • 只能在线听。离线播放受设备与授权限制,想备份成自己的文件库基本没戏;
  • 网页端音质是阉割版。浏览器里能拿到的多为 44.1kHz 的有损流,想要 24-bit/192kHz 的 ALAC,普通 API 根本不下发;
  • 文件不可控。官方客户端不让你导出,想打标签、重命名、归档到自己的音乐库,无从下手。

Gamdl 的思路很直接:把「拿元数据、拉流媒体、解 DRM、写文件、打标签」整条链路在本地跑通,产物就是你硬盘上一个个带完整标签的音频文件。

原理速览:它是怎么做到的

整个工程分四层,职责清晰:

模块职责
gamdl/api/与 Apple 服务器通信,含 wrapper.py 对 Wrapper 服务的调用
gamdl/interface/定义数据模型与枚举,enums.py 里注册了全部可用编解码器
gamdl/downloader/下载、解密与封装的具体实现
gamdl/cli/命令入口、交互式选择与配置管理

几个关键机制值得展开:

双通道身份验证。要么用浏览器插件把 Apple Music 的登录 Cookie 导出成 Netscape 格式的cookies.txt;要么接入 Wrapper v2 本地服务,用它代你登录、持有会话、发起播放请求——后者还能免 Cookie。

ALAC 无损源。编解码器枚举中,alac对应最高 24-bit/192kHz 的无损编码。注意:非网页流(alac、atmos、aac等)都带 CENC 加密,而官方文档明确写着,不挂 Wrapper 硬试alac「大概率失败」。

原生 Rust 引擎。gamdl 会把 gamdl/downloader/ammuxer/ 下的 Rust 代码编译成gamdl._ammuxer扩展,FairPlay 解密、分片重组、MP4/M4A 写入合流全在原生层完成,Python 只负责上层调度。一个细节:ALAC 的采样块大小是 4096,AAC 是 1024,Rust 源码里能看到这个分支判断。

4K MV 的门槛。想下 2160p 的 MV,必须提供 Widevine L1 的.wvd设备文件或 PlayReady SL3000 的.prd文件,没有设备文件就没有 4K。

3 步跑通:从安装到第一首歌

第 1 步:安装(需 Python 3.10+)

pip install gamdl

第 2 步:准备身份。登录 Apple Music 网页后,用浏览器插件(Firefox 的 Export Cookies、Chromium 的 Get cookies.txt LOCALLY)导出 Netscape 格式 Cookie,存为cookies.txt。

第 3 步:下载

gamdl -c ./cookies.txt "https://music.apple.com/cn/album/…(你的专辑链接)"

跑完后,./Apple Music目录下就是带封面、ID3 标签和 lrc 歌词的文件。它支持歌曲、专辑、歌单、艺人、MV、Apple Music Classical 等多种链接,艺人链接会进入交互式选择界面(方向键移动、空格勾选、Ctrl+A 全选)。

Wrapper 接入:无损下载的关键一步 🔑

想稳定下 ALAC,就需要本机跑一个 [Wrapper v2] 服务(作者的另一项目,负责登录、播放与解密)。启动后,给 gamdl 加上这几个参数:

gamdl --use-wrapper \ --wrapper-url http://127.0.0.1:8080 \ --wrapper-decrypt-port 10020 \ --song-codec-priority alac,aac \ "https://music.apple.com/cn/album/…"

它内部走两条通道:HTTP JSON 通道处理账号与播放请求,WV2D 批量 TCP 通道(默认 10020 端口)负责解密。这些参数确认无误后,建议直接写进配置文件一劳永逸:

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

首次运行会自动生成,命令行参数优先级高于配置文件。开了 Wrapper 之后 Cookie 可以整个跳过;若 Wrapper 未登录,它会提示你输入账号密码,支持 2FA。

进阶玩法:模板化目录与批量下载

自定义目录与文件名。默认专辑目录是{album_artist}/{album},单碟文件名是{track:02d} {title},想改成按年份归档:

gamdl --album-folder-template "{album_artist}/{album}/{date:%Y}" \ --single-disc-file-template "{disc}-{track:02d} {title}" \ "https://music.apple.com/cn/album/…"

模板变量还有artist、composer、genre、playlist_title等一整套,date支持 strftime 语法。

艺人整批抓取。不想逐张勾选手选,给艺人链接加一个自动选择参数即可:

gamdl --artist-auto-select all-albums "https://music.apple.com/cn/artist/…"

可选值包括top-songs(热门)、music-videos、singles-eps、live-albums等。

提速与附加项。大文件下载可切换--download-mode nm3u8dlre走 N_m3u8DL-RE 引擎(需另装该工具并配好--ffmpeg-path;默认的 yt-dlp 只是下载引擎,并非媒体来源);--save-playlist能额外导出 M3U8 歌单文件;--language ja-JP切换元数据语言。

避坑清单 ⚠️

  • alac报解密/播放错误:九成是没挂 Wrapper,或 Wrapper 版本与 gamdl 不匹配——gamdl 会严格校验 Wrapper 的 API 版本,版本不符直接抛错,先升级 Wrapper 再谈别的。
  • 下载的不是无损:检查--song-codec-priority是否把alac放在第一位;aac-web是 44.1kHz 的网页流,48kHz 及以上要选非-web的编码器。
  • 歌词打不开:ttml是 Apple 原生格式,多数播放器不认,建议lrc或srt(时序更准)。
  • 4K MV 解码失败:缺.wvd/.prd设备文件,按上文 DRM 要求补齐。
  • 合规提醒:工具只是把账号内合法可听的内容另存一份,请仅用于个人用途,尊重版权。
  • 想提功能 PR?作者只接收关键 bug 修复,功能类 PR 暂不合并,有需求提 Issue 即可。

写在最后

一句话总结:Gamdl 把「登录、拉流、解 DRM、封装、打标签」全链路搬到了你的命令行,再叠上 Wrapper,ALAC 无损不再是网页端的奢侈品。适合人群很明确——订阅了 Apple Music、想要本地无损文件库的音频发烧友,以及需要批量管理音源的开发者(它同样是一个可直接 import 的 Python 库)。

【免费下载链接】gamdlA command-line app for downloading Apple Music songs, music videos and post videos.项目地址: https://gitcode.com/GitHub_Trending/ga/gamdl

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/21 1:09:55

C++量子态矢量模拟器拆解:核心原理、门操作与测量避坑

简介:基于C的量子计算编程源码包,面向具备一定C基础、希望进入量子计算领域的开发者和科研学习者。包内共720个文件,压缩包大小约12.94MB,文件构成以cpp源文件、h头文件、obj目标文件、exe可执行程序为主,同时包含dsp/…

作者头像 李华
网站建设 2026/10/21 1:09:09

800G/1.6T光模块Flip Chip封装技术全解析:从凸点到可靠性

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/21 1:08:49

AI眼镜第一股背后:芯片高管、光波导与端侧算力的产业博弈

我第一次听到“AI眼镜第一股”这个说法时,脑子里冒出来的第一个疑问不是“能不能成”,而是“凭什么是他”。当时的情况也确实有点戏剧性:一位在大厂体系里打拼多年的前高管,前脚刚从某国际芯片巨头离职,后脚就对外放风…

作者头像 李华
网站建设 2026/10/21 1:08:39

RoboMaster硬件实操防错指南:从上电安全到运动闭环

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/21 1:08:16

AI芯片选型避坑指南:从57种到120多种的调研方法论

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/21 1:08:16

M12航插线标准与认证全指南:IEC、UL、CE要求及真伪查询方法

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华