扫描与监视的细节
扫描的时机
扫描会通过以下四种方式触发:
- 启动 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 的主体仅负责遍历漫画库,漫画文件的判断都是通过扫描脚本完成的。当有一个扫描脚本承认该路径是漫画则计入数据库。
- 漫画的元数据解析、缩略图提取也是由扫描脚本负责。
- 在完整扫描时,若扫描脚本出错会停止整个扫描以让用户确定错误,但扫描进度得以保留。
- 监视时遇到的错误会忽略。