Plex 电影版本(Edition)管理工具
10K+
在 Plex 中有两个 “版本” 的概念,一个是 “Edition”,一个是 “Version”,目前他们都被翻译为了 “版本”,似乎也找不到更恰当的词汇来区分这两个概念,但它们的用处却大相径庭。
Edition 的设计初衷是用来区分不同的剪辑版本的,例如院线版、导演剪辑版、加长版、未分级版等。如果你拥有同一部影片的不同剪辑版本,在 Plex 内,你可以通过编辑 Edition 来对它们进行标注和区分,这些不同的版本将会作为独立的项目在媒体库内进行展示,并且拥有独立的观看状态、观看进度和评分记录,互不影响。
Version 的设计初衷是用来整合相同剪辑版本的多个文件版本的,主要是指分辨率、编码格式或动态范围的版本,例如 1080P、4K、SDR、HDR 等。如果你拥有同一部影片的不同文件版本,在匹配成功后它们会在媒体库内自动合并为同一个项目,你可以在观看时通过 “播放版本” 来选择你想要观看的版本(若不选择则会播放默认版本),它们将共享观看状态、观看进度和评分记录。
其中,Edition 会显示在标题的下方,年份的后面,也会在 “更多观看方式/在这些地方观看” 这个部分显示,并且支持自定义显示名称;而 Version 只会在电影的详情页面显示,而且不支持自定义显示名称。由于真正需要标注剪辑版本的使用场景并不多,而 Edition 的显示位置又比较显眼,其实除了用来标注剪辑版本,我们完全可以利用这个功能来对电影的其他信息进行标注。
例如,目前的 Plex 移动端和电视端都不会显示杜比视界(DoVi)这个信息,我们可以通过把动态范围写入 Edition 来实现在移动端和电视端显示杜比视界信息,这样我们就可以区分哪些影片是杜比视界的版本了。再如,Plex 的资料库排序目前仅支持单一排序,你无法在使用标题、观众评分排序的同时显示电影的分辨率或码率等信息,同样我们也可以通过 Edition 来显示这些额外信息。
使用 Edition Manager for Plex(下文简称 EMP)可以自动获取电影和电影文件的信息,并将指定的信息写入 Edition 字段,从而丰富电影信息的展示功能。你可以通过 EMP 将电影的剪辑版本、发行版本、片源版本、分辨率、动态范围、视频编码、帧率、音频编码、比特率、大小、国家、内容分级、评分或时长写入电影的 Edition 字段,而且还支持自选模块和自定义排序。
这一切都将通过 EMP 自动实现,无需编辑或修改文件名。这意味着你不需要在文件名中按照 {edition-Edition Title} 这样的格式添加版本信息,EMP 会通过文件名或电影的元数据自动查找相关的信息,然后将需要的信息写入 Edition 字段,对文件的命名没有特殊要求。
你可以通过 EMP 按照自己的需求和喜好为你的电影增加额外的展示信息,我们提供了写入 Edition 和移除 Edition 的功能,你可以随性尝试任何组合方式,也可以随时一键移除所有的 Edition 信息。虽然 Edition 是 Plex Pass 的专属功能,但是通过 EMP,无需 Pass 订阅即可使用 Edition 功能。
配置 order = 剪辑版本;发行版本 的效果:
配置 order = 评分;国家 的效果:
配置 order = 帧率;比特率 的效果:
配置 order = 分辨率;音频编码 的效果:
配置 order = 片源版本;动态范围 的效果:
配置 order = 内容分级;时长 的效果:
配置 order = 发行版本;片源版本;分辨率;动态范围;视频编码;帧率;音频编码;比特率;大小;国家 的效果:
目前 EMP 共有 14 个模块可供选择,分别是剪辑版本、发行版本、片源版本、分辨率、动态范围、视频编码、帧率、音频编码、比特率、大小、国家、内容分级、评分和时长,你可以选择任意数量的模块,并按照任意顺序进行排序,若个别模块获取不到信息,其他模块也会正常显示,按照需要选配即可。
剪辑版本模块目前支持 12 种剪辑版本,该模块会优先使用电影的文件名匹配剪辑版本信息,若存在多个视频文件,则会使用文件大小最大的视频文件进行匹配,若找不到剪辑版本信息,则会通过文件内嵌的视频标题进行匹配,若依然找不到剪辑版本信息,则不会写入剪辑版本信息。支持的剪辑版本如下:
发行版本模块目前支持 14 种发行版本,该模块会优先使用电影的文件名匹配发行版本信息,若存在多个视频文件,则会使用文件大小最大的视频文件进行匹配,若找不到发行版本信息,则会通过文件内嵌的视频标题进行匹配,若匹配到多个发行版本,则会依次写入发行版本信息,若依然找不到发行版本信息,则不会写入发行版本信息。支持的发行版本如下:
片源版本模块目前支持 25 种片源版本,该模块会优先使用电影的文件名匹配片源版本信息,若存在多个视频文件,则会使用文件大小最大的视频文件进行匹配,若找不到片源版本信息,则会通过文件内嵌的视频标题进行匹配,若依然找不到片源版本信息,则不会写入片源版本信息。支持的片源版本如下:
分辨率模块支持 Plex 可识别的所有分辨率,该模块会从电影元数据的媒体信息中获取视频文件的分辨率信息,若存在多个视频文件,则会获取文件大小最大的视频文件的分辨率信息,若找不到分辨率信息,则不会写入分辨率信息。支持的分辨率包括但不限于:
动态范围模块支持 Plex 可识别的所有动态范围,该模块会从电影元数据的媒体信息中获取视频文件的动态范围信息,若存在多个视频文件,则会获取文件大小最大的视频文件的动态范围信息,若找不到动态范围信息,则不会写入动态范围信息。支持的动态范围包括但不限于:
注:HDR10、HDR10+、HLG 等高动态范围技术都将被视作 HDR。若视频文件同时支持 HDR 和 DV,那么它们都会被写入版本信息。
视频编码模块支持 Plex 可识别的所有视频编码,该模块会从电影元数据的媒体信息中获取视频文件的视频编码信息,若存在多个视频文件,则会获取文件大小最大的视频文件的视频编码信息,若找不到视频编码信息,则不会写入视频编码信息。支持的视频编码包括但不限于:
帧率模块支持 Plex 可识别的所有帧率,该模块会从电影元数据的媒体信息中获取视频文件的帧率信息,若存在多个视频文件,则会获取文件大小最大的视频文件的帧率信息,若找不到帧率信息,则不会写入帧率信息。支持的帧率包括但不限于:
音频编码模块支持 Plex 可识别的所有音频编码,该模块会从电影元数据的媒体信息中获取视频文件的音频编码信息,若存在多个视频文件,则会获取文件大小最大的视频文件的音频编码信息,若存在多个音频流,则会获取比特率最高的音频流的音频编码信息(多声道优先),若找不到音频编码信息,则不会写入音频编码信息。支持的音频编码包括但不限于:
注:在写入版本信息时,音频编码后方会显示对应音频流的声道信息,如 TRUEHD 7.1、AC3 5.1、AAC 立体声等等。
比特率模块会从电影元数据的媒体信息中获取视频文件的比特率(码率)信息,若存在多个视频文件,则会获取文件大小最大的视频文件的比特率信息,若找不到比特率信息,则不会写入比特率信息(比特率的单位为 Kbps、Mbps)。
大小模块会从电影元数据的媒体信息中获取视频文件的(文件)大小信息,若存在多个视频文件,则会获取文件大小最大的视频文件的大小信息(大小的单位为 B、KB、MB、GB)。
国家模块会从电影元数据中获取电影的(制片)国家(或地区)信息,若存在多个国家,则会依次写入国家信息,若找不到国家信息,则不会写入国家信息。
内容分级模块会从电影元数据中获取电影的内容分级信息,若找不到内容分级信息,则不会写入内容分级信息。支持的内容分级包括但不限于:
注:上述分级为美国的分级制度说明,其它地区的分级制度可能存在差异,以实际情况为准。由于中国大陆地区没有内容分级制度,建议将 “认证国家/地区” 设置为 “美国”,以获取内容分级信息。
评分模块会从电影元数据中获取电影的(观众)评分信息(使用资料库设置的评分来源),若找不到评分信息,则不会写入评分信息(评分将转换为十分制)。
时长模块会从电影元数据的媒体信息中获取视频文件的时长信息,若存在多个视频文件,则会获取文件大小最大的视频文件的时长信息,若找不到时长信息,则不会写入时长信息(时长的单位为分钟)。
EMP 共有 为所有电影添加版本信息(all)、为新增电影添加版本信息(new) 和 为所有电影重置版本信息(reset) 三种运行模式:
注:为新增电影添加版本信息 模式需要服务器的管理员账号订阅了 Plex Pass 才能使用。
运行前,请先参考以下提示(示例)对 /config/config.ini 进行配置。
[server]
# Plex 服务器的地址,格式为 http://服务器 IP 地址:32400 或 http(s)://域名:端口号
address = http://127.0.0.1:32400
# Plex 服务器的 token,用于身份验证
token = xxxxxxxxxxxxxxxxxxxx
# 指定需要跳过的资料库,格式为库名1;库名2;库名3,若没有需要跳过的资料库,可以留空
skip_libraries = 云电影;演唱会
# 语言设置,zh 代表中文,en 代表英文
language = zh
[modules]
# 指定需要写入的模块及其排序,格式为模块1;模块2;模块3,可选模块包括剪辑版本、发行版本、片源版本、分辨率、动态范围、视频编码、帧率、音频编码、比特率、大小、国家、内容分级、评分、时长
order = 片源版本;动态范围
由于 EMP 只会对电影类型的资料库进行处理,所以在指定需要跳过的资料库时,指定需要跳过的电影类型的资料库即可。写入版本信息的模块没有数量限制,可以根据需要自行选配。
在 为新增电影添加版本信息 模式下运行时,EMP 会使用 Flask 创建一个 Web 服务器,通过监听 8089 端口来接收 Plex 服务器发送的 library.new 事件,从而获取新增项目的信息并对其进行处理。
假如你的 8089 端口已经被其他服务占用,你可能需要通过修改 edition-manager-for-plex.py 倒数第九行的 port=8089(通过 Python 脚本运行时)或者通过修改端口映射(通过 Docker 容器运行时)来更换监听端口。
你可以通过 Docker 容器或者 Python 脚本来运行 EMP,推荐使用 Docker 容器运行,具体使用方法可参考下文。
edition-manager-for-plex(Plex Pass 订阅用户)
version: "2"
services:
emp-all:
image: x1ao4/edition-manager-for-plex:latest
container_name: emp-all
command: python edition-manager-for-plex.py --all
environment:
- TZ=Asia/Shanghai
volumes:
- /自定义目录/edition-manager-for-plex/config:/app/config
emp-new:
image: x1ao4/edition-manager-for-plex:latest
container_name: emp-new
command: python edition-manager-for-plex.py --new
ports:
- 8089:8089
environment:
- TZ=Asia/Shanghai
volumes:
- /自定义目录/edition-manager-for-plex/config:/app/config
restart: unless-stopped
networks: {}
edition-manager-for-plex(非 Plex Pass 订阅用户)
version: "2"
services:
emp-scheduler:
image: mcuadros/ofelia:latest
container_name: emp-scheduler
depends_on:
- emp-all
command: daemon --docker -f label=com.docker.compose.project=${COMPOSE_PROJECT_NAME}
labels:
ofelia.job-run.emp-all.schedule: 0 30 22 * * *
ofelia.job-run.emp-all.container: emp-all
environment:
- TZ=Asia/Shanghai
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
restart: unless-stopped
emp-all:
image: x1ao4/edition-manager-for-plex:latest
container_name: emp-all
command: python edition-manager-for-plex.py --all
environment:
- TZ=Asia/Shanghai
volumes:
- /自定义目录/edition-manager-for-plex/config:/app/config
networks: {}
edition-manager-for-plex-reset
version: "2"
services:
emp-reset:
image: x1ao4/edition-manager-for-plex:latest
container_name: emp-reset
command: python edition-manager-for-plex.py --reset
environment:
- TZ=Asia/Shanghai
volumes:
- /自定义目录/edition-manager-for-plex/config:/app/config
networks: {}
使用 EMP 可以写入版本信息,也可以移除版本信息。由于 Docker 会在启动堆栈时自动启动堆栈内的所有容器,所以写入和移除的功能需要分开部署。请先部署 edition-manager-for-plex 用于写入版本信息,然后在有需要时部署 edition-manager-for-plex-reset 用于移除版本信息(部署后会立刻执行一次 为所有电影重置版本信息。你也可以使用 docker-compose up --no-start 来部署这个容器,这样部署后不会立刻运行,在有需要时再启动容器即可)。
edition-manager-for-plex
Webhooks,点击 添加 Webhook,填写你的 Flask 服务器地址 http://Docker 所在设备的 IP 地址:8089 并 保存修改。(非 Plex Pass 订阅用户无需填写)/compose/edition-manager-for-plex/compose.yaml 文件(Plex Pass 订阅用户可删除 emp-scheduler 的部分,非 Plex Pass 订阅用户可删除 emp-new 的部分),将其保存在一个名为 edition-manager-for-plex 的文件夹内。compose.yaml,将 /自定义目录/edition-manager-for-plex/config 替换为宿主机上的一个目录,这个目录将用于保存配置文件。(emp-all 与 emp-new 使用相同的目录即可)cd 命令切换到 compose.yaml 所在的目录。docker-compose up -d 部署并启动 edition-manager-for-plex 堆栈。/自定义目录/edition-manager-for-plex/config/config.ini 文件,填写你的 Plex 服务器地址(address)和 X-Plex-Token(token),设置需要写入版本信息的模块及其排序(order),按照需要选填其他配置选项。edition-manager-for-plex-reset
/compose/edition-manager-for-plex-reset/compose.yaml 文件,将其保存在一个名为 edition-manager-for-plex-reset 的文件夹内。compose.yaml,将 /自定义目录/edition-manager-for-plex/config 替换为宿主机上的一个目录,这个目录将用于保存配置文件。(与 emp-all 和 emp-new 使用相同的目录即可)cd 命令切换到 compose.yaml 所在的目录。docker-compose up -d 部署并启动 edition-manager-for-plex-reset 堆栈。(若 /自定义目录/edition-manager-for-plex/config/config.ini 文件已经正确配置,堆栈会正常运行;若未配置,请先填写配置信息,然后重启堆栈,即可正常运行)
EMP 共有 emp-all、emp-new、emp-scheduler 和 emp-reset 四个容器,分别用于处理不同的任务。启动堆栈后,这四个容器的运行状态也略有差异。
emp-all 是用来运行 为所有电影添加版本信息 任务的,它会在启动后运行一次 为所有电影添加版本信息 任务,对设置范围内的所有电影进行处理(添加版本信息),并在终端或日志内显示资料库的信息和处理结果,处理完毕后会停止运行。你可以随时启动它来运行 为所有电影添加版本信息 任务,它将在每次处理完毕后停止运行。如果你配置了 emp-scheduler,emp-all 也会在每次到达你设置的任务时间时自动运行一次。emp-new 是用来运行 为新增电影添加版本信息 任务的,它会在启动后创建一个 Flask 服务器来监听 Plex 服务器的事件,当 Plex 服务器上有新增电影时,它将自动对新增电影进行处理(添加版本信息),并在终端或日志内显示处理结果,处理完毕后会继续监听 Plex 服务器的事件,并在每次有新增电影时对其进行处理,然后继续监听。emp-scheduler 是用来给 为所有电影添加版本信息 设置/触发计划任务的,它会在启动后创建一个定时运行 emp-all 的计划任务,默认设置为 0 30 22 * * *,表示每天晚上 10 点半(22:30)运行一次。你可以通过修改时间表达式来自定义运行频率,例如 "@every 3h" 表示每 3 小时运行一次,"@every 30m" 表示每 30 分钟运行一次等。它将在设置的任务时间启动 emp-all 容器,并在终端或日志内同步显示 emp-all 的日志信息,然后继续运行。emp-reset 是用来运行 为所有电影重置版本信息 任务的,它会在启动后运行一次 为所有电影重置版本信息 任务,对设置范围内的所有电影进行处理(重置/移除版本信息),并在终端或日志内显示资料库的信息和处理结果,处理完毕后会停止运行。你可以随时启动它来运行 为所有电影重置版本信息 任务,它将在每次处理完毕后停止运行。你可以根据需要选配这四个容器,若存在不需要的功能,直接在 Compose 中删除对应的部分再部署即可。
host 模式重新部署容器运行。为新增电影添加版本信息 模式,请确保你在服务器的 设置 - 网络 中勾选了 Webhooks 选项。
如果你觉得这个项目对你有用,可以考虑请我喝杯咖啡或者给我一个⭐️。谢谢你的支持!
Content type
Image
Digest
sha256:4a093c423…
Size
21.9 MB
Last updated
over 2 years ago
docker pull x1ao4/edition-manager-for-plex