首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么只能用youtube-dl下载bilibili上的第一集视频?

为什么只能用youtube-dl下载bilibili上的第一集视频?
EN

Stack Overflow用户
提问于 2020-03-03 11:44:38
回答 1查看 10.5K关注 0票数 5

我可以下载一个系列的第一集。

代码语言:javascript
复制
 yutube-dl  https://www.bilibili.com/video/av90163846?p=1 

现在我想下载这个系列的所有剧集。

代码语言:javascript
复制
for i in $(seq  1  55)
do
    yutube-dl  https://www.bilibili.com/video/av90163846?p=$i
done  

除了第一集之外,其他所有情节都无法下载,它们都包含相同的错误信息,如下所示:

代码语言:javascript
复制
[BiliBili] 90163846: Downloading webpage
[BiliBili] 90163846: Downloading video info page
[download] 【合集300集全】地道美音 美国中小学教学 自然科学 社会常识-90163846.flv has already been downloaded

请试一试,看看发生了什么,然后如何修复?

@Christos,奇怪的事情发生在你的代码上:

代码语言:javascript
复制
for i in $(seq  1  55)
do
    youtube-dl https://www.bilibili.com/video/av90163846?p=$i -o "%(title)s-%(id)s-$i.%(ext)s"
done

它当然可以在bilibili上下载视频,但是所有下载的视频都有不同的名字和相同的内容,所有的内容都和第一集一样,试着检查一下,你就会发现这个事实。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-03-05 16:51:45

发生此错误是因为youtube-dl在文件名的?之后忽略URI参数,因此它试图下载的下一个文件与前一个文件的名称相同,并且由于文件已经具有该名称而失败。解决方案是使用--output模板文件系统选项来设置一个文件名,它将使用变量i在其名称中包含一个索引。

文件系统选项 -o,--输出模板输出文件名模板,请参阅“输出模板”中的所有信息 输出模板 -o选项允许用户为输出文件名指定模板。 基本用法是在下载单个文件时不设置任何模板参数,比如在youtube-dl -o funny_video.flv "https://some/video"中。但是,它可能包含在下载每个视频时将被替换的特殊序列。可以根据python字符串格式化操作对特殊序列进行格式化。例如,%(NAME)s%(NAME)05d。为了澄清,这是一个百分比符号,后面是括号中的名称,然后是格式化操作。允许的名称以及序列类型如下: id (字符串):视频标识符 title (字符串):视频标题 url (字符串):视频网址 ext (字符串):视频文件扩展名 ..。

对于您的情况,要在输出文件名中使用i,可以使用以下内容:

代码语言:javascript
复制
for i in $(seq  1  55)
do
    youtube-dl https://www.bilibili.com/video/av90163846?p=$i -o "%(title)s-%(id)s-$i.%(ext)s"
done

它将使用titleid、用于索引的i变量和用于视频扩展的ext

您可以检查输出模板变量以获得定义文件名的更多选项。

更新

显然,bilibili.com使用了一些Javascript来设置视频播放器并获取视频文件。没有办法,所以您可以提取整个播放列表使用youtube-dl。我建议你使用开箱即用的安妮。它有所有主要操作系统的安装程序,您可以像这样使用它来下载整个播放列表:

代码语言:javascript
复制
annie -p https://www.bilibili.com/video/av90163846

如果只想下载到55个视频,可以使用-end 55 cli选项,如下所示:

代码语言:javascript
复制
annie -end 55 -p https://www.bilibili.com/video/av90163846

可以使用-start-end-items选项指定列表的下载范围: -start播放列表视频从(默认的1) -end播放列表视频开始到-items播放列表视频项目下载。用逗号分隔: 1,5,6,8-10 只适用于bilibili播放列表: 每一集的-eto文件名不包括播放列表标题

如果只想获取播放列表的信息而不下载文件,请使用-i命令行选项,如下所示:

代码语言:javascript
复制
annie -i -p https://www.bilibili.com/video/av90163846

将输出如下内容:

代码语言:javascript
复制
 Site:      哔哩哔哩 bilibili.com
 Title:     【合集300集全】地道美音 美国中小学教学 自然科学 社会常识 P1 【001】Parts of Plants
 Type:      video
 Streams:   # All available quality
     [64]  -------------------
     Quality:         高清 720P
     Size:            308.24 MiB (323215935 Bytes)
     # download with: annie -f 64 ...

     [32]  -------------------
     Quality:         清晰 480P
     Size:            201.57 MiB (211361230 Bytes)
     # download with: annie -f 32 ...

     [16]  -------------------
     Quality:         流畅 360P
     Size:            124.75 MiB (130809508 Bytes)
     # download with: annie -f 16 ...


 Site:      哔哩哔哩 bilibili.com
 Title:     【合集300集全】地道美音 美国中小学教学 自然科学 社会常识 P2 【002】Life Cycle of a Plant
 Type:      video
 Streams:   # All available quality
     [64]  -------------------
     Quality:         高清 720P
     Size:            227.75 MiB (238809781 Bytes)
     # download with: annie -f 64 ...

     [32]  -------------------
     Quality:         清晰 480P
     Size:            148.96 MiB (156191413 Bytes)
     # download with: annie -f 32 ...

     [16]  -------------------
     Quality:         流畅 360P
     Size:            94.82 MiB (99425641 Bytes)
     # download with: annie -f 16 ...
票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60506532

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档