You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用youtube-dl/yt-dlp备份YouTube教育频道:视频+播放列表脚本

使用PowerShell + yt-dlp备份YouTube教育频道并生成共享视频的M3U播放列表

完全可以实现你的需求,以下是针对性的PowerShell脚本方案,通过yt-dlp(youtube-dl的活跃分支)完成频道备份,同时避免重复下载共享视频,最终生成对应播放列表的M3U文件。

前置准备

  • 安装yt-dlp:可通过winget install yt-dlp命令安装,或下载可执行文件放到脚本同目录
  • 安装ffmpeg:yt-dlp依赖它处理音视频合并,同样可用winget install ffmpeg安装

完整脚本

# 替换为目标教育频道的URL(支持@用户名/频道ID/自定义URL格式)
$channelUrl = "https://www.youtube.com/@YourEducationChannel"

# 1. 创建videos和playlist文件夹
$videosDir = Join-Path $PSScriptRoot "videos"
$playlistsDir = Join-Path $PSScriptRoot "playlist"
New-Item -ItemType Directory -Path $videosDir -Force | Out-Null
New-Item -ItemType Directory -Path $playlistsDir -Force | Out-Null

# 2. 下载频道所有视频到videos文件夹,用视频ID命名避免重复
yt-dlp `
    -o "$videosDir/%(id)s.%(ext)s" `
    --download-archive "$videosDir/downloaded.txt" `
    $channelUrl

# 3. 获取频道下所有播放列表的元数据(ID和标题)
$playlists = yt-dlp -j --flat-playlist $channelUrl | ConvertFrom-Json | Where-Object { $_._type -eq "playlist" }

# 4. 遍历每个播放列表,生成对应M3U文件
foreach ($playlist in $playlists) {
    $playlistId = $playlist.id
    # 替换标题中的非法文件名字符
    $safePlaylistTitle = $playlist.title -replace '[\\/:*?"<>|]', '_'
    $m3uFilePath = Join-Path $playlistsDir "$safePlaylistTitle.m3u"

    # 获取当前播放列表内所有视频的元数据
    $playlistVideos = yt-dlp -j --flat-playlist "https://www.youtube.com/playlist?list=$playlistId" | ConvertFrom-Json

    # 写入M3U文件头
    @"
#EXTM3U
"@ | Out-File $m3uFilePath -Encoding UTF8

    # 遍历播放列表视频,匹配已下载的文件并写入M3U
    foreach ($video in $playlistVideos) {
        $videoId = $video.id
        $matchedFile = Get-ChildItem -Path $videosDir -Filter "$videoId.*" -ErrorAction SilentlyContinue
        if ($matchedFile) {
            $relativePath = "./videos/$($matchedFile.Name)"
            @"
#EXTINF:-1,$($video.title)
$relativePath
"@ | Out-File $m3uFilePath -Encoding UTF8 -Append
        }
    }

    Write-Host "已生成播放列表: $m3uFilePath"
}

Write-Host "频道备份与播放列表生成完成!"

关键细节说明

  • 避免重复下载:使用--download-archive参数记录已下载视频ID,后续运行脚本仅下载新增视频;同时用视频ID作为文件名,彻底规避共享视频的重复存储问题
  • 高效获取元数据:--flat-playlist参数仅拉取播放列表/视频的元数据,无需下载内容,大幅提升处理速度
  • 兼容性处理:自动替换播放列表标题中的非法字符,避免生成文件时出错;过滤播放列表中未下载的外部视频(如频道引用的其他作者视频)
  • 可定制化:可添加yt-dlp参数调整下载画质(如-f bestvideo+bestaudio/best)、字幕(如--write-sub)等需求

内容的提问来源于stack exchange,提问作者Araneus0390

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 12:47:29