Tsuk1ko / nhentai-helper

🔞 A user script make it easy for you to download nHentai manga as zip (or cbz), also support some mirror sites. 一个可以让你轻松打包下载 nHentai 本子的用户脚本,并支持一些镜像站
https://greasyfork.org/scripts/375992
GNU General Public License v3.0
579 stars 45 forks source link

[Feature Request] 手动标记漫画的“已下载”状态 #25

Closed TenviLi closed 2 years ago

TenviLi commented 2 years ago

场景:

功能点:

Tsuk1ko commented 2 years ago

近期暂时先不迭代了,打算 ts 重构一波,单文件已经太难维护了

TenviLi commented 2 years ago

近期暂时先不迭代了,打算 ts 重构一波,单文件已经太难维护了

有兴趣一起开发吗

推荐使用,lisonge/vite-plugin-monkey, asadahimeka/vite-plugin-tm-userscript

Tsuk1ko commented 2 years ago

哇谢谢,我也想找类似的插件

后续开发等重构完再说吧,先摸一段时间(

TenviLi commented 2 years ago

哇谢谢,我也想找类似的插件

后续开发等重构完再说吧,先摸一段时间(

哟,哥们儿,看到你更新了代码

Tsuk1ko commented 2 years ago

是,重构完了,然后慢慢填坑

Tsuk1ko commented 2 years ago

我突然在想啊,这个手动标记已下载的必要性在哪里

目前脚本判断是否是下载过的本子有两点:本子ID,本子日文名(删除所有空白符然后取MD5)

其中后者在本子列表页必须通过 API 获得,绝大部分情况下不同汉化组上传的本子日文名都会是一致的,英文名是不同的(有汉化组后缀)所以不能用于判断,当出现不同版本例如数字版或者无修正时日文名才会不同(用户会下载不同版本来替换库存也是正常行为),当然不排除有意外情况

在列表页中看到的置灰是通过本子ID进行判断的,点击下载后调用 API 时会通过日文名进行判断,这已经可以对绝大部分重名情况进行判断了

如果想增加这个手动标记功能,那么

  1. 如果只记录ID,感觉没什么意义,因为如果你能自己判断出这个本子是下过的那么直接略过就好了
  2. 如果要调用 API 拿到日文名去记录,异步操作就涉及到体验问题和异常处理了,所以不太想这么做(懒),并且这个日文名判断并不能立即应用在列表页的其他同名本子上,最终还是需要靠你的记忆力来判断

综上做这个功能感觉不是很值

TenviLi commented 2 years ago

我突然在想啊,这个手动标记已下载的必要性在哪里

目前脚本判断是否是下载过的本子有两点:本子ID,本子日文名(删除所有空白符然后取MD5)

其中后者在本子列表页必须通过 API 获得,绝大部分情况下不同汉化组上传的本子日文名都会是一致的,英文名是不同的(有汉化组后缀)所以不能用于判断,当出现不同版本例如数字版或者无修正时日文名才会不同(用户会下载不同版本来替换库存也是正常行为),当然不排除有意外情况

在列表页中看到的置灰是通过本子ID进行判断的,点击下载后调用 API 时会通过日文名进行判断,这已经可以对绝大部分重名情况进行判断了

如果想增加这个手动标记功能,那么

  1. 如果只记录ID,感觉没什么意义,因为如果你能自己判断出这个本子是下过的那么直接略过就好了
  2. 如果要调用 API 拿到日文名去记录,异步操作就涉及到体验问题和异常处理了,所以不太想这么做(懒),并且这个日文名判断并不能立即应用在列表页的其他同名本子上,最终还是需要靠你的记忆力来判断

综上做这个功能感觉不是很值

对于「多个标题的重复本子」,这种场景确实没什么好办法了

只能一个一个【记录ID】,来手动标记已下载

人的记忆不可靠啊,过了几天就已经忘记了 某某封面是否已经下载过了

比如说我的习惯吧,我会把感兴趣的 Tag 从头到尾所有本子都筛选后下载(往往一次性可能下载上千个),下一次只需要再打开这个 Tag,增量地下载新增了本子的页面即可,很大程度上依赖你的【置灰】功能的

如果新增的本子中,发现有「旧本子又发了一遍新标题」(或者说单纯只是自己忘记了有没有下载过)的情况,如果能实现手动标记的功能,那么在上一次下载时就已经顺手标记好了,不需要这次下载再去搜一下本地目录看看本子是否存在,能省下很多”记忆力的考验“

Tsuk1ko commented 2 years ago

那我就按照简单的方式来做吧

  1. 手动忽略仅记录ID
  2. 再次点击可以撤销忽略
  3. 设置中加入是否显示忽略按钮的选项,默认关闭(可能有人不希望多显示一个忽略按钮,感觉会眼花)
TenviLi commented 2 years ago

那我就按照简单的方式来做吧

  1. 手动忽略仅记录ID
  2. 再次点击可以撤销忽略
  3. 设置中加入是否显示忽略按钮的选项,默认关闭(可能有人不希望多显示一个忽略按钮,感觉会眼花)

中肯的,考虑周到的

Nuo-Mituan commented 2 years ago

那我就按照简单的方式来做吧

  1. 手动加载仅记录ID
  2. 再次点击可以取消加载
  3. 设置中是否加入显示某个按钮的选项,默认关闭(可能不希望显示一个按钮,感觉会眼花)

最好能在非本子详情页就能直接忽略

Tsuk1ko commented 2 years ago

最好能在非本子详情页就能直接忽略

列表页和详情页都会有

Tsuk1ko commented 2 years ago

注:根据实际体验优化了一下

在本子详情页:忽略和取消忽略会应用到 ID 和本子名(因为在这里拿到本子信息不需要额外的网络请求)

在本子列表页:当没获取过本子信息之前(点击过下载按钮前)只会应用到 ID,之后则会应用到 ID 和本子名