youtube mix的正确网址格式,用于抓取视频的特定网址

时间:2015-11-02 09:10:10

标签: youtube

我在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不知道为什么。

1 个答案:

答案 0 :(得分:2)

https://www.youtube.com/watch?v=UiInBOVHpO8&list=RDQ23sJ-emqds&index=27 是一个" youtube-mix",而不是由某人手动创建的列表。

Youtube-dl能够正确检测列表网址,您可能需要查看其代码,了解它如何检测播放列表网址。

注意它有一个选项--get-id来直接返回视频ID,它可以解决你的问题,取代playlist2links.sh。