toMedia
进阶功能

播放列表

下载和管理播放列表

下载整个播放列表

# 下载完整播放列表
yt-dlp "PLAYLIST_URL"

# 按序号命名
yt-dlp -o "%(playlist_index)03d - %(title)s.%(ext)s" "PLAYLIST_URL"

# 存到列表名目录下
yt-dlp -o "%(playlist_title)s/%(playlist_index)03d - %(title)s.%(ext)s" "PLAYLIST_URL"
import yt_dlp

ydl_opts = {
    'outtmpl': '%(playlist_title)s/%(playlist_index)03d - %(title)s.%(ext)s',
}

with yt_dlp.YoutubeDL(ydl_opts) as ydl:
    ydl.download(["PLAYLIST_URL"])
终端输出
[youtube:playlist] Downloading playlist: 我的播放列表
[youtube:playlist] 我的播放列表: Downloading 15 items
[download] Downloading item 1 of 15
[download] Destination: 我的播放列表/001 - 第一个视频.mp4
[download] 100% of 25.3MiB in 00:05
[download] Downloading item 2 of 15
...

选择性下载

# 下载第 1-5 个
yt-dlp -I 1:5 "PLAYLIST_URL"

# 下载特定序号
yt-dlp -I 1,3,5,10 "PLAYLIST_URL"

# 从第 10 个开始
yt-dlp -I 10: "PLAYLIST_URL"

# 最新 5 个(倒数)
yt-dlp -I -5: "PLAYLIST_URL"

# 每隔一个下载(步长 2)
yt-dlp -I ::2 "PLAYLIST_URL"

# 反转顺序下载
yt-dlp -I ::-1 "PLAYLIST_URL"
import yt_dlp

# 下载第 1-5 个
ydl_opts = {
    'playlist_items': '1-5',
}

# 特定序号
ydl_opts_specific = {
    'playlist_items': '1,3,5,10',
}

with yt_dlp.YoutubeDL(ydl_opts) as ydl:
    ydl.download(["PLAYLIST_URL"])

单视频 vs 播放列表

# 如果 URL 同时是视频和播放列表的一部分,只下载单个视频
yt-dlp --no-playlist "URL"

# 强制按播放列表处理
yt-dlp --yes-playlist "URL"
import yt_dlp

# 禁止处理播放列表,只下载单个视频
ydl_opts = {
    'noplaylist': True,
}

with yt_dlp.YoutubeDL(ydl_opts) as ydl:
    ydl.download(["URL"])

播放列表信息提取

import yt_dlp

with yt_dlp.YoutubeDL({'skip_download': True, 'extract_flat': True}) as ydl:
    info = ydl.extract_info("PLAYLIST_URL", download=False)

    print(f"播放列表: {info['title']}")
    print(f"视频数量: {len(info['entries'])}")
    print()
    for i, entry in enumerate(info['entries'], 1):
        print(f"{i:3d}. {entry.get('title', 'N/A')}")
        print(f"     URL: {entry.get('url', 'N/A')}")

extract_flat: True 只获取播放列表的目录信息,不深入解析每个视频的详细信息,速度更快。

频道批量下载

# 下载频道所有视频
yt-dlp "https://www.youtube.com/@ChannelName/videos"

# 使用归档避免重复
yt-dlp --download-archive archive.txt \
  -o "%(uploader)s/%(upload_date>%Y-%m-%d)s - %(title)s.%(ext)s" \
  "https://www.youtube.com/@ChannelName/videos"

相关页面

On this page