Zeal-L / BiliBili-Manga-Downloader

一个好用的哔哩哔哩漫画下载器,拥有图形界面,支持关键词搜索漫画和二维码登入,黑科技下载未解锁章节,多线程下载,多种保存格式,本地漫画管理,一键检查更新!
GNU Affero General Public License v3.0
868 stars 53 forks source link

🐛修复BiliPlus解析失败问题(不使用重定向) #156

Closed lanyeeee closed 1 month ago

lanyeeee commented 1 month ago

功能描述

目前BiliPlus漫画页面的html里不再直接包含图片地址,取而代之的是一些query参数,通过这些参数发起的请求会被重定向到真正的图片地址

例如: 某图片的query参数为: ?act=get_image_url&epid=595701&request_time=1721133361&file=bb35c716a7781be297f57f1e39b21dfc0375e773.jpg&append= 禁用requests的重定向,然后带cookie发送以下请求 https://www.biliplus.com/manga/?act=get_image_url&epid=595701&request_time=1721133361&file=bb35c716a7781be297f57f1e39b21dfc0375e773.jpg&append= 从响应头中就能得到真正的图片地址

这个PR对图片地址的解析就是基于上面的例子

为什么不用多线程

经过我的测试,用多线程进行发请求拿图片地址操作,极易触发BiliPlus的503错误 即使把executor大小设置为4,503错误依然会频繁出现 大概是因为在外面有16个并发(16个进度条在工作),即使每个进度条只并发4个,总数也有64

优劣

优: 只修改一个文件,不破坏DownloadManager.pyEpisode.py的抽象 劣: 每个进度条进行解析章节图片地址的耗时变得很长,且在用户界面上完全没有提示

在我的网络环境中,无论是否使用重定向,下载的总耗时都差不多 解决这个issue #154