Cp0204 / quark-auto-save

夸克网盘签到、自动转存、命名整理、发推送提醒和刷新媒体库一条龙
GNU Affero General Public License v3.0
518 stars 76 forks source link

嵌套文件扫描 #4

Closed DoveAz closed 6 months ago

DoveAz commented 6 months ago

:sparkles: 支持嵌套文件扫描 :sparkles: 为了避免深层扫描任务强度过大,增加配置allowSubDirectoryRegList,符合规则的子目录才进行递归扫描

Cp0204 commented 6 months ago

Hi!感谢PR😃

“子目录”更新之前也有个别用户提过,但我当时觉得不是主要需求,另外也可以新建一个任务来实现,就没去做。

有个两个问题我觉得需要再考虑下:

  1. do_save_task() 是执行整个 task item 的方法, loop 子目录不是很合适,这样会导致重复 get_id_from_url() get_stoken() 方法。 历史原因,以前整个过程全写在一起了,现在看来,从 获取分享文件列表 开始,“目录的检查转存” 另起一个方法可能更合适。

  2. 如你所说,深层扫描任务强度会很大,相对于全局 allowSubDirectoryRegList,我倾向于给每个 task 加个参数,单独控制是否检查子目录。出发点是对某个 task 更精确地控制,如:

    {
      "taskname": "测试-魔法匹配剧集(这是一组有效分享,配置CK后可测试任务是否正常)",
      "shareurl": "https://pan.quark.cn/s/d07a34a9c695#/list/share/7e25ddd87cf64443b637125478733295-夸克自动转存测试",
      "savepath": "/夸克自动转存测试",
      "pattern": "$TV",
      "replace": "",
      "enddate": "2099-01-30",
      "emby_id": "",
      "update_subdir" : true //可以是 bool 可以是 list,当是 true 时更新所有嵌套,当是 list 时只更新符合规则的
    }
 if task.get("update_subdir"):
  if isinstance(task["update_subdir"], list):
    #...

你有什么想法可以继续讨论。

DoveAz commented 6 months ago

Hi!感谢PR😃

“子目录”更新之前也有个别用户提过,但我当时觉得不是主要需求,另外也可以新建一个任务来实现,就没去做。

有个两个问题我觉得需要再考虑下:

  1. do_save_task() 是执行整个 task item 的方法, loop 子目录不是很合适,这样会导致重复 get_id_from_url() get_stoken() 方法。 历史原因,以前整个过程全写在一起了,现在看来,从 获取分享文件列表 开始,“目录的检查转存” 另起一个方法可能更合适。
  2. 如你所说,深层扫描任务强度会很大,相对于全局 allowSubDirectoryRegList,我倾向于给每个 task 加个参数,单独控制是否检查子目录。出发点是对某个 task 更精确地控制,如:
   {
     "taskname": "测试-魔法匹配剧集(这是一组有效分享,配置CK后可测试任务是否正常)",
     "shareurl": "https://pan.quark.cn/s/d07a34a9c695#/list/share/7e25ddd87cf64443b637125478733295-夸克自动转存测试",
     "savepath": "/夸克自动转存测试",
     "pattern": "$TV",
     "replace": "",
     "enddate": "2099-01-30",
     "emby_id": "",
     "update_subdir" : true //可以是 bool 可以是 list,当是 true 时更新所有嵌套,当是 list 时只更新符合规则的
   }
 if task.get("update_subdir"):
  if isinstance(task["update_subdir"], list):
    #...

你有什么想法可以继续讨论。

我觉得你说的非常合理 🐂🍺

Cp0204 commented 6 months ago

参数类型直接用 str ,多个表达式可以用 | 分割,这样非常灵活,json也好写;

所有子文件夹更新:.* 单个子文件夹更新:4k 多个子文件夹更新:4k|1080p

待会我提交