Gamdl:3 条命令把 Apple Music 无损音频与 4K 音乐视频拉到本地

Gamdl:3 条命令把 Apple Music 无损音频与 4K 音乐视频拉到本地

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

Gamdl 是一个 Apple Music 命令行下载工具:订阅期内通过官方 API 接口拿到 ALAC 无损音频、4K H.265 音乐视频等原始编码文件,写入元数据与同步歌词,下载后直接本地播放。

快速认识:不录制、不抓流,从官方接口取原始文件

Gamdl 不做录音、不拦截播放流,文件全部来自官方接口。通信逻辑在 gamdl/api/ 层,用你的 Cookie 调用 Apple Music 的官方接口获取元数据和流媒体信息。

gamdl/interface/ 层负责解析媒体信息并向播放服务申请解密密钥。gamdl/downloader/ 层负责下载、解密与封装,其中解密和 remux 由内置的 Rust 扩展_ammuxer执行,Python 侧处理命令行、下载调度和标签写入。

核心能力一览:

  • 歌曲:默认aac-web(AAC 256kbps、44.1kHz),ALAC 最高 24-bit/192kHz,支持 Dolby Atmos 768kbps
  • 音乐视频:H.264 最高 1080p,H.265 可达 2160p(4K)
  • 上传视频(艺术家发布的 Post 视频):最高 1080p
  • 同步歌词:lrc/srt/ttml三种格式,默认lrc
  • 元数据:封面、艺术家、专辑、日期等自动写入 MP4 标签

⚡ 三步跑通

第一步:安装

要求 Python 3.10 及以上,一条命令完成:

pip install gamdl

成功时没有输出,接着运行gamdl --version应看到版本号 3.9。安装失败就看 pip 的报错输出,多为 Python 版本不满足或网络问题。

第二步:准备鉴权 Cookie

Gamdl 以你的账号身份发起请求,需要一个 Netscape 格式的 Cookie 文件(浏览器导出 Cookie 的标准格式)。在浏览器登录 music.apple.com,用"导出 Cookie"类扩展导出为cookies.txt放在工作目录;文件放在别处时用-c /path/to/cookies.txt指定。

首次运行会在~/.gamdl/config.ini自动生成完整配置文件,之后默认值都可以直接改文件,不用再敲参数。如果账号没有有效订阅,程序会直接提示No active Apple Music subscription found并停止。

第三步:下载第一首歌

复制任意一首歌的链接(URL 末尾的?i=参数用来定位具体曲目),下面这条是官方示例:

gamdl "https://music.apple.com/us/album/never-gonna-give-you-up-2022-remaster/1624945511?i=1624945512"

启动时日志显示Starting Gamdl 3.9,完成后显示Finished with 0 error(s),文件落在当前目录的Apple Music/下,按"艺术家/专辑"子目录归档。想排查异常时,加上--log-level DEBUG --log-file ./gamdl.log再跑一次,细节都在 gamdl.log 里。

🧰 按任务做

下载整张专辑,或整个艺术家的作品

专辑直接传专辑 URL 即可:

gamdl "https://music.apple.com/us/album/whenever-you-need-somebody-2022-remaster/1624945511"

艺术家页面会弹出交互选择框:方向键移动、空格切换、Ctrl+A 全选、回车确认。不想手动挑就用--artist-auto-select直接指定,可选项包括main-albums(正式专辑)、compilation-albums(合辑)、live-albums(现场)、singles-eps(单曲与迷你专辑)、all-albums、top-songs、music-videos。

切换音质与视频分辨率

歌曲默认aac-web、音乐视频默认 1080p。想要无损,把alac放在优先级首位:

gamdl URL --song-codec-priority "alac,aac-web"

注意alac受 API 限制,需要本地运行 Wrapper v2 服务才能正常工作,在配置文件开启use_wrapper = true(wrapper 地址默认http://127.0.0.1,解密端口 10020);不想部署就保持默认的aac-web。

音乐视频里,1440p 和 2160p 只有 H.265 提供:

gamdl URL --music-video-resolution 2160p --music-video-codec-priority h265

4K 还要求 Widevine L1 的.wvd或 PlayReady SL3000 的.prd设备文件,用--wvd-path或--prd-path指定。

批量 URL 下载与去重

把 URL 一行一条写进文本文件,用-r全部读入:

gamdl -r urls.txt --database-path ./history.db

每个媒体的 ID 会登记进 history.db 这个 SQLite 文件,重复跑同一批任务时,已登记且文件仍在的条目会打印Registered in database并跳过,不产生冗余文件。确需覆盖旧文件时加--overwrite。

自定义目录结构与标签

模板变量可以完全控制目录和文件名,比如按年份归档:

gamdl URL --album-folder-template "{album_artist}/{date:%Y}/{album}" --single-disc-file-template "{track:02d} {title}"

{date}这类变量支持 strftime 格式(%Y是四位年份)。不想写入某些标签就在--exclude-tags列出,如comment、genre_id、storefront。封面想单独存成图片,加--save-cover,格式用--cover-format png改(默认 jpg),尺寸用--cover-size控制(默认 1200)。

🚑 排障速查

鉴权报错、提示 Cookie 无效→ Cookie 过期或导出时登录的不是目标账号 → 重新登录网页版并重新导出 cookies.txt,其他环节不用动。

选了 alac 却下载失败→ Wrapper 服务未启动或未启用 → 本地跑起 Wrapper v2 并在配置确认use_wrapper = true;临时不想部署就退回默认aac-web。

设了 2160p 拿到的还是 1080p→ 2160p 只有 H.265 提供,编码器优先级或 DRM 设备档位不达标时会回退 →--music-video-codec-priority把h265放首位,设备文件要求见上一节。

下载速度不理想→ 默认引擎 yt-dlp 只负责文件搬运,瓶颈时可换引擎 →--download-mode nm3u8dlre,并用--nm3u8dlre-path指向 N_m3u8DL-RE 可执行文件(还需要 FFmpeg,不在 PATH 里就用--ffmpeg-path指定)。

报错原因看不出来→ 默认日志级别 INFO 粒度不够 → 加--log-level DEBUG --log-file ./gamdl.log重跑,日志里逐条曲目打印Track x/y进度和跳过原因。

适用边界

这套工具适合两类人:有有效 Apple Music 订阅、想建本地曲库的用户;以及想把它当 Python 库嵌进自己系统的开发者——api / interface / downloader 三层各自独立可调,完整嵌入示例见 README.md。

明确的红线是订阅本身:没有订阅时程序会直接停在订阅检查上;它也只做 Apple Music 的内容,跨平台下载不在范围内。

与同类方案的差异在于取数方式:不少工具是录本地播放流再转码,产物是二次编码文件;Gamdl 直接对接官方接口,拿到的是平台原始编码,依赖里的 yt-dlp 只承担文件传输。

收尾

你拿到的是歌曲的原始编码、完整的元数据与同步歌词,以及一套能一次读完的三层结构。下一步:备好 Cookie 先跑通一条gamdl URL下载,然后顺着 gamdl/cli/cli.py 的调用链,看请求如何走到解密和封装。

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

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

相关新闻

Gemini 3.1 Pro思考等级怎么选?三档模式场景应用与成本优化策略

Gemini 3.1 Pro思考等级怎么选?三档模式场景应用与成本优化策略

Gemini 3.1 Pro 出来后,我第一时间把日常工作流切了过去。但在使用过程中,最让我纠结的其实是那个看起来不起眼、却实际影响每一种用法的选项:思考等级。三档思考等级,官方说法叫快速、均衡、深度。很多人的第一反应是"无脑选…

2026/10/22 14:48:15 阅读更多 →
视觉语言模型自我改进:对比学习如何提升视觉推理能力

视觉语言模型自我改进:对比学习如何提升视觉推理能力

最近读了篇被主会议接收为 Oral 的视觉语言模型工作,题目是“透过对比的视角:视觉语言模型中的自改进视觉推理”。一开始以为又是那种“生成一堆候选答案然后用投票挑一个”的套路,读完发现完全不是。它解决的是一个我踩了很久的坑&#xff1…

2026/10/23 0:45:35 阅读更多 →
智能驾驶激光雷达感知算法:从原始点云到目标框的完整链路

智能驾驶激光雷达感知算法:从原始点云到目标框的完整链路

1. 先看全景:这一章解决的是感知链路里的哪一段我当年第一次把激光雷达点云接到自研感知模块时,第一反应是:这东西和视频里看的完全不一样。几万到几十万个三维点,密度高高低低,近处密集得像一堵墙,远处稀疏…

2026/10/21 4:06:38 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/10/22 10:18:38 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/10/22 11:01:53 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/10/22 9:44:47 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/10/22 10:42:00 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/10/22 10:40:08 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/10/22 10:56:37 阅读更多 →

日新闻

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/22 1:47:45 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/22 21:33:42 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/22 5:12:39 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

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

2026/10/22 22:56:44 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

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

2026/10/22 22:56:12 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

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

2026/10/22 19:06:46 阅读更多 →