本程序修改自开源项目 TaoSync V0.3.2
在原有的项目基础上主要改动,新增通过 MoviePilot 入库通知自动同步下载的影视文件到 OpenList;并刷新,利用 OpenList 的 Strm 驱动自动更新 Strm 文件自动入库。
如果好用,请 Star!非常感谢! GitHub DockerHub
Webhook 与自动同步使用方法点击展开截图
由于更新频繁,截图仅供参考,以实际为准
聚合消息通知用来发消息给OpenlistSync外部消息转发用来通知OpenlistSync的消息至MoviePilot可选- 关于
Openlist的驱动配置我建议吧所有网盘用别名聚合到一起,只要支持302的网盘均可以,然后Strm驱动配置到别名路径即可,保存Strm本地路径记得开启选择本地媒体strm路径内
- 当前使用通知渠道选
HTTP请求 - HTTP请求 请求方法
POST请求URLhttp://ip:8023/webhook - 请求头
{
"Content-Type": "application/json"
}
- 请求参数
{
"title": "${title}",
"text": "${text}",
"apikey": "如果配置了WEBHOOK_APIKEY则需要此字段"
}
- 消息类型 选择
整理入库
- 启用插件
- 开启通知
- 消息类型
其他
- 方式选
自定义 - 请求地址
http://moviepilot_ip:port/api/v1/plugin/MsgNotify/send_json?apikey=api_token - 请求方法
POST - 请求提类型
application/json - 标题参数名
title - 是否需要内容
需要 - 内容参数名
text
注意:v0.0.6 版本数据库不兼容 <v0.0.5 本版本(v0.0.6)进行了大规模重构,移除了对旧版数据库(alist相关表名)的兼容支持。如果您从 v0.0.5 升级,需要手动处理数据或删除旧数据库文件(
data/openlistsync.db)重新配置。
重要 使用本工具前你必须了解并且会使用 OpenList;本工具没有集成 OpenList,你需要额外启动 OpenList
警告!不要在外网暴露本系统,否则后果自负! 本系统已经做了一定的安全方面的工作,但仍不能保证绝对安全。如确实需要,请务必使用强密码,并使用
SSL
把本地文件备份到多个网盘或FTP之类的存储,或者在多个网盘之间同步文件等;
可以定时扫描指定目录下文件差异,让目标目录与源目录相同(全同步模式);或仅新增存在于源目录,却不存在于目标目录的文件(仅新增模式)
可以设置一次性任务(cron方式设置年月日时分秒,将在指定时间执行一次),可在闲时自动从特定网盘下载文件到本地
- 开源免费,接受任意审查,几乎支持所有常用平台
- windows-amd64
- windows-arm64
- darwin-amd64
- darwin-arm64
- linux-amd64
- linux-arm64
- linux-386
- linux-arm-v6
- linux-arm-v7
- linux-s390x
- linux-ppc64le
- Github Actions自动打包与发布构建好的可执行程序,过程公开透明,无投毒风险
- 支持Docker,下载即用
- 干净卸载,不用的时候删掉即可,无任何残留或依赖,不影响系统里其他程序
- 密码加密不可逆,永远不会泄露您的密码,敏感信息均被加密,支持重置密码
- 完全离线运行(仅连接 OpenList),永不上传用户隐私
- 完善的错误处理,稳定可靠,逻辑自洽;可能出错,但永不崩溃(我猜的)
- 完善的日志,所有错误都会被记录
- 引擎管理,可以自由增删改查
OpenList/AList - 作业管理,可以新增/删除/启用/禁用/编辑/手动执行作业
- 支持排除项规则,可以排除指定目录或文件不同步
- 仅新增、全同步、移动三种模式
- 定时同步支持间隔、
cron、手动调用 - 同步进度、总体进度、同步速度、实时同步文件、预估时间等实时可视化查看
- 存储可控,合理配置任务记录与日志保留天数,可以控制本程序所占用存储在可控范围内
- 支持钉钉群机器人或server酱通知,可在任务成功或失败后发送通知
- 可执行程序
前往Release下载对应平台的可执行程序,直接执行
提示 开机自启、守护进程等可以参考OpenList的方式,把其中的
openlist改为openlistsync;注意,本程序不需要server参数
- docker
docker-compose.yaml 示例:
version: "3.8"
services:
openlistsync:
image: syscc/openlistsync:latest
container_name: openlistsync
restart: always
network_mode: bridge
ports:
- "8023:8023"
user: "1000:1001"
environment:
- WEBHOOK_DELAY=60 # Webhook延迟触发秒数 取决是否需要等MoviePilot刮削完成后同步,如果不需要可以设置为3
# - WEBHOOK_APIKEY= # Webhook API Key;若设置,则请求必须包含 apikey 字段且值匹配;若留空则不校验
# - WEBHOOK_OPENLIST_NAME=OpenList # Webhook 自动创建任务时使用的 OpenList 引擎备注名;若未配置或留空,默认使用第一个引擎
- TVsource=/media/电视剧 # 电视剧源根目录
- MOVsource=/media/电影 # 电影源根目录
# DST开头变量适用于临时存放(如追新电视剧),整季完结后可删除并同步至SYNC路径,非必要不需要启用!
# - DST_TV_TARGETS=/shanct/电视剧 # 优先同步电视剧到此集合;支持 ,;: 分隔
# - DST_MOV_TARGETS=/shanct/电影 # 优先同步电影到此集合;支持 ,;: 分隔
# - DST_REFRESH_TV=/media/电视剧,/videos/电视剧 # DST 同步时的刷新集合;支持 ,;: 分隔
# - DST_REFRESH_MOV=/media/电影,/videos/电影 # DST 同步时的刷新集合;支持 ,;: 分隔
- SYNC_TV_TARGETS=/115/videos/电视剧,/ODC/tv{max}/电视剧 # 回退电视剧同步集合;{max} → 自动匹配最大数字后缀目录
- SYNC_MOV_TARGETS=/115/videos/电影,/ODC/mov{max}/电影 # 回退电影同步集合;{max} → 自动匹配最大数字后缀目录
- SYNC_REFRESH_TV=/115/videos/电视剧,/ODC/tv{max}/电视剧,/videos/电视剧 # SYNC 同步时的刷新集合
- SYNC_REFRESH_MOV=/115/videos/电影,/ODC/mov{max}/电影,/videos/电影 # SYNC 同步时的刷新集合
- SECOND=true # 启用二级目录(从 webhook 文本“类别:xxx”解析为二级路径,电视剧与电影均支持)
volumes:
- ./data:/app/data访问 http://ip:8023
如果你没有修改,默认账号为admin,密码请到日志中查看输出,登录后请立即前往系统设置修改密码
注意 如果没有显示这个日志,可以到同级目录的
data/log/sys_xxx.log文件查看,通常在第一行
进入系统后先到引擎管理菜单创建引擎,然后前往作业管理创建同步作业
点击展开配置项
配置优先级:data/config.ini>环境变量>默认值;前一个存在,则后边都将被忽略。修改配置需重启程序或Docker。
data/config.ini文件示例(如该文件存在,则优先级最高)
[OpenlistSync]
# 运行端口号
port=8023
# 登录有效期,单位天
expires=2
# 日志等级:0-DEBUG,1-INFO,2-WARNING,3-ERROR,4-CRITICAL;数值越大,产生的日志越少,推荐1或2
log_level=1
# 控制台日志等级:适用于v0.2.3及之后版本,与上同
console_level=2
# 系统日志保留天数,该天数之前的日志会自动清理,单位天,0表示不自动清理
log_save=7
# 任务记录保留天数,该天数之前的记录会自动清理,单位天,0表示不自动清理
task_save=0
# 任务执行超时时间,单位小时。一定要设置长一点,以免要备份的东西太多
task_timeout=72上边的文件默认不存在,如需要,您可以手动在程序同级目录的data目录下创建config.ini,并填入上边的内容。注意,文件应使用UTF-8编码
| config.ini | Docker环境变量 | 描述 | 默认值 |
|---|---|---|---|
| port | OPENLISTSYNC_PORT | 运行端口号 | 8023 |
| expires | OPENLISTSYNC_EXPIRES | 登录有效期,单位天 | 2 |
| log_level | OPENLISTSYNC_LOG_LEVEL | 日志等级:0-DEBUG,1-INFO,2-WARNING,3-ERROR,4-CRITICAL;数值越大,产生的日志越少,推荐1或2 | 1 |
| console_level | OPENLISTSYNC_CONSOLE_LEVEL | 控制台日志等级:适用于v0.2.3及之后版本;与上同 | 2 |
| log_save | OPENLISTSYNC_LOG_SAVE | 系统日志保留天数,该天数之前的日志会自动清理,单位天,0表示不自动清理 | 7 |
| task_save | OPENLISTSYNC_TASK_SAVE | 任务记录保留天数,该天数之前的记录会自动清理,单位天,0表示不自动清理 | 0 |
| task_timeout | OPENLISTSYNC_TASK_TIMEOUT | 任务执行超时时间,单位小时。一定要设置长一点,以免要备份的东西太多 | 72 |
| - | TZ | 时区 | Asia/Shanghai |
- 端点:
POST /webhook - 行为:
- 解析标题中“名称(年份)”并识别类型(是否包含
Sxx/Exx/Exx-Exx→ 电视剧) - 如果存在同名且启用的作业,默认延迟 60 秒后触发手动执行(可通过
delay覆盖) - 若不存在同名作业:检查源存在后自动创建仅手动作业并立即执行;OpenList API 始终使用第一个引擎
- 任务完成后根据刷新目标集合自动刷新到电影目录或电视剧最大季目录,并发送通知
- 解析标题中“名称(年份)”并识别类型(是否包含
| 变量 | 说明 | 示例 |
|---|---|---|
WEBHOOK_DELAY |
Webhook 延迟触发时间(秒) | 60 |
WEBHOOK_APIKEY |
Webhook API Key,可选。设置后,Webhook 请求必须包含 apikey 字段且值匹配 |
123456 |
WEBHOOK_OPENLIST_NAME |
Webhook 自动创建任务时使用的 OpenList 引擎备注名;若未配置或留空,默认使用第一个引擎 | OpenList |
TVsource |
电视剧源根 | /media/电视剧 |
MOVsource |
电影源根 | /media/电影 |
DST_TV_TARGETS DST_MOV_TARGETS |
优先同步根集合(原样使用),存在同名目录时仅同步到这里;仅在末尾追加“名称(年份)”;支持 ,;: 分隔 |
例如 /shanct/电视剧 或 /shanct/电影 |
SYNC_TV_TARGETS |
电视剧同步目标根集合,用 ,;: 分隔,支持 {max};仅在末尾追加“名称(年份)” |
例如 /115/videos/电视剧,/ODC/tv{max}/电视剧 或 /115/videos/tv,tv{max}/tv |
SYNC_MOV_TARGETS |
电影同步目标根集合,支持 {max};仅在末尾追加“名称(年份)” |
例如 /115/videos/电影,/ODC/mov{max}/电影 或 /115/videos/mov,mov{max}/mov |
DST_REFRESH_TV DST_REFRESH_MOV |
当命中 DST_* 同步集合时使用的刷新集合;仅在末尾追加“名称(年份)”;支持 ,;: 分隔 |
例如 /media/电视剧,/videos/电视剧 或 /media/电影,/videos/电影 |
SYNC_REFRESH_TV |
当走 SYNC_* 同步集合时使用的刷新集合(仅在末尾追加“名称(年份)”) |
例如 /115/videos/电视剧,/ODC/tv{max}/电视剧,/videos/电视剧 |
SYNC_REFRESH_MOV |
当走 SYNC_* 同步集合时使用的刷新集合(仅在末尾追加“名称(年份)”) |
例如 /115/videos/电影,/ODC/mov{max}/电影,/videos/电影 |
SECOND |
启用二级目录(从 webhook 文本“类别:xxx”解析为二级路径);开启后源与目标都将拼接该二级目录;电视剧与电影均支持 | true |
- 占位符说明:
{max}占位符(支持任意层级)。语法:前缀{max}(如tv{max}、disk{max})。系统会自动扫描父目录下(如果未指定父目录则默认为根目录/)以该前缀开头的所有子目录,并选择数字后缀最大的那个。例如:/ODC/tv{max}/电视剧会扫描/ODC下的tv*,若有tv1~tv9,则替换为/ODC/tv9/电视剧。 - 源存在判定:
TVsource或MOVsource下存在名称(年份)目录才会创建作业。
GET/POST/PUT/DELETE /svr/openlist引擎管理(列表、子目录、增删改)GET/POST/PUT/DELETE /svr/job作业管理(列表、详情、手动执行、启用/禁用、中止、删除)GET/POST/PUT/DELETE /svr/notify通知配置(列表、增删改、测试)POST /webhookWebhook 触发(标题解析、自动建作业与刷新)。支持参数apikey(URL参数或Body参数),若服务端配置了WEBHOOK_APIKEY则必须提供且匹配。
OpenlistSync的排除项规则是一种类似gitignore的规则;OpenlistSync规定的排除项根目录为同步来源或目标目录,例如你的来源目录为/baidu/pan/,使用规则/123321/*将忽略目录/baidu/pan/123321/下的文件;使用/baidu/*不会有效果。
.* 表示忽略所有 . 开头的文件和目录
*.a 表示忽略所有 .a 结尾的文件
/a.jpg 表示仅仅忽略项目根目录下的 a.jpg 文件,不包括 /abc/a.jpg
data/: 表示忽略data目录下的所有内容,不忽略 data 文件
/data: 表示忽略根目录下的data文件
/*.pdf: 表示忽略/a.pdf,不忽略 /doc/a.pdf
**/a.txt: 表示忽略/a.txt,a/a.txt,a/b/a.txt等
a/**/b.txt: 表示忽略a/b.txt, a/x/b.txt,a/x/y/b.txt等
/mtk/do.doc 表示过滤某个具体文件
fd1/* 表示忽略/fd1/,/fd0/df1/等下所有文件
/fd1/* 表示忽略/fd1/下所有文件,不包括/fd0/fd1/,/fd2/fd1/等





