我在 YouTube 播放列表上看到过两种类型的 URL。第一个是这样的:
https://www.youtube.com/playlist?list=PLCB9F975ECF01953C
当您单击“全部播放”按钮时,URL 播放列表将更改为:
https://www.youtube.com/watch?v=otm9NaT9OWU&list=PLCB9F975ECF01953C
大多数 URL 抓取器都适用于第一种类型的 URL。例如我可以使用 this one以下方式:
./playlist2links.sh PLCB9F975ECF01953C
现在我有播放列表(实际上它是一个 YouTube 混合而不是播放列表),其 URL 如下所示:
https://www.youtube.com/watch?v=UiInBOVHpO8&list=RDQ23sJ-emqds&index=27
如何将此 URL 转换为正确的格式?我尝试过以下操作,但都给出了错误:
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
,它允许重建给定的视频 URL。问题是 youtube-mix 是动态生成的,这不适用于播放列表中最新的几个视频(那些灰色的视频),另一个问题是这不起作用,例如用wget
不知道为什么。
最佳答案
https://www.youtube.com/watch?v=UiInBOVHpO8&list=RDQ23sJ-emqds&index=27 是“youtube-mix”,而不是某人手动创建的列表。
Youtube-dl正确检测列表 URL,您可能需要查看其代码以了解它如何检测播放列表 URL。
请注意,它有一个选项 --get-id 可以直接返回视频 ID,它可以作为 playlist2links.sh 的替代品来解决您的问题。
关于youtube - YouTube mix 的正确 URL 格式,用于抓取视频的特定 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33474098/