我在youtube播放列表中看到了两种类型的网址。首先是:
https://www.youtube.com/playlist?list=PLCB9F975ECF01953C
当您点击“全部播放”按钮时,网址播放列表会更改为:
https://www.youtube.com/watch?v=otm9NaT9OWU&list=PLCB9F975ECF01953C
大多数网址抓取工具都使用第一种网址。例如,我可以使用this one以下方式:
./playlist2links.sh PLCB9F975ECF01953C
现在我有播放列表(实际上它是youtube mix而非播放列表),其URL如下所示:
https://www.youtube.com/watch?v=UiInBOVHpO8&list=RDQ23sJ-emqds&index=27
如何将此网址转换为正确的格式?我试过跟随,但两者都有错误:
https://www.youtube.com/playlist?list=RDQ23sJ-emqds&index=27
https://www.youtube.com/playlist?list=RDQ23sJ-emqds
编辑: 我也尝试过:
┌─[wakatana@~/yt] [12 files, 60Kb]
└──> youtube-dl --version
2015.11.01
┌─[wakatana@~/yt] [12 files, 60Kb]
└──> youtube-dl -v -s https://www.youtube.com/watch?v=UiInBOVHpO8&list=RDQ23sJ-emqds&index=27
[1] 5872
[2] 5873
[2]+ Done list=RDQ23sJ-emqds
┌─[wakatana@~/yt] [12 files, 60Kb]
└──> [debug] System config: []
[debug] User config: []
[debug] Command-line args: [u'-v', u'-s', u'https://www.youtube.com/watch?v=UiInBOVHpO8']
[debug] Encodings: locale UTF-8, fs UTF-8, out UTF-8, pref UTF-8
[debug] youtube-dl version 2015.07.28
[debug] Python version 2.7.10 - Linux-3.16.0-4-amd64-x86_64-with-debian-stretch-sid
[debug] exe versions: avconv 11.4-6, avprobe 11.4-6, ffmpeg 0.8.17-6
[debug] Proxy map: {}
[youtube] UiInBOVHpO8: Downloading webpage
[youtube] UiInBOVHpO8: Downloading video info webpage
[youtube] UiInBOVHpO8: Extracting video information
[youtube] UiInBOVHpO8: Downloading DASH manifest
[youtube] UiInBOVHpO8: Downloading DASH manifest
[1]+ Done youtube-dl -v -s https://www.youtube.com/watch?v=UiInBOVHpO8
部分工作的一个选项是显示给定页面的源代码,只搜索包含data-video-title
模式的行。同一行上还有视频data-video-id
,可以重建给定的视频网址。问题是youtube-mix是动态生成的,这不适用于播放列表中的最新几个视频(那些是灰色的),另一个问题是这不起作用,例如与wget
不知道为什么。
答案 0 :(得分:2)
https://www.youtube.com/watch?v=UiInBOVHpO8&list=RDQ23sJ-emqds&index=27 是一个" youtube-mix",而不是由某人手动创建的列表。
Youtube-dl能够正确检测列表网址,您可能需要查看其代码,了解它如何检测播放列表网址。
注意它有一个选项--get-id来直接返回视频ID,它可以解决你的问题,取代playlist2links.sh。