CrossWatch 路径匹配(Path Matching)详解:ID 对不上时,文件路径如何救场
发布时间:2026/10/23 2:00:09 锦皓数字建站
详解:ID 对不上时,文件路径如何救场`)
【免费下载链接】CrossWatchSynchronize your data across media servers, media agents and trackers. Keep your movies and shows in sync, no matter where you watch.项目地址https://gitcode.com/gh_mirrors/cr/CrossWatch点击查看免费下载当你的媒体同时存在于 Plex、Jellyfin、Emby 等多台服务器时CrossWatch 路径匹配Path Matching提供了 ID 之外的第二重保险只要两边文件路径的尾部结构一致CrossWatch 就能把它们识别为同一部影片或同一集剧集从而让观影历史、评分和播放进度照常同步。本文面向新手完整讲解这项功能何时该开、如何匹配、以及哪些情况会匹配失败。为什么 ID 匹配不够用不同媒体服务器会为同一部电影分配各自不同的内部 ID即使使用外部 IDIMDb、TMDB 等也常常出现一边有、一边缺的情况。CrossWatch 的常规流程是优先用 ID 匹配Strict ID matching 开启时只会用 IDID 无法解析时才轮到本文的主角——按文件路径兜底匹配。典型场景你把Alien (1979)从 Linux NAS 迁移到 Windows 媒体服务器两边路径完全不同盘符和分隔符但只要尾部目录结构一致就能对上/mnt/media/movies/Alien (1979)/Alien.mkv D:\Movies\Alien (1979)\Alien.mkv官方说明文档见 docs/path-matching.md。如何开启“Match by file path”该选项位于配对Pair配置中默认关闭打开对应 pair →General → Matching→ 勾选Match by file path开启前请先确认你的组合是否受支持支持情况说明✅ 支持Plex、Jellyfin、Emby 两两配对含同一服务器的不同实例❌ 不支持Kodi 目前暂不支持此选项勾选后该选项对双向 pair 的两个方向同时生效且与 Strict ID matching 可以叠加——它会允许路径兜底但不会开启按标题搜索匹配逻辑依然是保守的。UI 开关实现位于 assets/js/modals/pair-config/index.js。路径匹配到底怎么“对”核心逻辑在 cw_platform/path_matching.py 中规则可以概括为电影比较路径的最后 2 段影片文件夹 文件名剧集比较最后 3 段 季数 集数文件夹/剧集文件夹/文件名 SxxExx分隔符\与/和大小写会先做归一化所以 Linux 和 Windows 路径可以互认带显式分集编号的多部分电影Part 1 / Part 2会被区分开不会互相混淆整个过程不读取文件内容纯粹做字符串索引比对匹配成功的日志会记录为path_matchreason 文案为 “Matched by file path”并附带resolution_methodfile_path方便你在事件日志中确认它确实走了路径兜底。标签定义见 cw_platform/reason_labels.py同步侧对接逻辑见 providers/sync/_path_matching.py。支持什么、不支持什么数据类别是否支持 电影 / 剧集观看历史✅⭐ 评分✅ 播放进度Playback Progress✅ 追剧列表Watchlist、播放列表、收藏集❌ Trakt、SIMKL 等 Tracker 服务❌也就是说路径匹配是媒体服务器之间的兜底手段不会延伸到 Tracker 或列表类数据上。追剧列表页面例如哪些情况会匹配失败CrossWatch 要求恰好命中一个目标条目否则宁缺毋滥实现见 cw_platform/path_matching.py 的PathIndex.resolve日志 reason含义path_not_found目标库里没有路径尾部一致的条目path_ambiguous命中了多个条目路径重复为避免同步错数据而跳过path_id_conflict路径虽然一致但外部 ID 互相冲突同样跳过另外还有三种“天然对不上”的情况两边文件名不同比如一个叫Alien.mkv另一个叫Alien.1979.1080p.mkv尾部文件夹结构不同多套了一层目录或改名剧集季集编号不同一边 S01E01另一边用别的编号体系这些被跳过的条目都会写入日志便于你针对性地手动修正命名。性能影响与目录缓存需要开启前知道的一点路径兜底可能需要完整读取目标库的元数据目录包括未观看的条目大库首次同步会明显变慢。为此 CrossWatch 把目录缓存在本地 SQLite 中并在同一服务器、同一凭据、同一选库范围的 pair 和特性之间复用避免反复全量拉取目录超过24 小时或检测到服务器端内容变更信号 → 整体刷新服务器无法提供可信的变更信号时 → 缓存有效期缩短为5 分钟单个适配器内的检查结果最多缓存90 秒7 天未被使用的目录会被自动清理缓存策略的测试覆盖见 tests/test_path_catalog_cache.py匹配规则本身的单测见 tests/test_path_matching.py。另外在Maintenance → Retry provider items中还可以主动清空已保存的路径目录缓存并重建。小结 一句话总结ID 优先、路径兜底、严格到宁可跳过。如果你的 pair 是 Plex/Jellyfin/Emby 组合、且两边目录命名习惯一致那么打开 General → Matching 下的Match by file path就能在 ID 缺失时自动救回大量本会丢失的历史、评分和进度同步。记得开启后观察一次事件日志确认path_match按预期出现即可。赞分享【免费下载链接】CrossWatchSynchronize your data across media servers, media agents and trackers. Keep your movies and shows in sync, no matter where you watch.项目地址https://gitcode.com/gh_mirrors/cr/CrossWatch点击查看免费下载相关推荐如何快速掌握 path-to-regexp多段路径参数匹配终极指南如何快速掌握 path to regexp多段路径参数匹配终极指南 path to regexp 是一个功能强大的 JavaScript 库能够将路径字符串后端YTSage 下载指南从粘贴链接到批量保存3 步搞定 YouTube 视频下载YTSage 下载指南从粘贴链接到批量保存3 步搞定 YouTube 视频下载 想保存一个 YouTube 视频却被满屏的命令行参数劝退其实下载工具不一桌面应用音视频DeerFlow 文件上传路径系统path、virtual_path 与 artifact_url 三类路径全解析DeerFlow 文件上传路径系统path、virtual_path 与 artifact_url 三类路径全解析 DeerFlow 的文件上传系统会为每个上人工智能大模型AI AgentAgent 框架多智能体Agent 沙箱Agent 记忆MCP 服务后端前端上一篇如何用Nuklear打造高性能跨平台GUI单文件ANSI C库的终极指南下一篇BentoML Codespaces在云端 GPU 上用本地 IDE 开发 AI 应用附 bentoml code 全流程解析创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
锦
锦皓数字建站
深耕本土企业品牌数字化升级,专注原创端正雅致商务官网,从视觉设计到稳定运维全程保驾护航。