Skip to content

添加转换任务

转换任务是 OpenList to Stream 的核心功能,用于将 OpenList 中的文件列表转换为 STRM 流媒体文件。本页详细介绍如何创建和管理转换任务。

什么是转换任务?

转换任务定义了如何将 OpenList 中的特定路径转换为 STRM 文件:

  • 指定要转换的 OpenList 路径
  • 设置 STRM 文件的输出位置
  • 配置转换选项(更新模式、刮削等)
  • 设置定时执行计划

文件处理器链

系统在处理视频文件时,采用责任链模式依次执行多个处理器:

Order处理器功能说明
10FileDiscoveryHandler文件发现遍历 OpenList 文件树,收集所有文件信息
20FileFilterHandler文件过滤过滤出需要处理的视频文件
30StrmGenerationHandlerSTRM 生成生成 STRM 流媒体文件
40NfoDownloadHandlerNFO 下载下载媒体信息文件(三级优先级:本地 > OpenList > 刮削)
41ImageDownloadHandler图片下载下载海报、背景图、缩略图
42SubtitleCopyHandler字幕复制复制同目录下的字幕文件
50MediaScrapingHandler媒体刮削从 TMDB/AI 获取媒体信息
60OrphanCleanupHandler孤立文件清理清理不再存在的源文件对应的 STRM

处理器链执行流程

视频文件 → STRM生成 → NFO下载 → 图片下载 → 字幕复制 → 媒体刮削 → 清理孤立文件

每个处理器都可以独立启用或通过配置控制是否执行。

创建新任务

前置条件

在创建任务之前,请确保:

  • ✅ 已添加至少一个 OpenList 配置
  • ✅ 已准备好 STRM 文件的输出目录

第一步:访问任务管理页面

  1. 登录系统
  2. 在首页的 OpenList 配置列表中,找到对应的配置
  3. 点击操作列中的「管理任务」按钮
  4. 在任务管理页面中,点击「创建任务」按钮

创建和编辑任务使用同一套表单,编辑时会自动填入当前任务配置。

任务完整配置表单,包含基本信息、媒体库类型、STRM 路径、定时执行、媒体库刷新和执行选项

第二步:基本信息

任务名称

给任务起一个描述性的名字,例如:

  • 「电影库转换」
  • 「电视剧同步」
  • 「纪录片更新」

注意:任务管理页面已经关联到特定的 OpenList 配置,无需再次选择配置。

第三步:路径配置

任务路径

填写要转换的 OpenList 路径:

路径示例:

  • /电影 - 电影目录
  • /电视剧 - 电视剧目录
  • /纪录片 - 纪录片目录

注意:这是必填字段,需要填写完整的 OpenList 路径

媒体库类型

每个任务需要指定当前任务根目录下的媒体类型。系统会根据类型解释目录层级,并约束 TMDB 搜索和 AI 识别:

类型典型目录结构解析方式
电影电影名 (年份)/视频文件优先从视频的直接父目录提取标题和年份
电视剧剧名/Season 01/S01E01.ext从季目录上一级提取剧名,从目录和文件名提取季集
动画动画名/Season 01/01.ext动画名/[01].ext按电视剧刮削,并支持动画常见的绝对集数
自动识别沿用原有目录结构使用通用正则判断,仅建议旧任务兼容使用

配置建议

新任务请选择明确的电影、电视剧或动画类型。一个任务目录中不要混放不同媒体类型;需要混放时应拆分为多个任务。

STRM 输出路径

设置 STRM 文件的保存路径:

路径结构:

  • 固定前缀/app/backend/strm/(系统固定,不可修改)
  • 子路径:您可以自定义子路径(可选)

示例:

  • 子路径留空:/app/backend/strm/
  • 子路径为 movies/app/backend/strm/movies
  • 子路径为 tv/series/app/backend/strm/tv/series

路径建议

  • 按媒体类型创建不同的子路径(如 movies、tv、documentaries)
  • 避免使用特殊字符和中文路径
  • 保持路径结构简洁明了

第四步:更新模式

全量更新

每次执行时重新处理所有文件:

  • 优点:确保所有文件都是最新状态
  • 缺点:处理时间长,重复刮削

增量更新

只处理新增、修改或本地尚未生成 STRM 的文件:

  • 优点:执行速度快,节省资源
  • 缺点:首次执行仍需要完整读取 OpenList 目录

增量模式工作原理:

  1. 保存任务上一次成功扫描的远端文件特征
  2. 下次执行时只处理变化目录和本地缺失的 STRM
  3. 同一次任务复用目录索引、TMDB 结果和图片下载结果
  4. 处理完成后清理远端已删除文件对应的孤立 STRM

第五步:任务执行选项

需要刮削

开启后使用 TMDB 和可选的 AI 文件名识别生成 NFO、海报与背景图。使用前需要在系统设置中启用刮削并填写 TMDB API Key。

普通任务自动重命名媒体

默认关闭。开启后,手动执行和 Cron 定时任务会先根据 TMDB 结果重命名 OpenList 中的媒体目录和文件,再重新读取远端清单并生成 STRM。

启用条件:

  • 已开启“需要刮削”
  • 媒体库类型是电影、电视剧或动画,不能是自动识别
  • OpenList Token 具备重命名目录和文件的写入权限

无法识别、TMDB 未匹配或目标名称冲突时,系统保留原名称并继续任务,不会覆盖已有文件。该选项修改 OpenList 源文件;“STRM 文件名正则表达式”只修改本地生成的 .strm 文件名,两者互不替代。

完整命名规则和冲突保护见 目录检查与手动刮削

跳过目录结构不符合的视频

开启后,结构异常的视频不会生成 STRM,也不会进入刮削流程。建议先使用任务操作区的“检查目录结构”确认异常列表。自动识别任务不能启用此选项。

第六步:任务完成后刷新媒体库

需要先在系统设置中添加并测试 Emby 或 Jellyfin。任务支持:

刷新范围行为
不刷新默认值,不调用媒体服务器 API
刷新全部媒体库任务完成后提交全库刷新请求
刷新指定媒体库按媒体库 ID 校验目标,并提交精确目录更新

全量任务始终提交刷新;增量任务只有检测到视频变更、失效 STRM 清理或媒体重命名时才刷新。

选择“刷新指定媒体库”时,必须再选择媒体服务器和目标媒体库。系统不会在目标媒体库失效时按名称匹配,也不会回退为全部刷新。完整配置和异常处理见 Emby / Jellyfin 媒体库刷新

第七步:资源下载配置

字幕文件配置

  • 保留字幕文件:开启后自动下载视频同目录下的字幕文件

支持的字幕格式:

  • .srt - SubRip 字幕
  • .ass - Advanced Substation Alpha
  • .vtt - WebVTT 字幕
  • .ssa - SubStation Alpha
  • .sub - SubViewer
  • .idx - VobSub 索引

字幕下载逻辑:

  1. 获取视频所在目录的所有文件
  2. 筛选出字幕格式的文件
  3. 下载到 STRM 文件同一目录
  4. 自动避免重复下载

图片文件配置

  • 使用已有刮削信息:开启后优先使用本地文件

图片下载优先级(三级):

  1. 本地检查:本地是否存在 {baseFileName}-poster.jpg
  2. OpenList 下载:从 OpenList 同级目录下载
  3. TMDB 刮削:通过 API 获取媒体信息

支持的图片类型:

  • -poster.jpg - 海报图片
  • -fanart.jpg - 背景图
  • -thumb.jpg - 缩略图
  • 任意命名图片(降级策略)

NFO 文件配置

  • 生成 NFO 文件:自动生成 Kodi/Plex 兼容的媒体信息文件

NFO 下载优先级:

  1. 本地是否存在同名 NFO
  2. OpenList 是否存在同名 NFO
  3. 通过 TMDB/AI 刮削获取

第八步:定时设置

Cron 表达式

设置任务的自动执行时间(可选):

常用表达式:

表达式说明
0 2 * * *每天凌晨2点
0 */6 * * *每6小时
0 0 * * 0每周日午夜
0 0 1 * *每月1号午夜
0 0 * * 1-5工作日午夜

配置说明:

  • 留空表示不启用定时任务,只能手动执行
  • 使用标准 Cron 表达式格式
  • 系统会根据配置自动执行任务

第九步:保存和测试

保存任务

所有配置完成后,点击「保存」按钮创建任务。

注意

  • 任务名称和任务路径为必填项
  • STRM 子路径和 Cron 表达式为可选项
  • 系统会自动验证配置的有效性

管理现有任务

任务列表

在任务管理页面可以看到所有任务的状态:

任务管理页面,展示任务状态、配置摘要以及目录检查、手动刮削、编辑、立即执行和删除入口

任务名称OpenList 配置状态最后执行下次执行操作
电影库转换家庭媒体服务器✅ 运行中2024-01-15 02:002024-01-16 02:00执行/编辑/删除
电视剧同步家庭媒体服务器⏸️ 已暂停2024-01-14 20:00-启动/编辑/删除

执行任务

手动执行

  1. 在任务列表中找到要执行的任务
  2. 点击「立即执行」按钮
  3. 确认执行操作

查看执行状态

  • 等待中:任务已加入执行队列
  • 执行中:正在处理文件
  • 已完成:任务执行完成
  • 失败:执行过程中出现错误

查看执行详情

任务执行时,您可以查看:

  • 处理的文件数量统计
  • 成功/失败统计
  • 刮削结果统计(海报、NFO、字幕)
  • 详细的执行日志

编辑任务

  1. 在任务列表中找到要编辑的任务
  2. 点击「编辑」按钮
  3. 修改配置信息
  4. 点击「保存」确认修改

检查目录结构

任务操作区提供「检查目录结构」入口。进入时会先强制刷新 OpenList,并只读取任务根目录和第一层媒体目录,不会立即遍历整个媒体库。用户点击某个第一层目录的「检查」按钮后,系统才递归扫描该目录。

检查规则:

类型合法结构
电影电影名 (年份)/视频文件
电视剧剧名/Season 01/S01E01.ext,季目录也支持 S01第1季
动画动画名/Season 01/01.ext动画名/[01].ext
自动识别没有固定结构,检查时会提示先选择明确的媒体库类型

字幕、图片和 NFO 等辅助文件不会被列为结构异常。检查只用于诊断,不会移动、重命名或删除 OpenList 中的文件。重新点击「检查」会再次读取该目录的最新内容。

完整操作说明请参阅 目录检查与手动刮削

跳过目录结构不符合的视频

电影、电视剧和动画任务可以启用「跳过目录结构不符合的视频」:

  • 异常视频不会生成 STRM,也不会进入 AI 或 TMDB 刮削流程
  • 增量执行会清理此前为这些异常视频生成的本地 STRM 和刮削文件
  • 自动识别任务没有固定目录结构,因此不能启用此选项
  • 执行任务和检查页面使用同一套结构规则

启用前建议

先运行一次目录结构检查,确认规则符合当前媒体库。启用后,异常视频会从本次任务输出中排除。

手动刮削

任务操作区的「手动刮削」入口可以选择单个电影或剧集目录,预览 TMDB 信息、重命名计划和待上传文件。确认后任务会在后台异步执行,页面可查看进度,并在下载或上传失败后从中断阶段继续。

手动刮削支持使用标题、年份或 TMDB ID 修正自动匹配结果。电视剧还可以统一剧集根目录、季目录和媒体文件命名。详细说明请参阅 目录检查与手动刮削

暂停/启动任务

  1. 在任务列表中找到要管理的任务
  2. 点击「暂停」或「启动」按钮
  3. 暂停的任务不会自动执行,但仍可手动执行

删除任务

  1. 在任务列表中找到要删除的任务
  2. 点击「删除」按钮
  3. 在确认对话框中点击「确认删除」

删除警告

删除任务不会删除已生成的 STRM 文件,但会停止所有未来的自动执行。

任务执行详情

执行日志

每个任务执行都会生成详细的日志:

日志信息包括:

  • 开始和结束时间
  • 处理的文件数量
  • 成功/失败统计
  • 错误信息和堆栈跟踪
  • 刮削结果统计(NFO、海报、字幕)

性能统计

  • 处理速度:文件/秒
  • 网络请求:API 调用次数
  • 资源占用:CPU 和内存使用情况
  • 执行时长:总耗时

刮削统计

  • NFO 文件:成功/失败/跳过
  • 海报图片:成功/失败/跳过
  • 背景图片:成功/失败/跳过
  • 字幕文件:成功/失败/跳过

特殊配置项说明

并发控制配置

系统支持以下特殊的并发控制配置:

  • 最大并发任务数:控制同时运行的任务数量
  • 单任务最大文件处理数:限制单个任务处理的文件数量上限
  • 网络请求超时时间:设置 HTTP 请求的最长等待时间

错误处理配置

提供多种错误处理策略选择:

  • 失败重试:自动重试失败的文件,提高成功率
  • 跳过错误:跳过错误文件继续处理其他文件,保证整体进度
  • 停止执行:遇到错误时立即停止任务,便于快速定位问题

通知配置

在系统设置中启用 Apprise 后,普通任务和手动刮削到达终态时可发送成功、部分完成或失败通知。通知可以展示结构异常跳过、刮削未识别、重命名失败、媒体库刷新失败的完整路径和原因。详细配置见 Apprise 任务通知

常见问题

Q: 任务执行很慢怎么办?

A: 可以尝试以下优化:

  • 启用增量更新模式
  • 减少并发任务数
  • 开启「使用已有刮削信息」避免重复刮削
  • 检查网络连接质量
  • 考虑分批处理大量文件

Q: 如何处理大量文件?

A: 建议采用以下策略:

  • 按媒体类型分别创建任务
  • 使用增量更新模式
  • 设置合适的执行时间(避开高峰期)
  • 监控系统资源使用情况
  • 开启字幕和图片的本地优先模式

Q: STRM 文件无法播放?

A: 检查以下几点:

  • 确认 STRM 文件路径正确
  • 检查媒体服务器配置
  • 验证原始文件是否可访问
  • 查看任务执行日志
  • 检查 URL 编码设置

Q: 字幕文件没有下载?

A: 可能的原因:

  • 未开启「保留字幕文件」选项
  • OpenList 目录中不存在字幕文件
  • 字幕格式不支持
  • 查看执行日志确认是否有下载错误

Q: 图片文件没有下载?

A: 可能的原因:

  • 未开启相关刮削选项
  • 「使用已有刮削信息」设置不正确
  • OpenList 目录中不存在图片文件
  • TMDB API 未配置或无法访问

Q: 如何减少重复刮削?

A: 推荐配置:

  1. 开启「增量更新」模式
  2. 开启「使用已有刮削信息」
  3. 开启「保留字幕文件」
  4. 配置正确的图片下载优先级

最佳实践

1. 任务规划

  • 按媒体类型(电影、电视剧、纪录片)分别创建任务
  • 使用描述性的任务名称
  • 设置合理的执行时间

2. 路径管理

  • 保持 OpenList 路径和输出路径的一致性
  • 使用绝对路径避免路径混淆
  • 定期清理无用的任务和文件

3. 资源下载配置

  • 首次运行:关闭增量模式,全量刮削
  • 日常更新:开启增量模式 + 使用已有刮削信息
  • 有本地资源:开启字幕保留 + 本地图片优先

4. 性能优化

  • 优先使用增量更新
  • 合理设置并发数量
  • 监控系统资源使用
  • 开启本地优先模式减少 API 调用

5. 监控和维护

  • 定期查看执行日志
  • 设置错误通知
  • 及时处理失败的任务
  • 监控刮削成功率

现在您已经掌握了任务管理的全部内容,可以开始创建您的第一个转换任务了!如果遇到问题,可以查看 常见问题系统日志