MoviePilot项目中文件整理屏蔽词机制的优化思路
【免费下载链接】MoviePilot NAS媒体库自动化管理工具 项目地址: https://gitcode.com/gh_mirrors/mo/MoviePilot
背景介绍
MoviePilot作为一款影视资源管理工具,其文件整理功能是核心特性之一。在实际使用中,用户经常会遇到需要排除某些特殊类型文件的情况,比如特典、花絮等内容。项目通过正则表达式匹配机制实现了文件屏蔽功能,但这一机制在实际应用中存在一些值得优化的地方。
现有机制分析
当前版本(2.1.6)的文件屏蔽词功能采用正则表达式匹配整个文件路径,而不仅仅是文件名。其默认的正则表达式为:
(?i)\b(CDs|SPs?|Scans|Bonus|映像特典|特典CD|specials?|Menu|Previews?|/mv|Gallery|Samples?|Extras?|Spans?)\b
这种设计会导致当文件路径中的任何部分(包括父目录)包含屏蔽词时,整个文件都会被忽略。例如,当主剧集目录名中包含"SP"字样时,即使该目录下的电影文件本身并非特典内容,也会被错误地屏蔽。
技术优化方案
方案一:路径匹配优化
可以将正则表达式修改为仅匹配特定目录层级的模式:
(?i)\/(CDs|SPs?|Scans|Bonus|映像特典|特典CD|specials?|Menu|Previews?|/mv|Gallery|Samples?|Extras?|Spans?)\/
这种修改确保只有当屏蔽词出现在路径分隔符之间(即作为目录名的一部分)时才会触发屏蔽,避免了文件名中包含相关词汇导致的误判。
方案二:手动入库模式
考虑到用户可能有特殊需求,可以增加手动入库时的选项控制:
- 在手动入库界面添加"忽略屏蔽词"复选框
- 当勾选时,临时禁用屏蔽词检查
- 入库完成后恢复原有设置
这种设计既保持了自动入库时的严格过滤,又为特殊情况提供了灵活性。
实现建议
从技术实现角度,建议采用策略模式来管理不同的屏蔽策略:
- 定义
ShieldStrategy接口,包含shouldShield(path)方法 - 实现不同的策略类:
FullPathShieldStrategy:当前的全路径匹配策略FileNameShieldStrategy:仅文件名匹配策略DirectoryShieldStrategy:仅目录名匹配策略
- 根据使用场景动态切换策略
这种设计具有良好的扩展性,未来可以轻松添加新的匹配策略而不影响现有代码。
总结
文件屏蔽功能是资源管理工具中的重要特性,合理的匹配策略能显著提升用户体验。通过优化正则表达式或引入策略模式,可以更精准地控制文件整理行为,避免误判情况。对于特殊需求,提供手动控制选项也是提升灵活性的有效手段。这些优化将使MoviePilot在保持自动化优势的同时,更好地满足用户的个性化需求。
【免费下载链接】MoviePilot NAS媒体库自动化管理工具 项目地址: https://gitcode.com/gh_mirrors/mo/MoviePilot
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



