脚本推荐
脚本目录:
- 拼音排序脚本: plex_localization_zhcn
- 元数据管理脚本: 合集整理, 海报叠加(使用失败)
- MR-PLEX工具箱: 拼音排序, 海报叠加
- 桌面端 Plex & Plex HTPC 播放器增强功能脚本: plex-mpv
- 电视节目/剧集文件扫描器: Absolute-Series-Scanner
- 浏览器倍数播放: plex-speed
- xattr数据流读取: FileBot Xattr Metadata
- Trakt信息同步: PlexTraktSync
- 自动跳过片头等: PlexAutoSkip
目录导航, 可通过ctrl+F搜索
前言:
很多脚本使用的时候都需要获取token
, 可以通过这里获取到对应plex token信息, 后面所有配置需要token的地方都可以用这个
随便找个海报, 点击海报右侧的3个竖点 → 获取信息 → 查看XML → 浏览器网址最后面
拼音排序脚本: plex_localization_zhcn和mr-plex工具箱
当媒体库的媒体文件变多时, 媒体库的右侧会有个快速检索栏, 但是plex
的快速检索栏是根据标题排序
来的, 标题排序
是根据标题来的, 结果就会像这样子:
严重影响我们的使用体验, 所以就有大神写了一个python
脚本: Plex中文本地化 , 需要python
环境和pip
, 可以自行百度安装python
环境, 运行python3 plex_localization_zhcn.py
命令, 按照提示输入即可
他需要x-token
就是上面获取的那个token
如果你不想安装python
环境, 也可以通过movie-r(๐•ᴗ•๐)ot
的plex插件
来
注意: 你需要在应用设置里面配置你的媒体服务器, 按照提示添加即可
运行结束就会改成拼音来排序了:
主要就是修改媒体元数据
元数据管理脚本: Plex-Meta-Manager元数据管理整合工具
Python3
脚本, 简化 Plex 媒体服务器内元数据、集合和播放列表的创建和维护, 可以增加额外展示内容, 可以根据站外的影视信息自建并更新合集. 比如根据 IMDB
、TMDB
、Trakt
的热门影视数据建立合集等
- 使用外部列表、Plex 搜索或过滤器在 Plex 库中创建和维护集合
- 使用相同或相似的标准在 Plex 服务器上创建、维护和共享播放列表
- 管理 Plex 服务器上任何内容的元数据 [海报、标题、摘要、发布年份等]
- 向媒体文件添加叠加层以显示各种详细信息[评级、分辨率、版本等]
- 将外部列表中缺少的项目 [如 IMDB 250] 发送到
Radarr
或 Sonarr
进行下载
垃圾脚本一直运行失败~, 试了python
和docker
方式都失败了, 各种报错. 浪费了我一天时间, 不弄了, 就放下效果吧
我感觉他这个叠加的很不错, 而且可以自由搭配需要在海报上显示什么东西, 但是我跑不起来, 我哭死
这个是他的文档地址 plex-meta-manager
MR-PLEX工具箱: 工具地址
A佬根据BeiMou(yewei)
做的插件优化了几项功能
注意: 下载放入到Plugins
文件夹后需要重启才能生效
效果:
感觉这个效果还挺不错的, 言简意赅. 虽然没有Plex-Meta-Manager
叠加的信息多
除此之外, a佬还其他优化的工具, 大家可以看看 MR-Plugins
桌面端 Plex & Plex HTPC 播放器增强功能脚本: plex-mpv
x1ao4佬
制作了一个lua
脚本, 来调用桌面端mpv播放器的一些隐藏功能
实现了倍速播放、逐帧播放、调整字幕等功能
解锁 Plex 桌面端隐藏功能,自制脚本大放送
倍数播放: 谷歌浏览器插件Plex Speed
就是一个插件, 通过插件来控制倍速播放, 有1.25、1.5、1.75、2.0
Absolute-Series-Scanner: 电视节目/剧集文件扫描器
.plexignore
可以作用于子文件夹
- 如果电视节目文件夹或季文件夹中有
yout(๐•ᴗ•๐)e
播放列表id, 不用进行编号/重命名
- 可以显示zip文件夹中的视频文件, 但是无法播放
- 支持按照空格来命名, 如: Dragon Ball/[01] Dragon Ball/ep xxx.mp4
- 支持季文件夹使用季标题, 如: Season xxx ti(๐•ᴗ•๐)e_for season
- 在特定文件夹中可以按照剧集的主题或类型进行分类和分组如: ('[01] Saga xxx', '[02] Story xxx', '[03] Arc xxx')
- 剧集标题取自文件名(没有匹配到才会使用)
- 处理日语和特殊字符(如
CØDE:BREAKER
)以及以点(.Hack
)开头的文件
- 支持AniDB编号((NC)OP/(NC)ED/SpXX等)
- 剧集支持放入电影媒体文件(名称与文件夹相同或包含
- Complete Movie
)
- 通过刮削获取电视节目名称或id
- 在不重命名的情况下显示独立季信息, 以
tvdb2/3/4
(将电视节目组织成剧集和季,并提供相关的元数据和封面图片)或重新映射剧集的时间顺序tvdb5
(非官方的插件)或anidb
系列分组并显示为tvdb系列(anidb2,需要scudlee
文件中的映射才能工作)
- 使用
sagas
作为季, 保持与TVDB4
的绝对编号, 甚至为你从数据库创建季(如果没有指定)
- 支持多种文件格式
- 将每个剧集的日志(
xxx.filelist.log
和xxx.scanner.log
)放在/Plex Media Server/Plug-in Support/Data/com.plexapp.agents.hama/DataItems/Logs
- 支持
FileBot Xattr 元数据扫描器
filebot
安装:
1. 下载脚本保存到[...]/Plex Media Server/Scanners/Series/Absolute Series Scanner.py
2. 修改Absolute Series Scanner.py
权限: chmod 777 Absolute Series Scanner.py
我感觉用到的机会不大, 目前大部分下载过来都是命名好了的, 除非你的媒体文件来自五湖四海, 每个命名都是乱七八糟的
FileBot Xattr Metadata: 读取Xattr
(extended file attributes即文件扩展属性)在文件系统属性中存储完整的元数据
xattr不是嵌入文件内容中的传统标签, 而是为每个文件存储在文件系统中的附加数据流. 所以xattr
需要支持 xattr 的文件系统
类似于你通过mediainfo
去读取媒体文件信息, 但是我试了几个视频, 基本都没有这个属性...  ̄□ ̄||
但是如果媒体文件有这种额外的标签的话, 就太适合刮削了, 随便怎么命名, 怎么修改
gith(๐•ᴗ•๐)地址: https://gith(๐•ᴗ•๐).com/filebot/plex-agents
安装命令: 我这里是通过docker
启动的, 挂载了本地目录plex-media-server
, 下载、解压, 拷贝
#!/bin/sh
root@bigSeaNas:/mnt/user/appdata# curl -L -O https://gith(๐•ᴗ•๐).com/filebot/plex-agents/archive/master.zip
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
100 102k 0 102k 0 0 67181 0 --:--:-- 0:00:01 --:--:-- 606k
root@bigSeaNas:/mnt/user/appdata# unzip -o master.zip
Archive: master.zip
ab6ebb811ca9d94dea0f72eebf17b45465877c7e
creating: plex-agents-master/
inflating: plex-agents-master/.gitignore
inflating: plex-agents-master/LICENSE
creating: plex-agents-master/Plug-ins/
creating: plex-agents-master/Plug-ins/Xattr.bundle/
creating: plex-agents-master/Plug-ins/Xattr.bundle/Contents/
creating: plex-agents-master/Plug-ins/Xattr.bundle/Contents/Code/
inflating: plex-agents-master/Plug-ins/Xattr.bundle/Contents/Code/__init__.py
inflating: plex-agents-master/Plug-ins/Xattr.bundle/Contents/Code/filebot.py
inflating: plex-agents-master/Plug-ins/Xattr.bundle/Contents/Code/xattr.py
inflating: plex-agents-master/Plug-ins/Xattr.bundle/Contents/Info.plist
creating: plex-agents-master/Plug-ins/Xattr.bundle/Contents/Resources/
inflating: plex-agents-master/Plug-ins/Xattr.bundle/Contents/Resources/icon-default.png
inflating: plex-agents-master/README.md
creating: plex-agents-master/Scanners/
creating: plex-agents-master/Scanners/Common/
inflating: plex-agents-master/Scanners/Common/filebot.py
inflating: plex-agents-master/Scanners/Common/xattr.py
creating: plex-agents-master/Scanners/Movies/
inflating: plex-agents-master/Scanners/Movies/FileBot Xattr Movie Scanner.py
creating: plex-agents-master/Scanners/Series/
inflating: plex-agents-master/Scanners/Series/FileBot Xattr Series Scanner.py
root@bigSeaNas:/mnt/user/appdata# cp -vru 'plex-agents-master/Plug-ins' 'plex-media-server/Library/Application Support/Plex Media Server'
'plex-agents-master/Plug-ins/Xattr.bundle' -> 'plex-media-server/Library/Application Support/Plex Media Server/Plug-ins/Xattr.bundle'
'plex-agents-master/Plug-ins/Xattr.bundle/Contents' -> 'plex-media-server/Library/Application Support/Plex Media Server/Plug-ins/Xattr.bundle/Contents'
'plex-agents-master/Plug-ins/Xattr.bundle/Contents/Info.plist' -> 'plex-media-server/Library/Application Support/Plex Media Server/Plug-ins/Xattr.bundle/Contents/Info.plist'
'plex-agents-master/Plug-ins/Xattr.bundle/Contents/Code' -> 'plex-media-server/Library/Application Support/Plex Media Server/Plug-ins/Xattr.bundle/Contents/Code'
'plex-agents-master/Plug-ins/Xattr.bundle/Contents/Code/__init__.py' -> 'plex-media-server/Library/Application Support/Plex Media Server/Plug-ins/Xattr.bundle/Contents/Code/__init__.py'
'plex-agents-master/Plug-ins/Xattr.bundle/Contents/Code/filebot.py' -> 'plex-media-server/Library/Application Support/Plex Media Server/Plug-ins/Xattr.bundle/Contents/Code/filebot.py'
'plex-agents-master/Plug-ins/Xattr.bundle/Contents/Code/xattr.py' -> 'plex-media-server/Library/Application Support/Plex Media Server/Plug-ins/Xattr.bundle/Contents/Code/xattr.py'
'plex-agents-master/Plug-ins/Xattr.bundle/Contents/Resources' -> 'plex-media-server/Library/Application Support/Plex Media Server/Plug-ins/Xattr.bundle/Contents/Resources'
'plex-agents-master/Plug-ins/Xattr.bundle/Contents/Resources/icon-default.png' -> 'plex-media-server/Library/Application Support/Plex Media Server/Plug-ins/Xattr.bundle/Contents/Resources/icon-default.png'
root@bigSeaNas:/mnt/user/appdata# cp -vru 'plex-agents-master/Scanners' 'plex-media-server/Library/Application Support/Plex Media Server'
'plex-agents-master/Scanners/Common' -> 'plex-media-server/Library/Application Support/Plex Media Server/Scanners/Common'
'plex-agents-master/Scanners/Common/filebot.py' -> 'plex-media-server/Library/Application Support/Plex Media Server/Scanners/Common/filebot.py'
'plex-agents-master/Scanners/Common/xattr.py' -> 'plex-media-server/Library/Application Support/Plex Media Server/Scanners/Common/xattr.py'
'plex-agents-master/Scanners/Movies' -> 'plex-media-server/Library/Application Support/Plex Media Server/Scanners/Movies'
'plex-agents-master/Scanners/Movies/FileBot Xattr Movie Scanner.py' -> 'plex-media-server/Library/Application Support/Plex Media Server/Scanners/Movies/FileBot Xattr Movie Scanner.py'
'plex-agents-master/Scanners/Series' -> 'plex-media-server/Library/Application Support/Plex Media Server/Scanners/Series'
'plex-agents-master/Scanners/Series/FileBot Xattr Series Scanner.py' -> 'plex-media-server/Library/Application Support/Plex Media Server/Scanners/Series/FileBot Xattr Series Scanner.py'
if(window.hljsLoader && !document.currentScr(๐•ᴗ•๐).parentNode.hasAttribute('data-s9e-livepreview-onupdate')) {
window.hljsLoader.highlightBlocks(document.currentScr(๐•ᴗ•๐).parentNode);
}
Trakt同步: 同步 Plex 和 Trakt(美版豆瓣电影) 的(๐•ᴗ•๐)看记录、评分、收藏等信息
大家可以看大佬写的文章: 使用说明
gith(๐•ᴗ•๐)地址: https://gith(๐•ᴗ•๐).com/Taxel/PlexTraktSync
PlexAutoSkip : 自动跳过 Plex 中的标记内容 项目地址
跳过任何Plex识别的标记,具有可调节的偏移量
标记(可以跳过任何标记,包括Plex Pass提供的一下功能)
仅跳过已(๐•ᴗ•๐)看的内容
忽略跳过先导集
忽略新剧集或系列跳过第一集
跳过片尾部分(片尾字幕、制作人员名单、预告片等内容)
绕过接下来
的屏幕, 自动连播下一集
自定义
当Plex自动检测视频中的标记或章节时出现问题时, 你可以手动定义或添加自己的标记
对Plex的客户端设备或特定用户进行筛选或限制
导出和审查Plex的标记信息, 并对其进行修正或填补缺漏的部分
同时编辑多个标记的时间或时间范围(同时修改剧集每集的片头时间)
相对于片尾内容的负值偏移量(-30: 视频内容结束后的最后30秒将会被跳过)
可以选择降低音量或静音而不跳过片头片尾等(客户端需要Plex setVolume API
支持)
注意: Plex Pass
可以自动帮你标记片头、片尾、广告等, 如果没有的话, 就需要通过批量标记自己来弄
需要在设置→ 服务器 → 网络 → 启用本地网络发现功能(GDM)
然后客户端要开启远程控制
, 安卓app、IOS app、web app才有
支持docker
部署, 如果要本地部署的话可以看他的文档, 我怕本地各种python
环境冲突, 又要调整半天
docker run -d --privileged \
--name=plexautoskip \
-e PUID=0 \
-e PGID=0 \
-e TZ=Asia/Shanghai \
-v /mnt/user/appdata/plexautoskip:/config \
--restart unless-stopped mdhiggins/plexautoskip-docker:latest
if(window.hljsLoader && !document.currentScr(๐•ᴗ•๐).parentNode.hasAttribute('data-s9e-livepreview-onupdate')) {
window.hljsLoader.highlightBlocks(document.currentScr(๐•ᴗ•๐).parentNode);
}
启动成功后, 修改config.ini文件
配置好之后运行main.py
, 在容器的/usr/local/pas/
下面
具体配置一些标记怎么弄 可以看他的文档 配置讲解
脚本在这里就差不多了, 大部分通过plex
关键字在gith(๐•ᴗ•๐)
都可以搜索到, 过滤语言选python
和lua
的就可以了
如果你没有(๐•ᴗ•๐)的话, 下载可以通过https://ghproxy.com/
来加速
另外, 你可以可以在油猴论坛搜索, 里面也有很多有意思的脚本, 比如embyToLocalPlayer
, 因为不想在本地安装python
环境, 我就不试了