Tsuk1ko/nhentai-helper

经常下载出错无法取消或删除

myzzh5 opened this issue · 15 comments

4DM )6M~$V2$40K0_W{8BBL
$SVMCAR}BGCHHTM}M7NPYN8
如图,经常会出现下载打包100%后卡住不动的情况
此时无法取消或删除任务,并且出现这种情况的时候刷新也无法解决,只能完全关闭当前标签页
下载过程中的任务无法单击一次就取消,需要连续不断的点×直至任务取消

打包卡住的情况看看 console 有没有报错

下载中任务点击取消不会立即消失是正常的,需要等待已经开始下载的图片下载结束才能完全取消,实际上点一次就可以,不过这个确实可以改进一下,以前写的时候懒得手动放弃请求

如果可以的话最好还是能加一个所有阶段都能取消的功能,这样能避免出现100%卡住之后还要另开一个标签页重新下载的问题,因为如果出现报错的情况,刷新无法解决的情况下,也能通过取消报错的下载项

压缩一旦开始无法取消,且压缩卡100%是不正常的情况,一旦进入压缩流程,这个本子就不会再阻塞其他本子的下载进度,取消压缩并不能解决问题,最好能提供错误日志定位问题原因

在 nhentai 页面控制台执行 localStorage.setItem('NHENTAI_HELPER_DEBUG',1) 然后刷新,可以阻止 nhentai 不停清除控制台,如果下次复现的话可以提供下日志

看起来是内存太小导致的……

那不清楚原因了……

如果你一个个本子慢慢下会出现这种情况吗,是否是经常在同时很多个本子开始压缩的时候出现这个问题

一个一个下没出现过,加入下载列表才能碰到这种情况,而且并不是同时很多本子开始压缩的时候才会出现

QQ图片20220731190151
这个问题只要出现了一次,下面的列表就跟传染了一样,很快就会出现第二个,但并不一定是连续出现

请尝试下新版本是否有改善

请尝试下新版本是否有改善

@Tsuk1ko 我也遇见了同样的情况,jszip 压缩大量图片导致数据缓冲区错误 Stuk/jszip#775

如果此时刷新,UI 界面上显示 100%,但后台实际上在重新下载这个漫画

image

image

image

隔壁脚本对这种情况貌似有解决方案 https://github.com/ccloli/E-Hentai-Downloader#memory-usage

我现在是直接把 sessionStorage 存的队列里 有问题的十几个漫画单独剔除掉了,于是脚本又能正常工作了不会偶然卡死在原地

@gylidian 看了下隔壁的解决方法也只是让你分页下载或者不要一次性下载太多而已,看起来没有什么治本的方法

挺奇怪的,我自己一直没出过这个问题,即使有时候同时在压缩七八本甚至里面还有几个一两百页的单行本

我只能试试加一个低内存消耗选项,同一时间只处理一个本子的下载和压缩,尽量减少内存消耗了

@gylidian 看了下隔壁的解决方法也只是让你分页下载或者不要一次性下载太多而已,看起来没有什么治本的方法

挺奇怪的,我自己一直没出过这个问题,即使有时候同时在压缩七八本甚至里面还有几个一两百页的单行本

我只能试试加一个低内存消耗选项,同一时间只处理一个本子的下载和压缩,尽量减少内存消耗了

感谢!

我也有一个治标不治本的解决方案:

如果 图片大小/数目较多的本子 压缩失败,提供一个 UI 指示用户 进入本子详情页 单独点击 [download zip]下载单个本子(这个过程大概可以共享一下已经下载好的图片)

加了两个可能有帮助的选项,可以试试,还不行的话我也没办法了

6. **Compression "streamFiles" 压缩 "streamFiles" 选项**
启用这个选项可以减少内存消耗,但可能导致某些压缩软件不支持生成的压缩文件,详见[说明](https://stuk.github.io/jszip/documentation/api_jszip/generate_async.html#streamfiles-option)
7. **Series mode 串行模式**
启用这个选项可以使下载和压缩变为串行任务以减少内存消耗
如果经常出现 `RangeError: Array buffer allocation failed` 错误,可以尝试启用它

取消下载的优化也完成了