如何用 Gamdl 一键下载 Apple Music 无损音频与 4K 音乐视频:完整实战指南

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

您是否遇到过这样的时刻:歌单里某首老歌突然从 Apple Music 下架,专辑封面变成灰色,本地收藏无处安放?或者在户外直播、视频剪辑时,急需一段版权清晰的高质量音乐素材,却只能靠录屏软件"降级"保存?

Gamdl(Glomatico's Apple Music Downloader)就是为解决这个问题而生的命令行下载工具。它面向拥有 Apple Music 订阅的用户,可以把歌曲、音乐视频和上传视频直接保存到本地,最高支持 ALAC 无损音频(24-bit/192kHz)与 4K H.265 音乐视频。本文将从零开始,带您完成安装、配置、下载的完整流程,并深入讲解高级玩法。

为什么需要专门写一个下载器?

先看一个真实场景。您喜欢的一位歌手发布了新专辑,您第一时间加入资料库。三个月后,因版权到期,这张专辑在流媒体平台下架。如果您只依赖在线播放,一切就此消失;如果您有 Gamdl,专辑早已以无损格式安静地躺在您的 NAS 里。

这不是简单的"抓取音频"。Gamdl 直接与 Apple Music 官方 API 交互,能拿到带 DRM 加密的原始媒体流,再通过 Widevine 方案解密、修复并封装成标准文件。通俗地说:它把 Apple Music 里"只能听不能存"的内容,变成您自己完全掌控的文件,同时保留专辑封面、歌词、歌手信息等全部元数据。

三分钟完成安装,下载第一首歌

环境准备清单

开始之前,请确认三件事:

  1. Python 3.10 或更高版本(在终端执行 python --version 即可查看)
  2. 有效的 Apple Music 订阅(这是合法使用的前提)
  3. Netscape 格式的 Cookie 文件:登录 music.apple.com 后,用浏览器插件把 Cookie 导出为 cookies.txt

说明:Gamdl 仅服务于订阅用户,下载内容请仅供个人使用,勿用于商业传播。

安装与第一次下载

# 安装 Gamdl
pip install gamdl

将导出的 cookies.txt 放在当前工作目录,然后执行:

# 下载单首歌曲(以专辑内单曲链接为例)
gamdl "https://music.apple.com/us/album/never-gonna-give-you-up-2022-remaster/1624945511?i=1624945512"

就这么简单。默认情况下,文件会保存到当前目录的 Apple Music 文件夹,自动按"歌手/专辑"的目录结构整理,歌曲以 AAC 256kbps 编码嵌入封面与歌词标签。您已经完成了第一次成功的本地收藏 🎵

如果想下载整个专辑,去掉链接末尾的 ?i=xxxx 参数即可;把链接换成艺术家主页 URL,还能一键抓取该歌手的全部作品。下载前程序会弹出交互式选择框,支持方向键移动、空格多选、Ctrl+A 全选。

核心能力深挖:从 AAC 到无损的完整音质阶梯

Gamdl 最值得称道的是对音质选项的精细控制。默认下载 AAC 256kbps,但对发烧友而言,真正的宝藏是下面的配置:

# 优先无损,失败自动降级
gamdl URL --song-codec-priority "alac,aac,aac-web"

# 下载 Dolby Atmos 空间音频
gamdl URL --song-codec-priority "atmos,alac,aac"

支持的全部音频编码包括:aac-web(256kbps)、aac-healac(最高 24-bit/192kHz 无损)、atmos(Dolby Atmos 768kbps)、ac3 等十余种。视频方面同样强大:

# 下载 4K H.265 音乐视频
gamdl URL --music-video-resolution 2160p --music-video-codec-priority h265

H.264 最高支持 1080p,而 H.265 编码可以上到 1440p 和 2160p,在相同码率下体积更小、画质更好,适合需要高清素材的创作者。

歌词与元数据是另一个加分项:同步歌词支持 LRC、SRT、TTML 三种格式(SRT 时间轴更精确),专辑封面可以单独导出为 PNG 大图,所有标签(歌手、专辑、年份、曲目号等)自动写入文件。

对比:Gamdl 与三种常见替代方案的差异

为了看清它的价值,我们把它与主流的"本地保存"手段做个对比:

方案 音质 元数据 批量能力 操作难度 局限
系统录音/录屏 有损、受环境干扰 要实时播放一遍,音质差
在线音乐下载网站 参差不齐 大多缺失 安全性存疑、常失效
同类命令行下载器 部分支持 部分支持 一般 多为单格式、维护停滞
Gamdl 无损级,官方源 完整 强(专辑/歌手/歌单) 需要订阅与 Cookie

结论很清晰:录音牺牲音质,在线工具牺牲安全与完整性,Gamdl 在音质、元数据、批量三方面同时达标,代价仅是命令行带来的少量学习成本。

进阶配置:让下载流程自动化

配置文件代替重复参数

首次运行后,配置文件会自动生成(Linux 位于 ~/.gamdl/config.ini)。把常用参数写进去,之后只需输入 URL:

[gamdl]
output_path = /path/to/your/music
song_codec_priority = alac,aac,aac-web
music_video_resolution = 2160p
language = zh-CN
concurrent_downloads = 3

命令行参数优先级高于配置文件,两者可以灵活混用。

定制文件命名与目录

默认目录结构是"专辑歌手/专辑",您可以完全自定义:

# 按年份归档
gamdl URL --album-folder-template "{album_artist}/{date:%Y}/{album}"

# 多碟专辑的文件名带碟号
gamdl URL --multi-disc-file-template "{disc}-{track:02d} {title}"

模板变量非常丰富:albumartistdatetrackdisc 等一应俱全,还支持 strftime 日期格式,满足强迫症式的整理需求。

加速下载引擎

Gamdl 默认使用 yt-dlp 作为下载库(注意:它只负责传输,媒体仍来自 Apple Music 官方服务器)。想要更快的速度,可以切换到 N_m3u8DL-RE 引擎:

gamdl URL --download-mode nm3u8dlre --nm3u8dlre-path "/path/to/N_m3u8DL-RE"

批量与去重

# 从文本文件批量读取链接
gamdl --read-urls-as-txt urls.txt

# 启用数据库,避免重复下载
gamdl URL --database-path "./downloads.db"

# 出错也不中断,继续处理后续链接
gamdl URL --no-exceptions --log-level DEBUG --log-file "./gamdl.log"

避坑指南:五个常见问题与解决方案

1. 报错提示订阅无效或无法获取媒体信息? Cookie 过期是最常见原因。重新登录 music.apple.com 并导出新的 cookies.txt 即可;也可以使用 --cookies-path 指定其他位置的 Cookie 文件。

2. ALAC 无损下载失败? 这是预期内的行为:ALAC 受 API 限制,通常需要配合 Wrapper v2 服务器使用(--use-wrapper 开启),它负责账号、播放与解密请求。AAC 等编码则完全不需要 Wrapper,多数用户无需配置。

3. 下载 4K 视频没有 2160p 选项? 4K 仅 H.265 编码支持,且受原始内容清晰度限制。请确认代码优先级包含 h265,并检查该视频本身是否有 4K 源。

4. 文件名过长或包含非法字符? 使用 --truncate 限制文件名长度;Windows 用户建议同时调整命名模板,避免冒号、问号等字符引发错误。

5. 想跳过同步歌词或只下载歌词? --no-synced-lyrics 关闭歌词,--synced-lyrics-only 则只保存歌词文件。配合 --exclude-tags "comment,genre_id,storefront" 可精简标签。

作为开发者:把 Gamdl 嵌入您的项目

Gamdl 的三层架构(api → interface → downloader)非常适合二次开发。它提供了一整套异步 Python API,可以在自己的应用中复用下载能力:

import asyncio
from gamdl.api import AppleMusicApi
from gamdl.interface import AppleMusicInterface
from gamdl.downloader import AppleMusicDownloader

async def main():
    api = await AppleMusicApi.create_from_netscape_cookies("cookies.txt")
    if not api.active_subscription:
        print("无有效订阅"); return
    interface = await AppleMusicInterface.create(apple_music_api=api)
    downloader = AppleMusicDownloader(interface=interface)
    async for item in downloader.get_download_item_from_url("YOUR_URL"):
        await downloader.download(item)

asyncio.run(main())

借助 pyproject.toml 中的依赖清单可以看到,项目基于 httpx、mutagen、pywidevine、yt-dlp 等成熟库构建,还包含一个 Rust 编写的原生媒体引擎(ammuxer)负责 MP4 封装与解密重组——对想学习异步编程、DRM 处理或 Rust-Python 混编的开发者来说,本身就是一份优质教材。

下一步行动建议

如果您是音质党,先从一首歌开始,体验 ALAC 与流媒体的差距;如果是视频创作者,试着用 --music-video-resolution 2160p 拉一部 4K MV 作为素材;如果只是想要一个安心的本地曲库,配置好 song_codec_priorityoutput_path,把整个歌单交给它。

最后提醒:项目采用 MIT 开源协议,作者目前主要接受关键 bug 修复的贡献,功能类建议可以通过 issue 提出。动手之前,请确认您的 Apple Music 订阅有效,并妥善保管 Cookie 文件——它等同于您的账户凭证。现在,去建立属于您自己的音乐档案馆吧 🚀

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

Logo

电商企业物流数字化转型必备!快递鸟 API 接口,72 小时快速完成物流系统集成。全流程实战1V1指导,营造开放的API技术生态圈。

更多推荐