
luigi311/jellyplex-watchedJellyPlex-Watched是一款用于在本地环境中同步Jellyfin和Plex媒体服务器之间用户观看历史记录的工具。它通过文件名和内容提供商ID匹配电影/剧集,支持多服务器配置(通过逗号分隔参数),可自定义同步方向、用户/媒体库映射及筛选规则,适用于需要保持多平台观看记录一致性的场景。
适用于以下场景:
所有配置通过环境变量或.env文件设置,主要配置项如下:
| 环境变量 | 说明 | 默认值 |
|---|---|---|
DRYRUN | 仅记录操作到日志,不实际标记内容为已观看(测试配置时推荐启用) | "True" |
DEBUG | 启用额外调试日志信息 | "False" |
DEBUG_LEVEL | 日志级别:"info"(默认,常规信息)或"debug"(详细调试信息) | "info" |
SLEEP_DURATION | 同步任务执行间隔(秒),默认1小时 | "3600" |
LOGFILE | 日志文件路径 | "log.log" |
USER_MAPPING | 用户映射字典(不同服务器用户名不同时),格式:{"用户A":"用户B",...} | {} |
LIBRARY_MAPPING | 媒体库映射字典(不同服务器库名称不同时),格式:{"库A":"库B",...} | {} |
BLACKLIST_LIBRARY | 黑名单媒体库(逗号分隔,映射后名称同样生效) | "" |
WHITELIST_LIBRARY | 白名单媒体库(逗号分隔,仅同步指定库) | "" |
BLACKLIST_LIBRARY_TYPE | 黑名单库类型(如"Movies",逗号分隔) | "" |
WHITELIST_LIBRARY_TYPE | 白名单库类型(如"TV Shows",逗号分隔) | "" |
BLACKLIST_USERS | 黑名单用户(逗号分隔,映射后名称同样生效) | "" |
WHITELIST_USERS | 白名单用户(逗号分隔,仅同步指定用户) | "testuser1,testuser2" |
| 环境变量 | 说明 |
|---|---|
PLEX_BASEURL | Plex服务器URL列表(逗号分隔多服务器),例:"[***]" |
PLEX_TOKEN | Plex访问令牌(推荐使用,直接连接服务器),逗号分隔多服务器 |
SSL_BYPASS | 是否跳过SSL证书主机名验证(证书错误时设为"True") |
SYNC_FROM_PLEX_TO_JELLYFIN | 是否从Plex同步到Jellyfin |
SYNC_FROM_PLEX_TO_PLEX | 是否在多个Plex服务器间互相同步 |
若不使用令牌,可配置
PLEX_USERNAME、PLEX_PASSWORD、PLEX_SERVERNAME(均为逗号分隔多服务器)
| 环境变量 | 说明 |
|---|---|
JELLYFIN_BASEURL | Jellyfin服务器URL列表(逗号分隔多服务器),例:"[***]" |
JELLYFIN_TOKEN | Jellyfin API令牌(通过管理面板创建),逗号分隔多服务器 |
SYNC_FROM_JELLYFIN_TO_PLEX | 是否从Jellyfin同步到Plex |
SYNC_FROM_JELLYFIN_TO_JELLYFIN | 是否在多个Jellyfin服务器间互相同步 |
使用预构建镜像(推荐):
bashdocker pull luigi311/jellyplex-watched:latest
或本地构建:
bashgit clone [***] cd JellyPlex-Watched docker build -t jellyplex-watched .
方式1:通过环境变量直接配置
适用于简单场景,直接在命令行指定关键参数:
bashdocker run --rm -it \ -e PLEX_BASEURL="[***]" \ -e PLEX_TOKEN="your-plex-token-here" \ -e JELLYFIN_BASEURL="[***]" \ -e JELLYFIN_TOKEN="your-jellyfin-token-here" \ -e DRYRUN="False" \ -e SLEEP_DURATION="1800" \ luigi311/jellyplex-watched:latest
方式2:通过.env文件配置(推荐)
适用于复杂配置,便于管理多个参数:
.env文件(参考项目.env.sample):ini# 全局设置 DRYRUN="False" DEBUG="False" SLEEP_DURATION="3600" USER_MAPPING='{"plex_user":"jellyfin_user"}' LIBRARY_MAPPING='{"TV Shows":"Series"}' WHITELIST_USERS="family_user,kid_user" # Plex设置 PLEX_BASEURL="[***]" PLEX_TOKEN="token1,token2" SYNC_FROM_PLEX_TO_JELLYFIN="True" SYNC_FROM_PLEX_TO_PLEX="True" SSL_BYPASS="False" # Jellyfin设置 JELLYFIN_BASEURL="[***]" JELLYFIN_TOKEN="jellyfin-token-here" SYNC_FROM_JELLYFIN_TO_PLEX="True" SYNC_FROM_JELLYFIN_TO_JELLYFIN="False"
bashdocker run --rm -it -v "$(pwd)/.env:/app/.env" luigi311/jellyplex-watched:latest
DRYRUN="True"测试配置,查看日志确认同步逻辑是否符合预期/app/log.log,可通过挂载日志目录持久化日志:
bashdocker run --rm -it -v "$(pwd)/.env:/app/.env" -v "$(pwd)/logs:/app/logs" -e LOGFILE="logs/sync.log" luigi311/jellyplex-watched:latest
DEBUG="True"和DEBUG_LEVEL="debug"获取详细调试信息manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务