最近在youtube上看经济学人的讲解,比如下面这个:
https://www.youtube.com/playlist?list=PLFOmDh7i7tWbblLXydFKQ6oGqTiNACDYN
youtube提供了podcast,打算批量下载下来,开车的时候听。
过程中有几个问题记录一下。

  1. 音频格式选择与下载
    yt-dlp本身提供了查看可选择音视频格式的选项:--list-formats或者-F,可以查看youtube提供的格式,用-f选择合适的格式下载即可。但是列表中的部分选集的格式不一样,批量下载的时候可能出现失败。

    最好使用-f 'bestaudio'选择下载最优音频格式,通常是webm格式;再用-x --audio-format mp3通过ffmpeg转换为常用的mp3格式。

  2. 导出并使用cookies
    一次下载的集数比较多是,可能出现限制下载的情况,需要通过使用浏览器cookies来进行认证。
    参考yt-dlp提供的说明即可。
    由于yt-dlp不支持我使用的thorium浏览器,需要使用Get cookies.txt LOCALLY插件导出后再使用,选项为--cookies PATH_TO_COOKIES.TXT
  3. 使用deno解决javascript challenges
    youtube为了限制下载,采用了javascript challenges,需要安装外部js运行时来解决,最简单的方案是使用deno
    yt-dlp也提供了说明,按照说明:
    先安装deno运行时,我使用scoop install deno直接安装。
    再增加选项--js-runtimes "deno:PATH_TO_DENO.exe"

    总的命令行如下:

    yt-dlp -f `bestaudio` -x --audio-format mp3 --cookies PATH_TO_COOKIES.TXT --js-runtimes "deno:PATH_TO_DENO.exe" YOUTUBE_URL
  4. 缩短文件名
    由于yt-dlp默认下载的文件名是视频标题,比较长。上传到NAS时会因为文件名过长而不给保存,需要通过删除末尾的重复文字来缩短文件名。
    我使用Total Commander的批量重命名功能,删除最后的“|TheEconomist”和后续的视频标识字符串。
    正则表达式为|TheEconomist.*,其中.*表示任意字符串。
    PixPin_2026-05-05_00-28-29.png

标签: none

添加新评论