Files
Knowledge/项目/MM 索引工具.md

41 lines
2.4 KiB
Markdown

基于 bun 开发一个cli 工具,兼容 linux 和 windows 系统,索引数据库使用 sqlite。
nodejieba 进行入库前预分词,实现中文模拟匹配。
## 概念
- 库 - 一个普通的文件夹。内部文件作为视频存储以索引的存储。所有名字以 . 开头的文件和文件夹都不是视频文件,自动忽略。索引数据库为 .mm/index.db。
- 种子中文件与库中文件共有三种关联方式。
- hash。使用基于 sha1 的文件内容 hash。
- 文件名。
- 文件大小。文件大小相同可以认为是同一个文件。
- fileid 由数据库分配,拷贝的两个文件路径和名字不同,fileid 不同。
- 电影扫描。遍历文件夹,确保数据库中的索引和文件夹对应,以文件夹为准校对数据库中的内容。
- 忽略所有 . 开始的文件、以及 .torrent 文件。
- 如果有文件名和长度都一致,hash 就不用计算了,节省一次计算资源。
- 如果是对新增的文件夹扫描,直接使用 sha1sum 批量计算,不要一个一个文件计算。
## 命令
- mm use [[path]]
将路径 path 设置为当前库。写入配置文件持久保存,除非明确切换。配置文件保存在当前用户目录的 ~/.mm/config.json 中。如果不存在创建。库中的索引数据库如果不存在,则创建。
- mm tscan
扫描 torrent ,如果库内不存在则添加,如果重复不做处理。默认只扫描库的根目录下和 downloads 目录下的种子文件。
- mm tinfo [[torrent name/id]] [-a]
torrent name 使用模糊匹配
torrent id 由数据库生成唯一值,直接匹配。
没有传递 -a 参数查找 torrent name/id ,并列出种子内的相关信息。如果有多个,都列出。
传递 -a 查找指定的种子中文件是否在库中存在。如果能在.bf 中找到 file_id 也打印出来,不然打印 undefined。
- mm tout [[torrent id]]
将种子重新导出为一个文件,放到库的根目录。
- mm vscan [folder][-r]
仅支持 linux
folder 文件或文件夹,相对库的路径。传递 folder 时,只扫描相对库路径下的 folder 目录或文件。不传递时默认为全库扫描。
-r 参数控制扫描下一级子目录。默认不扫描。
- mm vtag [-d] [[file_id]] [[tag name]]
没有传递 -d 参数给指定文件打标签,如果标签不存在,先创建标签。
传递 -d 参数,移除文件上的标签。但不删除标签本身。