用于从播放列表下载youtube文件的Shell脚本

wva*_*aal 19 bash shell cut download youtube-dl

我正在尝试编写一个bash脚本,它将从播放列表中下载所有YouTube视频,并根据youtube视频本身的标题将它们保存为特定的文件名.到目前为止,我有两个独立的代码片段,可以完成我想要的但我不知道如何将它们组合在一起作为一个单元.

这段代码可以找到给定页面上所有YouTube视频的标题:

curl -s "$1" | grep '<span class="title video-title "' | cut -d\> -f2 | cut -d\< -f1
Run Code Online (Sandbox Code Playgroud)

这段代码将文件下载到youtube视频ID给出的文件名(例如,youtube.com/watch?v = CsBVaJelurE&feature = relmfu 提供的文件名为CsBVaJelurE.flv)

curl -s "$1" | grep "watch?" | cut -d\" -f4| while read video; 
do youtube-dl "http://www.youtube.com$video";
done
Run Code Online (Sandbox Code Playgroud)

我想要一个脚本,将youtube .flv文件输出到由视频标题(在本例中为BASH课程2.flv)给出的文件名,而不仅仅是视频ID名称.在此先感谢所有的帮助.

wva*_*aal 24

好的,经过进一步研究和更新我的youtube-dl版本后,事实证明这个功能现在直接构建到程序中,无需使用shell脚本来解决youtube上的播放列表下载问题.完整的文档可以在这里找到:(http://rg3.github.com/youtube-dl/documentation.html),但我原来问题的简单解决方案如下:

1)youtube-dl将自动处理播放列表链接,无需单独提供其中包含的视频的URL(这样就无需使用grep搜索"watch?"来查找唯一的视频ID

2)现在有一个选项可以使用各种选项格式化文件名,包括:

  • id:序列将被视频标识符替换.
  • url:序列将被视频URL替换.
  • 上传者:序列将被上传视频的人的昵称取代.
  • upload_date:序列将被YYYYMMDD格式的上传日期替换.
  • title:该序列将被文字视频标题取代.
  • ext:序列将被适当的扩展名替换(如flv或mp4).
  • epoch:创建文件时,序列将被Unix纪元取代.
  • autonumber:序列将被一个五位数替换,每次下载都会增加,从零开始.

此输出选项的语法如下(其中NAME是上面显示的任何选项):

youtube-dl -o '%(NAME)s' http://www.youtube.com/your_video_or_playlist_url
Run Code Online (Sandbox Code Playgroud)

作为示例,要回答我原来的问题,语法如下:

youtube-dl -o '%(title)s.%(ext)s' http://www.youtube.com/playlist?list=PL2284887FAE36E6D8&feature=plcp
Run Code Online (Sandbox Code Playgroud)

再次感谢那些回复我的问题的人,非常感谢您的帮助.