Glomatico 的 YouTube 音乐下载器
一个用于从 YouTube Music 下载带标签的 YouTube 音乐歌曲的 Python 命令行应用。
Discord 服务器: https://discord.gg/aBjMEZ9tnq
为什么不直接使用 yt-dlp?
虽然本项目内部使用了 yt-dlp,但所有歌曲元数据都是通过 YouTube Music 的 API 获取的,包括正确的方形封面、歌词、音轨编号、总音轨数等。
前提条件
- Python 3.8 或更高版本
- 系统 PATH 中的 FFmpeg
- 最新的二进制文件可从以下链接获取:
- (可选)YouTube Music 浏览器会话的 cookies 文件
- 您可以在 YouTube Music 网站上使用以下任一扩展程序,并登录您的账户来获取 cookies:
- 有了 cookies,您可以下载年龄限制内容、私人播放列表,如果您有有效订阅,还可以下载高级格式的歌曲。您需要使用命令行参数或配置文件设置 cookies 文件路径(参见配置)。
- YouTube cookies 可能很快过期。作为解决方法,请在隐身/匿名窗口中导出您的 cookies。
安装
使用 pip 安装 gytmdl
包:
pip install gytmdl
使用方法
gytmdl [选项] 网址...
示例
- 下载一首歌曲:
gytmdl "https://music.youtube.com/watch?v=3BFTio5296w"
- 下载一张专辑:
gytmdl "https://music.youtube.com/playlist?list=OLAK5uy_lvpL_Gr_aVEq-LaivwJaSK5EbFd4HeamM"
- 选择要从艺术家下载的专辑或单曲:
gytmdl "https://music.youtube.com/channel/UCwZEU0wAwIyZb4x5G_KJp2w"
不支持不属于专辑的歌曲(标准 YouTube 视频)。为确保获得有效链接,请使用 YouTube Music 搜索并启用按歌曲、专辑或艺术家筛选。
交互式提示控制
- 方向键 - 移动选择
- 空格键 - 切换选择
- Ctrl + A - 全选
- 回车键 - 确认选择
配置
gytmdl 可以通过命令行参数或配置文件进行配置。首次运行 gytmdl 时,配置文件会自动创建在 Linux 的 ~/.gytmdl/config.json
或 Windows 的 %USERPROFILE%\.gytmdl\config.json
。可以使用命令行参数覆盖配置文件中的值。
命令行参数 / 配置文件键 | 描述 | 默认值 |
---|---|---|
--save-cover , -s / save_cover | 将封面保存为单独的文件。 | false |
--overwrite / overwrite | 覆盖现有文件。 | false |
--read-urls-as-txt , -r / - | 将 URL 解释为包含由换行符分隔的 URL 的文本文件路径。 | false |
--config-path / - | 配置文件路径。 | <home>/.gytmdl/config.json |
--log-level / log_level | 日志级别。 | INFO |
--print-exceptions / print_exceptions | 打印异常。 | false |
--output-path , -o / output_path | 输出目录路径。 | ./YouTube Music |
--temp-path / temp_path | 临时目录路径。 | ./temp |
--cookies-path , -c / cookies_path | .txt cookies 文件路径。 | null |
--ffmpeg-path / ffmpeg_path | FFmpeg 二进制文件路径。 | ffmpeg |
--aria2c-path / aria2c_path | aria2c 二进制文件路径。 | aria2c |
--download-mode / download_mode | 下载模式。 | ytdlp |
--itag , -i / itag | Itag(音频编解码器/质量)。 | 140 |
--cover-size / cover_size | 封面大小。 | 1200 |
--cover-format / cover_format | 封面格式。 | jpg |
--cover-quality / cover_quality | 封面 JPEG 质量。 | 94 |
--template-folder / template_folder | 专辑文件夹的模板(格式字符串)。 | {album_artist}/{album} |
--template-file / template_file | 歌曲文件的模板(格式字符串)。 | {track:02d} {title} |
--template-date / template_date | 日期标签模板。 | %Y-%m-%dT%H:%M:%SZ |
--exclude-tags , -e / exclude_tags | 要排除的标签(逗号分隔)。 | null |
--truncate / truncate | 文件/文件夹名称的最大长度。 | 40 |
--no-config-file , -n / - | 不加载配置文件。 | false |
标签变量
以下变量可用于模板文件夹/文件和/或 exclude_tags
列表中:
album
album_artist
artist
cover
date
lyrics
media_type
rating
title
track
track_total
url
Itags(音频编解码器/质量)
可用的免费 itags 如下:
140
(AAC 128kbps)139
(AAC 48kbps)251
(Opus 128kbps)250
(Opus 64kbps)249
(Opus 48kbps)
如果提供了带有有效订阅的 cookies 文件,可用的高级 itags 如下:
141
(AAC 256kbps)774
(Opus 256kbps)
下载模式
可用的模式如下:
ytdlp
aria2c
- 比
ytdlp
更快 - 可从此处获取:https://github.com/aria2/aria2/releases
- 比
封面格式
可用的封面格式如下:
jpg
png