HFrost0 / bilix

⚡️Lightning-fast async download tool for bilibili and more
Apache License 2.0
1.64k stars 168 forks source link

关于多P下载时的异常处理 #17

Closed showthesunli closed 2 years ago

showthesunli commented 2 years ago

当一个投稿有多p被同时下载时,某p的请求可能会出异常。 这时程序会重试请求,当超过重试次数时,整个程序就会退出。 但这个时候其他p的请求并没有出问题,貌似还可以继续下载。 请问能不能让程序只是停止出现异常的视频下载,而不中断整个程序?

会提出这个请求的原因是,b站的HEAD请求好像总是抽风,然后过一段时间就好了。 但是我的下载总是被某一p的请求失败而打断就很痛苦。

HFrost0 commented 2 years ago

👋,之前考虑到发生错误并超过重试次数时往往是被b站ban了,或者有严重的网络问题,所以直接终止程序。

目前对于HEAD问题做的处理是向备选服务器发起请求,目前使用最新版本你仍然遇到了超过重复次数的问题吗?一个临时的解决办法是使用参数-p来指定下载的范围从而跳过抽风的p

关于某一p出错其他p继续下载的问题,asyncio.gather提供了return_exceptions这样的参数,所以我想改起来其实很方便,但我仍然倾向于默认情况下终止用户的整个进程,并可以提供一个可选参数来使用户选择跳过发生异常的p

showthesunli commented 2 years ago

image 对,仍然是碰到超过重复次数。

上面的截图没有截全,但是异常全部都是这个HEAD的问题

HFrost0 commented 2 years ago

重新打开了issue #16 ,之后对这个问题进一步处理

showthesunli commented 2 years ago

@HFrost0 请问你能不能尝试下载这个视频https://www.bilibili.com/video/BV16S4y1p7Dg。我今天仍然是HEAD请求报错,我不确定到底是B站的问题还是我的问题。

下面是我的下载命令

 bilix s https://www.bilibili.com/video/BV16S4y1p7Dg --dir E:/tmp --subtitle --max-con 10

bilix版本是 0.6.11

HFrost0 commented 2 years ago

我的正常,说实话这种问题很难复现,可能b站根据地区不同会CDN不同的服务器

HFrost0 commented 2 years ago

对这个链接https://www.bilibili.com/video/BV16S4y1p7Dg我今天又尝试了一下,3次HEAD 404后转GET成功避免了问题,因此对于多P的异常处理暂时保持原状,如果有需求再打开吧