-
Notifications
You must be signed in to change notification settings - Fork 7
SystemDesign
在 Cloud189 Auto Save 的开发过程中,我们始终坚持**单层目录(Flat Directory)**的设计理念。本页将解释为什么我们不采用多级嵌套文件夹,以及如何在此基础上实现高效管理。
天翼云盘的 API 对多级嵌套目录的操作非常繁琐。每一级目录的创建和查询都需要单独的请求,大量嵌套会导致转存任务极其缓慢,且容易触发接口限频。
媒体服务器(Emby/Jellyfin)在处理 .strm 文件时,单层目录结构(例如:/电影/阿凡达 (2009).strm)能让刮削引擎最快定位到电影名称。
在多级目录中,删除文件后往往会留下大量空文件夹,长期积累会导致云盘索引混乱。
通过正则或 AI,我们将信息集成在文件名中(如 S01E01.strm)。这比 S01/E01/video.strm 更加直观,且在文件列表中一眼可见全部集数。
在 Emby 中,您可以将不同的单层目录添加为不同的媒体库(如:电影、动漫、记录片),通过 Emby 的界面实现完美的视觉分类,而无需在物理存储上搞嵌套。
简洁即高效。 我们的目标是让转存任务尽可能快地完成,并生成标准化的 STRM 文件。如果您确实需要多级目录,建议在本地挂载后的文件系统层面使用脚本进行二次整理,而不建议在云盘转存阶段执行复杂操作。
项目会接入部分外部服务,但尽量保持主项目职责清晰:
- CloudSaver:负责公开分享资源搜索,返回可用于创建任务的天翼分享链接。
- 影巢 Browser Bridge:负责常驻浏览器和影巢网页签名接口,不在主项目中重实现 WASM 签名。
- 影巢 SDK:主项目侧负责配置读取、OAuth、Cookie 兜底、Bridge 调用和资源归一化。
影巢账号密码只保存在主项目配置中。Bridge 侧只接收主项目发起的登录请求,并可把浏览器登录态加密保存到 Postgres 云数据库。这样可以避免把影巢凭证写入公开部署的 Bridge 容器环境变量。
数据库中保留了 enableSystemProxy 字段,用于兼容历史任务数据。当前系统代理模式已移除,任务查询和执行会优先处理普通任务;遇到旧系统代理任务时,相关操作会提示该模式已移除。
任务执行会维护转存记录缓存,避免每次都重复扫描相同文件。新增的任务缓存清理入口只清理指定任务的执行记录,不删除云盘文件,目的是让下一次执行重新计算差异。
TMDB 信息也允许手动覆盖。手动绑定会记录 tmdbId、媒体类型、标题和季度,后续刮削、整理器和 STRM 生成优先使用这些人工确认过的元数据。