Yuukiy / JavSP

汇总多站点数据的AV元数据刮削器
GNU General Public License v3.0
2.66k stars 228 forks source link

整理失败: File exists 同一番号下多个文件,第一次刮削时部分文件未下载完全,第二次刮削时 移动文件失败 #319

Closed fanwenlin closed 1 month ago

fanwenlin commented 3 months ago

问题详情

  1. 同一番号下多个文件(VR影片比较常见)
  2. 正在下载中,部分文件下载完成(后缀为.mp4),部分文件未下载完成(后缀为.mp4.qB!),进行第一次刮削,会将下载完成的进行移动整理
  3. 全部下载完成后,进行第二次刮削,提示“整理失败: File exists:”

由于是在nas上定时运行的,所以部分影片会出现这种情况 系统:Debian 12 运行方式:master分支make.bash编译后运行

运行方式

我是从源代码运行的

代理

日志

Screenshot 2024-06-09 at 14 58 52

运行截图(可选)

No response

提交须知

musnow commented 3 months ago

你这样的场景是会产生没有下载完成的文件就被移动了是吗? 你可以试试只刮削而不移动文件,将enable_file_move 设置为no。 https://github.com/Yuukiy/JavSP/blob/master/core/config.ini#L21

fanwenlin commented 3 months ago

@musnow 不是,没有下载完成的文件后缀是.mp4.qB!,不会被移动。 是部分下载完成的文件被移动后,第二次扫描时扫到的增量的文件 会和第一次移动的文件命名冲突

我遇到的这个case: 这个番号下有3个文件,第一个下载完了,剩下两个没下载完,第一次刮削时只移动了第一个文件,移动到"xxx/PRVR-078.mp4" 第二次刮削时,第二个文件下载完了,尝试移动到"xxx/PRVR-078.mp4",文件命名冲突了

我简单看了下代码,怀疑问题是扫描时发现目录下文件只有一个(实际是mp4只有一个,还有两个mp4.qB!在下载),所以文件命名上没有加上分片号(-CD1的后缀)?

musnow commented 3 months ago

对的,多分片会自己加cd-x,但是你没完成下载不会归类到多分片,所以场景不适用。 你应该是下载完成之后再执行程序,或者像上面一样只刮削而不移动文件。

fanwenlin commented 3 months ago

@musnow 是的,这样可以解决,但是我期望的场景是通过crontab定时执行,没有人为判断是否下载完整的步骤,这种场景下就会有问题,有没有比较好的解法或者兼容方案?

musnow commented 3 months ago

定时执行跟你下载有冲突,你可以把时间拉长一些,每x天一次什么的。 按理说整理也不是很常用的场景,难道你每天都得下载新的知识学习?

fanwenlin commented 3 months ago

你这个问题有点尖锐,我一时不知如何回答🙊 确实之前设置的扫描频率比较高,我调整下应该会好一些 另外有一些很久之前的冷门资源,下载的周期比较长,可能也会遇到这个问题

musnow commented 3 months ago

一定要追求完美的话,其实可以在qBittorrent搞webhook,完全下载后执行脚本从而执行整理。 下面是一些调用webhook的文章,你可以学习一下自己搞。 https://gist.github.com/noaione/2393f4a0f646d6afec2e8718c4b68f0d https://www.bilibili.com/read/cv31049477/