Gamdl 完整指南:命令行轻松下载 Apple Music 无损歌曲与 4K 音乐视频
【免费下载链接】gamdlA command-line app for downloading Apple Music songs, music videos and post videos.项目地址: https://gitcode.com/GitHub_Trending/ga/gamdl
月初会员到期那天,我发现自己常听的播放列表在 App 里再也点不开了。会员期间"下载"的几百首歌,其实只是加密缓存,订阅一停,全部变灰。Gamdl(Glomatico's Apple Music Downloader)就是为解决这个问题而生的开源命令行工具:它能把你在 Apple Music 订阅内可听的歌曲、音乐视频和上传视频,以真实的音频/视频文件形式保存到本地,供你永久使用。
三十秒判断它适不适合你
Gamdl 是纯命令行工具,用 Python 编写,通过官方 API 直接与 Apple Music 交互。它的核心价值可以浓缩为下面几条:
- 格式真实无损:支持 AAC 256kbps、AAC-HE,甚至 ALAC 无损(最高 24-bit/192kHz)和 Dolby Atmos 空间音频。
- 视频可达 4K:音乐视频支持 H.264 最高 1080p,H.265 最高 2160p(4K)。
- 元数据齐全:自动嵌入专辑封面、歌词、艺术家、曲目号等标签,歌词还能导出 LRC、SRT、TTML 三种同步字幕格式。
- 批量能力强:单曲、专辑、播放列表、艺术家全集都能一键处理,还内置 SQLite 数据库避免重复下载。
- 高度可定制:目录模板、文件命名、标签取舍、下载引擎(yt-dlp 或 N_m3u8DL-RE)全部可配。
如果你符合"有 Apple Music 订阅 + 想要真正拥有音乐文件 + 不介意敲几行命令"这几个条件,这个项目大概率适合你。
为什么值得用它:三个绕不开的痛点
痛点一:App 里的"下载"从来不属于你
Apple Music 的离线下载本质是授权缓存,加密且绑定账号。会员到期、设备换绑或区域变更,内容就可能消失。Gamdl 把这些缓存变成普通文件——一首 m4a 或 m4v,拷到 NAS、塞进车载 U 盘、导入其他播放器都行,不再受订阅状态绑架。
痛点二:录屏、录音方案质量损失严重
有人用录屏软件抓 MV,或用系统录音抓歌,得到的文件要么音画不同步,要么码率被二次压缩,封面、歌词更是无从谈起。Gamdl 走的是流媒体原始数据链路:媒体直接来自 Apple Music 服务器(yt-dlp 在这里只负责下载文件本身,不参与内容获取),拿到的是接近原始码率的数据,再经过解密与封装,质量有保障。
痛点三:同类工具大多只解决一半问题
市面上的下载工具往往只支持 AAC 提取,视频分辨率也卡在 1080p,更别提同步歌词和完整标签。Gamdl 把"歌曲、MV、上传视频"三种媒体类型统一在一个命令里,还提供 Wrapper v2 服务器接入方案来解锁 ALAC 无损。你不用在多个工具之间来回切换。
能力全景:一张表看懂 Gamdl
| 媒体类型 | 支持的格式/编码 | 最高质量档位 | 特色能力 |
|---|---|---|---|
| 歌曲(Web 端) | AAC、AAC-HE | 256kbps / 44.1kHz | 免 Wrapper,开箱即用 |
| 歌曲(非 Web 端) | AAC、AAC-HE、AC3、Atmos、ALAC | 24-bit/192kHz | ALAC 需 Wrapper 配合 |
| 音乐视频 | H.264、H.265 | 2160p(4K) | 音视频流分离下载再合并 |
| 上传视频(Post) | 原画质流 | 1080p + AAC 256kbps | 交互式选择质量 |
| 歌词 | LRC / SRT / TTML | — | SRT 时间轴更精准 |
| 封面 | jpg / png / raw | 自定义像素尺寸 | 可嵌入或单独保存 |
| 组织方式 | 目录/文件模板 | — | 支持 strftime 日期格式 |
手把手实操:从零下载第一首歌
第一步:准备环境
你需要三样东西:Python 3.10 及以上版本、有效的 Apple Music 订阅、一份 Netscape 格式的 cookies 文件。cookies 的获取方法是:在浏览器中登录 music.apple.com,再用浏览器扩展(如 Firefox 的 Export Cookies、Chromium 的 Get cookies.txt LOCALLY)导出成 cookies.txt。
第二步:安装 Gamdl
安装很简单,一行命令:
pip install gamdl装好后把 cookies.txt 放到工作目录,或用参数显式指定路径:
gamdl -c /path/to/cookies.txt --help第三步:下载第一首歌曲
把你看到的 Apple Music 歌曲链接直接丢给命令:
gamdl "https://music.apple.com/us/album/never-gonna-give-you-up-2022-remaster/1624945511?i=1624945512"默认输出到当前目录下的Apple Music文件夹,文件按"专辑艺人/专辑名"自动归类。首次运行还会自动生成配置文件(Linux 下是~/.gamdl/config.ini),之后你可以在里面集中管理所有偏好。
第四步:批量下载专辑与艺术家全集
把 URL 从单曲换成专辑或艺人页,逻辑完全一样:
gamdl "https://music.apple.com/us/album/whenever-you-need-somebody-2022-remaster/1624945511" gamdl "https://music.apple.com/us/artist/rick-astley/669771"下载艺术家链接时,Gamdl 会弹出一个交互式选择界面,用方向键移动、空格切换、Ctrl+A 全选、回车确认,你可以精确勾选要拿的专辑或 MV。
进阶玩法:把 Gamdl 用到极致
场景一:解锁 ALAC 无损与空间音频
想拿无损,把编解码器优先级改成 ALAC 在前:
gamdl URL --song-codec-priority "alac,aac-web"但请注意:ALAC 通常需要配合 Wrapper v2 服务器使用(--use-wrapper开启),否则大概率因 API 限制失败。不追求无损的话,Atmos 空间音频同样值得一试:
gamdl URL --song-codec-priority "atmos,alac,aac-web"场景二:批量任务 + 数据库去重
把一堆链接写进文本文件,一次跑完,再用 SQLite 数据库记录下载历史,重复链接自动跳过:
echo "https://music.apple.com/us/album/some-album/123456789" > urls.txt gamdl --read-urls-as-txt urls.txt --database-path ./downloads.db这是维护个人音乐库最省心的姿势:以后新歌加进 urls.txt 重跑一遍即可,已下载的不会重复占空间。
场景三:自定义目录结构与标签
默认的{album_artist}/{album}结构不够用?你可以完全重写模板,比如按年份归档:
gamdl URL --album-folder-template "{album_artist}/{date:%Y}/{album}" \ --single-disc-file-template "{track:02d} - {title}"不想要的标签可以用--exclude-tags剔除,封面可以单独导出一份 PNG(--save-cover --cover-format png --cover-size 2000),甚至可以用--save-playlist生成 M3U8 播放列表文件。
架构速览:三层设计与原生解密引擎
Gamdl 的源码组织清晰,适合想研究流媒体下载原理的开发者:
- API 层(
gamdl/api/):封装与 Apple Music 服务器的通信,负责账号认证与数据获取。 - 接口层(
gamdl/interface/):解析媒体信息、选择编解码器、处理 DRM 密钥获取。 - 下载器层(
gamdl/downloader/):负责流文件下载、解密、转码、标签嵌入与文件整理。
值得一提的亮点是gamdl/downloader/ammuxer:这是一个用 Rust 编写的原生扩展,负责解密、MP4/M4A 写入和音视频合并,用 maturin 构建为 Python 模块。Python 侧只做编排与元数据处理,重活交给 Rust,兼顾了开发效率与运行性能。想读源码的话,可以这样克隆仓库:
git clone https://gitcode.com/GitHub_Trending/ga/gamdl新手常见问题 FAQ
Q1:提示 cookie 无效或"找不到订阅",怎么办?检查两件事:一是 cookies.txt 必须是 Netscape 格式且来自已登录 music.apple.com 的浏览器;二是文件路径是否写对,可用-c显式指定。重新导出后基本能解决。
Q2:选了 ALAC 却下载失败?ALAC 受 API 限制,需要 Wrapper v2 服务器支持。先启动 wrapper-v2,再在命令里加--use-wrapper,并按提示登录、处理二步验证。
Q3:MV 最多只有 1080p,没有 4K 选项?4K(2160p)和 1440p 只有 H.265 编码才有。把视频编码优先级设为--music-video-codec-priority h265,分辨率上限提高到--music-video-resolution 2160p。
Q4:命令行参数和配置文件冲突时听谁的?命令行参数优先级更高。如果你想临时忽略配置文件,可以用-n/--no-config-file参数。
Q5:想换更快的下载引擎?默认 yt-dlp 已够用;追求速度可改用 N_m3u8DL-RE:--download-mode nm3u8dlre,可执行文件不在 PATH 里时再用--nm3u8dlre-path指定位置。
写在最后
Gamdl 适合三类人:想建立本地无损音乐库的发烧友、需要 4K MV 素材的内容创作者,以及想研究流媒体与 DRM 技术原理的开发者。它的学习成本不高——装好、导 cookies、粘链接,三步就能跑通第一条下载任务。官方仓库和文档都在项目主页(pip install gamdl安装后可用gamdl --help查看全部选项),遇到问题可以打开 issue 交流。记住一条使用边界:仅限你自己的订阅内容、仅供个人使用,别拿去分发牟利。动手试一次,你大概率会爱上"文件在本地"的踏实感。
【免费下载链接】gamdlA command-line app for downloading Apple Music songs, music videos and post videos.项目地址: https://gitcode.com/GitHub_Trending/ga/gamdl
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考