跳转至

扫描与监视的细节

扫描的时机

扫描会通过以下四种方式触发:

  • 启动 ComicLib 时,进行一次完整扫描
  • ComicLib 启动后,当 watch=True 时,监视到 content 环境变量指示的目录下发生创建/修改事件(仅限于文件)
  • 手动运行 comicscan 命令进行完整扫描
  • 调用 scan 接口扫描特定的文件/文件夹,如:
from comiclib.scan import scan
scan(["content/comic/to/scan"])  # 路径应为 `content` 环境变量指示的目录的子路径
# 对于文件夹,这意味着尝试将该文件夹本身作为一个漫画,而不是搜寻其下的多个漫画

执行以上命令时使用相同的环境变量。如果设置涉及到相对路径,也要保持工作目录一致。

扫描的流程

  • content 环境变量指示的目录下的所有文件/文件夹都是漫画的候选者
  • 相对路径是漫画的重要标识。这意味着如果一本漫画被移动到了别处,ComicLib 会认为这是另一本漫画;重新扫描时会跳过同一路径的漫画,除非 skip_exists=False;将漫画库整体移到别处并修改 content 环境变量保持相对关系不变则不需要重新扫描。
  • ComicLib 的主体仅负责遍历漫画库,漫画文件的判断都是通过扫描脚本完成的。当有一个扫描脚本承认该路径是漫画则计入数据库。
  • 漫画的元数据解析、缩略图提取也是由扫描脚本负责。
  • 在完整扫描时,若扫描脚本出错会停止整个扫描以让用户确定错误,但扫描进度得以保留。
  • 监视时遇到的错误会忽略。