目录:
- 前言
- 前置操作
- 海报叠加
- 集合整理
- 播放列表
- 正式启动
上次使用plex-meta-manager
失败了, 但是还是有点喜欢他叠加出来的海报, 然后我就又研究了一番
然后看了下代码,和错误提示, 大部分失败原因是网络导致的, 所以通过增加host避免这些错误
给你们看下效果:
前置操作
申请TMDB API TOKEN
: 个人设置 → API → Regenerate Key
获取Plex Token
: 这个之前的教程有写到, 查询信息, 然后显示xml
创建对应的config
目录: 通过mkdir命令创建
在config
下面创建assets
子目录: 用来消除一些错误
获取config.yml
文件保存到config
目录下面
如果访问有问题就用这个代理去下载
- 修改
config.yml
配置文件
配置文件config.yml
#媒体库, 必填
libraries:
#你的plex媒体库名称
Movies:
#创建集合的规则配置, 注意: 不填写pmm或者file, 会删除集合
metadata_path:
#pmm: meta-manager提供的整理规则元数据配置, file: 自定义整理规则
#basic: 创建2个集合
# 1.Newly Released(新发布)
# 2.New Episodes(新剧集, 电视节目有效)
- pmm: basic
#创建3个集合:
# 1.IMDb Popular(imdb热门)
# 2.IMDb Top 250(imdb前250)
# 3.IMDb Lowest Rated(imdb评分最低)
- pmm: imdb
#自定义集合整理规则, 如: 整理漫威集合
- file: config/Marvel.yml
#海报叠加, 在海报上面加上一些标签
overlay_path:
#true: 删除所有的叠加标签
- remove_overlays: false
#true: 刷新标签
- reapply_overlay: true
#海报右下角生产一个丝带
- pmm: ribbon
#分辨率标签如4K DV、4K HDR, 媒体文件版本如导演剪辑版、典藏系列
- pmm: resolution
#名称
Movies_Second_Plex:
#媒体库名称, 不为Movies不能重复, 所以使用library_name
library_name: Movies
#指定plex媒体库, 多媒体库设置用, 下方有个全局的媒体库设置, 如果你有多个的话, 请使用这个配置
plex:
#地址
url: http://plex.boing.bong
#token
token: SOME_TOKEN
#超时
timeout: 360
#默认的playlist需要搭配trakt身份验证使用
#播放列表, 将什么媒体提取到播放列表
#如: 漫威中的电影和剧集(时间线顺序), DC宇宙中的电影和剧集(时间线顺序), X战警系列(时间线顺序)
playlist_files:
- pmm: playlist
#其他配置
settings:
#缓存Plex GUID和媒体库的关联ID, false: 不生效
cache: true
#缓存过期时间, 单位:天
cache_expiration: 60
#海报, 背景等资产所在的目录
asset_directory: config/assets
#海报等资产文件是否有单独文件夹, 如: assets/Star Wars/poster.png
asset_folders: true
#扫描深度, asset_folders设置为
# 0: assets/Star Wars.png 或 assets/Star Wars/poster.png
# 1: assets/Movies/Star Wars.png 或 assets/Movies/Star Wars/poster.png
# 2: assets/Movies/欧美/Star Wars.png 或 assets/Movies/欧美/Star Wars/poster.png
asset_depth: 0
#true: 搜索时, 资产目录不存在就创建新的
create_asset_folders: false
#true: 媒体库使用图像时,是否使用assets下面的资产文件(海报,背景)
prioritize_assets: false
#true: 搜索资产文件时, 如果没有这将第一个满足条件(高度大于或等于宽度)的图像重命名为对应的海报或背景
dimensional_asset_rename: false
#true: 元数据配置或播放列表配置了图片链接, 会下载到资产目录(asset)
download_url_assets: false
#true: 对于电视节目, 通知用户缺少那些季海报, 背景
show_missing_season_assets: false
#true: 对于电视节目, 通知用户缺少那些剧集海报, 背景
show_missing_episode_assets: false
#true: 缺失资产文件的警告
show_missing_assets: true
#true: 隐藏不需要更新的消息
show_asset_not_needed: true
#集合的同步模式
#append: 只会添加时触发
#sync: 添加或删除都会触发
sync_mode: append
#创建集合的最小媒体文件
minimum_items: 1
#集合排序
#release: 按发布日期排序
#alpha: 按字母顺序排序
#custom: 根据构建器顺序排序收藏
default_collection_order:
#true: 集合中的媒体文件小于minimum_items值则删除集合
delete_below_minimum: true
#true: 删除未按计划执行的集合
delete_not_scheduled: false
#设置延迟, 单位分钟, 用于刷新集合, Sonarr/Radarr下载完成后刷新集合
run_again_delay: 2
#true: 将集合中缺失的媒体文件保存到missing.yml
missing_only_released: false
#true: 特定的过滤器才能过滤集合中缺失的媒体, 用于过滤哪些缺失的媒体发送到Sonarr/Radarr下载
only_filter_missing: false
#true: 列出不是pmm创建的集合
show_unmanaged: true
#文档没有
show_unconfigured: true
#true: 列出不符合集合过滤条件的媒体文件
show_filtered: false
#true: 显示属性(年份、导演等)的可用选项
show_options: false
#true: 显示在集合中缺失的媒体
show_missing: true
#将集合中添加、移除、过滤或丢失的项目的报告保存为一个yaml文件
save_report: false
#指定TVDB中查询的语言: eng、zh、zho/chi*、ja等
tvdb_language: eng
#忽略TMDb/TVDb ID, 多个用逗号分隔
ignore_ids:
#忽略IMDB ID, 多个用逗号分隔
ignore_imdb_ids:
#刷新集合时, 等待多少秒刷新下一个集合, 确保服务器不会过载
item_refresh_delay: 0
#给用户同步播放列表, 多个逗号分隔
playlist_sync_to_user: all
#播放列表同步排查用户, 多个逗号分隔
playlist_exclude_users:
#true: 日志结束时打印出一个播放列表报告
playlist_report: false
#打开或关闭SSL验证
verify_ssl: true
#指定pmm元数据的配置文件地址, pmm默认地址是: https://gith(๐•ᴗ•๐).com/meisnate12/Plex-Meta-Manager-Configs/tree/master/meisnate12
custom_repo:
#true: 每天晚上检查更新pmm
check_nigh(๐•ᴗ•๐)y: false
#支持Discord和Slack Direct的Webhooks
webhooks:
#异常通知 webhooks地址, 多个用逗号分隔
error:
#有新版本通知 webhooks地址, 多个用逗号分隔
version:
#脚本运行开始通知 webhooks地址, 多个用逗号分隔
run_start:
#脚本运行结束通知 webhooks地址, 多个用逗号分隔
run_end:
#删除通知 webhooks地址, 多个用逗号分隔
delete:
#变更通知 webhooks地址, 多个用逗号分隔
changes:
#全局的plex媒体服务器配置, 必填
plex:
#服务器地址
url: http://192.168.1.12:32400
#token
token: ####################
#服务器超时时间
timeout: 60
#运行完脚本后, 执行CleanBundles, 清理媒体束(存储媒体文件的文件夹, 对应一个媒体项目, 包含该项目的媒体文件、元数据和其他相关文件)
clean_bundles: false
#运行完脚本后, 执行(๐•ᴗ•๐)tyTrash, 清空媒体服务器上的垃圾箱
(๐•ᴗ•๐)ty_trash: false
#运行完脚本后, 执行Optimize, 对媒体服务器进行优化处理
optimize: false
#tmdb配置, 必填
tmdb:
#tmdb v3 api秘钥
apikey: ################################
#请求语言https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes, eng、zh、zho/chi*、ja等
language: en
#区域编码https://en.wikipedia.org/wiki/ISO_3166-1#Current_codes, CN、TW、HK
region:
#缓存过期时间, 单位: 天
cache_expiration:
#Tautulli 配置, 和plex媒体服务器一样, 也可以单独在上面的媒体库配置单独的tautulli
tautulli:
#Tautulli url
url: http://192.168.1.12:8181
#api 密钥
apikey: ################################
#omdb配置, 每天免费 1000个请求
omdb:
#OMDb API 密钥
apikey: ########
#缓存过期时间, 单位: 天
cache_expiration: 60
#mdblist配置, 每天免费 1000个请求
mdblist:
#MdbList API 密钥
apikey: #########################
#缓存过期时间, 单位: 天
cache_expiration: 60
#Notifiarr配置, 允许将webhook直接发送到Notifiarr
#启用之后, 指定即可[webhooks.error: notifiarr]
notifiarr:
#通知 API 密钥
apikey: ####################################
#anidb配置
anidb:
#AniDB API客户端名称
client: #######
#AniD APIB客户端版本
version: ######
#用户名
username: ######
#密码
password: ######
#请求语言, 代码获取: https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes
language: zh
#缓存过期时间, 单位: 天
cache_expiration: 60
#radarr配置, 合集中缺失的媒体文件, 可以通过radarr下载, 最好是V3版本
radarr:
url: http://192.168.1.12:7878
token: ################################
#将集合中缺失的电影添加到radarr
add_missing: false
#将集合中的所有现有电影添加到 Radarr
add_existing: false
#升级集合中的所有现有电影匹配设置的分辨率等
upgrade_existing: false
#将项目添加到 Radarr 时忽略 PMM 的缓存
ignore_cache: false
#添加新电影时使用的默认根文件夹(๐•ᴗ•๐)径
root_folder_path: /mnt/user/media/Movies
#是否监听新电影
#movie: 电影
#collection: 集合
#none: 无
monitor: movie
#添加新电影时使用的默认最低可用性, announced、cinemas、released、db
#没资料没资料, 也没这个软件, 就仅供参考吧
availability: announced
#添加新电影时使用的默认质量配置文件
quality_profile: HD-1080p
#添加新电影时使用的默认标签列表或逗号分隔字符串
tag:
#添加新电影时开始搜索丢失的电影
search: false
#当使用add_existing或radarr_add_all将这部分(๐•ᴗ•๐)径转换为radarr_path
radarr_path:
#使用add_existing或将(๐•ᴗ•๐)径的一部分radarr_add_all转换为plex_path
plex_path:
#sonarr配置, 合集中缺失的媒体文件, 可以通过sonarr下载, 最好是V3版本
sonarr:
url: http://192.168.1.12:8989
token: ################################
#将集合中缺失的电影添加到sonarr
add_missing: false
#将集合中的所有现有电影添加到sonarr
add_existing: false
#添加新剧集时使用的默认根文件夹(๐•ᴗ•๐)径
root_folder_path: "/mnt/user/media/TV Shows"
#是否监听新剧集
#all: 除特别节目外的所有剧集
#future: 尚未播出的剧集
#missing: 没有文件或尚未播出的剧集
#existing: 已有文件或尚未播出的剧集
#pilot: 第一集,其他都忽略
#first: 第一季的所有剧集,所有其他剧集将被忽略
#latest: 最新一季和未来几季的所有剧集
#none: 无
monitor: all
#添加新剧集时使用的默认质量配置文件
quality_profile: HD-1080p
#添加新剧集时使用的默认语言配置文件
language_profile: English
#默认系列类型
#standard: 以 SxxEyy 模式发布的剧集
#daily: 每日发布的剧集采用年(๐•ᴗ•๐)日模式 (2017-05-25)
#anime: 使用绝对集数发布的集数
series_type: standard
#添加新剧集时使用季文件夹
season_folder: true
#添加新剧集时使用的默认标签列表或逗号分隔字符串
tag:
#添加新剧集时开始搜索缺失的剧集。
search: false
#添加新剧集时开始搜索未满足的剧集
cutoff_search: false
#当使用add_existing或sonarr_add_all将这部分(๐•ᴗ•๐)径转换为sonarr_path
sonarr_path:
#使用add_existing或将(๐•ᴗ•๐)径的一部分sonarr_add_all转换为plex_path
plex_path:
#Trakt.tv配置
trakt:
#Trakt 应用程序客户端ID
client_id: ####################
#Trakt 应用程序客户端密钥
client_secret: ####################
#pin码
pin:
authorization:
# everything below is autofilled by the scr(๐•ᴗ•๐)
access_token:
token_type:
expires_in:
refresh_token:
scope: p(๐•ᴗ•๐)lic
created_at:
#MyAnimeList配置
mal:
client_id: ####################
client_secret: ####################
authorization:
access_token:
token_type:
expires_in:
refresh_token:
if(window.hljsLoader && !document.currentScr(๐•ᴗ•๐).parentNode.hasAttribute('data-s9e-livepreview-onupdate')) {
window.hljsLoader.highlightBlocks(document.currentScr(๐•ᴗ•๐).parentNode);
}
里面大部分配置可以不用, 简化过后就是酱紫的, 这里的参数是必填的
libraries:
电影测试:
metadata_path:
overlay_path:
- remove_overlays: false
- reapply_overlay: true
- pmm: resolution
- pmm: language_count
- pmm: languages
- pmm: video_format
plex:
url: http://192.168.2.172:32400
token: *********
timeout: 60
clean_bundles: false
(๐•ᴗ•๐)ty_trash: false
optimize: false
tmdb:
apikey: **********************
language: zh
cache_expiration: 60
if(window.hljsLoader && !document.currentScr(๐•ᴗ•๐).parentNode.hasAttribute('data-s9e-livepreview-onupdate')) {
window.hljsLoader.highlightBlocks(document.currentScr(๐•ᴗ•๐).parentNode);
}
海报叠加标签overlays
这个文档对应的支持情况和下面给的结果完全不一样, 不支持的也显示了...
点击左侧的链接可以查看更高级的配置, 直接翻译看下就可以了, 蛮简单的
类型 | pmm编码 | 示例解释 | 电影 | 电视 | 季 | 集 |
音频 | audio_codec | Dolby Atmos, DTS | √ 2 | √ 2 | √ 2 | √ 2 |
分级 | commonsense | 3+, 16+ | √ | √ | ! | ! |
直接播放 | direct_play | Direct Play Only | √ | ! | ! | √ |
剧集信息 | episode_info | S01E01, S02E09 | X | X | X | √ 6 |
FlixPatrol | flixpatrol | 带有TOP字样的流媒体服务标 | √ | √ | X | X |
语音计数 | language_count | 多音频, 多字幕 | √ 10 | √ | √ | √ |
音频/字幕 | languages | 基于文件的音频/字幕的标志 | √ | √ | √ | √ |
彩蛋 | mediastinger | 标识彩蛋 | √ 3 | √ 3 | X | X |
评分 | ratings | IMDB 收视率, 评级 | √ 5,6,7 | √ 4,5,6 | X | √ 3,4 |
分辨率 | resolution | 4K (๐•ᴗ•๐),1080P,导演剪辑版 | √ 1,4 | √ 1 | X 1 | √ 1 |
丝带 | ribbon | IMDBTop250,烂番茄等 | √ 11,12,13 | √ 10,11 | X | X |
时长 | runtimes | 影片时长 | √ | √ | X | √ 7 |
状态 | status | 播出、回归、取消、结束 | X | √ | X | X |
流媒体 | streaming | Netflix, Hulu, YouT(๐•ᴗ•๐)e | √ 8 | √ 7 | X | X |
版本 | versions | 多版本标志 | √ | √ | √ | √ |
视频格式 | video_format | “REMUX”, “HDTV” | √ 9 | ! 8 | ! 3 | √ 5 |
上面的数字对标下面的电影示例:
对应的电视节目:
对应的季信息:
对应的集信息:
海报指定叠加
libraries:
Movies:
overlay_path:
- pmm: video_format
- pmm: ratings
t(๐•ᴗ•๐)late_variables:
#显示的评级, critic(评论家)、(๐•ᴗ•๐)((๐•ᴗ•๐))和user(用户)
rating1: critic
#评级图像
rating1_image: imdb
#字体
rating1_font: config/metadata/fonts/Impact.ttf
#字体大小
rating1_font_size: 70
#字体颜色
rating1_font_color: #FFFFFF
TV Shows:
overlay_path:
#全局
- pmm: video_format
- pmm: video_format
#作用与季海报
t(๐•ᴗ•๐)late_variables:
overlay_level: season
#作用与季海报
- pmm: resolution
t(๐•ᴗ•๐)late_variables:
overlay_level: season
- pmm: video_format
#作用于集海报
t(๐•ᴗ•๐)late_variables:
overlay_level: episode
if(window.hljsLoader && !document.currentScr(๐•ᴗ•๐).parentNode.hasAttribute('data-s9e-livepreview-onupdate')) {
window.hljsLoader.highlightBlocks(document.currentScr(๐•ᴗ•๐).parentNode);
}
集合整理
pmm
的集合整理也非常的强大, 除了他自己提供的元数据配置以外, 还能自定义整理集合的规则
获奖作品集合
类型 | pmm编码 | 示例解释 | 电影 | 电视 |
all | separator_award | 所有获奖集合 | √ | √ |
BAFTA | bafta | 英国艺术学院奖, 英国最佳电影 | √ 1 | X |
戛纳 | cannes | 戛纳电影节 - 金棕榈奖, 戛纳 2018 | √ 1 | X |
CCA | choice | 2020美国评论家选择奖 | √ 1 | √ 1 |
艾美奖 | emmy | 2021艾美奖 | √ | √ |
金球奖 | golden | 最佳影片 | √ | √ |
奥斯卡 | oscars | 奥斯卡最佳影片 | √ | X |
独立精神奖 | spirit | 2021独立精神奖 | √ 1 | X |
圣丹斯 | sundance | 圣丹斯评审团大奖得主 | √ 1 | X |
其他 | other_award | 柏林金熊奖, 威尼斯金狮奖 | √ 1 | X |
图表数据集合
类型 | pmm编码 | 示例解释 | 电影 | 电视 |
all | separator_chart | 所有图表集合 | √ | √ |
动漫 | anilist | AniList 流行,AniList 季节 | √ | √ |
基础 | basic | 新发布、新剧集 | √ | √ |
热门 | flixpatrol | 迪士尼热门、Hulu热门 、Netflix热门 | √ | √ |
IMDB | imdb | IMDb 热门,IMDb 前 250 名 | √ | √ |
MyAnimeList | myanimelist | MyAnimeList 热门、MyAnimeList 评分最高 | √ | √ |
其他 | other_chart | AniDB 流行、常识选择 | √ | √ |
tautulli | tautulli | Plex 受欢迎,Plex 受关注 | √2 _ | √2 _ |
TMDB | tmdb | TMDb 受欢迎,TMDb 今天播出 | √ | √ |
Trakt | trakt | Trakt 热门、Trakt 趋势 | √ 1 | √ 1 |
一般集合
类型 | pmm编码 | 示例解释 | 电影 | 电视 |
演员 | actor | 阿汤哥, 周星驰 | √ | √ |
音频 | audio_language | 法语音频、韩语音频 | √ | √ |
基础 | based | 改编自书籍,改编自真实故事 | √ | √ |
无集合 | collectionless | 无集合 | √ | √ |
基本分级 | content_rating_cs | 1, 2, 3, 4, 5, 6, 15, 16, 17, 18 | √ | √ |
动漫内容分级 | content_rating_mal | G、PG、PG-13、R、R+、Rx | √ | √ |
英国内容分级 | content_rating_uk | U、PG、12A | √ | √ |
美国内容分级 | content_rating_us | G、PG、NC-17 | √ | √ |
乡村电影/节目 | country | 比利时、印度 | √ | √ |
十年电影/表演 | decade | 2012 年精选、2022 年精选 | √ | √ |
导演 | director | 诺兰(导演)、王家卫(导演) | √ | X |
系列电影/节目 | franchise | 星球大战: 天行者传奇、哥斯拉(动漫) | √ | √ |
类型 | genre | 动作、剧情、科幻 | √ | √ |
网络 | network | Disney Channel, Lifetime | X | √ |
制片人 | producer | 卡梅隆(制片人)、威瑟斯彭(制片人) | √ | X |
分辨率 | resolution | 4K 、1080p 、720p | √ | √ |
季 | seasonal | 复活节、圣诞节 | √ | X |
流媒体 | streaming | 迪士尼电影、HBO Max电视 | √ | √ |
工作室 | studio | 梦工厂工作室、华特迪士尼影业 | √ | √ |
动漫工作室 | studio_anime | 骨头社、吉卜力工作室、东映动画 | √ | √ |
字幕 | s(๐•ᴗ•๐)ti(๐•ᴗ•๐)e_language | 德语字幕, 瑞典语字幕 | √ | √ |
宇宙 | universe | 漫威电影宇宙、(๐•ᴗ•๐)世界、DC电影宇宙 | √ | X |
年 | year | 2010 年精选、2019 年精选 | √ | √ |
编剧 | writer | 卡梅隆(编剧) | √ | X |
上述里面有1, 2标识, 1: Trakt身份验证
, 2: Tautulli身份验证
上面的部分翻译可能有问题, 建议大家可以自己实验一下
集合规则
简单的自定义集合规则: 获取大于2012年的喜剧集合
collections:
#喜剧
Recent Comedy:
#搜索plex类型为喜剧的媒体
plex_search:
all:
#类型
genre: Comedy
#发布年份大于等于2012年
year.gte: 2012
#集合条数最大为20条
limit: 20
if(window.hljsLoader && !document.currentScr(๐•ᴗ•๐).parentNode.hasAttribute('data-s9e-livepreview-onupdate')) {
window.hljsLoader.highlightBlocks(document.currentScr(๐•ᴗ•๐).parentNode);
}
一些pmm定义的集合规则
获取演员为李小龙
的集合规则:
collections:
#李小龙
Bruce Lee:
#从tmdb搜索演员
plex_search:
all:
actor: tmdb
#演员的tmdb_id
tmdb_person: 19429
sort_ti(๐•ᴗ•๐)e: "!_Bruce Lee"
sync_mode: sync
collection_order: release
if(window.hljsLoader && !document.currentScr(๐•ᴗ•๐).parentNode.hasAttribute('data-s9e-livepreview-onupdate')) {
window.hljsLoader.highlightBlocks(document.currentScr(๐•ᴗ•๐).parentNode);
}
整合不同分辨率的集合规则:
##############################################################################
# Resolution Collections #
# Created by Yozora, Bullmoose20, & Sohjiro #
# EDITING THIS FILE MAY CAUSE PULLING NEW UPDATES TO FAIL #
# https://metamanager.wiki/en/latest/defaults/both/resolution.html #
##############################################################################
#模板文件
external_t(๐•ᴗ•๐)lates:
pmm: t(๐•ᴗ•๐)lates
t(๐•ᴗ•๐)late_variables:
#用于集合排序的顺序
collection_section: "120"
#条件语句
conditionals:
#集合海报图片
image:
#默认, 不满足条件时的默认值, 默认使用xx分辨率图片, <<key>>不同的分辨率, 4K、720P
default: resolution/<<key>>
#表达式
conditions:
#style=standards
- style: standards
#查询resolution下面的标准分辨率海报
value: resolution/standards/<<key>>
#匹配关键词, 分辨率的key
key_name:
#表达式匹配
conditions:
#匹配480p匹配为SD
- style: standards
key: 480
value: SD
#匹配720p匹配为HD Ready
- style: standards
key: 720
value: HD Ready
#匹配1080p匹配为Full HD
- style: standards
key: 1080
value: Full HD
#匹配4k匹配为Ultra HD
- style: standards
key: 4k
value: Ultra HD
#静态集合配置
collections:
#分辨率集合
Resolution Collections:
#模板
t(๐•ᴗ•๐)late:
#集合名称
- name: separator
#按照分辨率+空格+xx
separator: resolution
#关键词, 分辨率
key_name: Resolution
#匹配后集合的名称, 这里separator表示分隔符, "分辨率 xxx"这样
#也可以指定名称"整理分辨率集合", 他集合的名称就是显示"整理分辨率集合"
translation_key: separator
#动态集合配置
dynamic_collections:
#分辨率集合
Resolution:
#类型
type: resolution
#海报名称, 分辨率名称 媒体库 s
ti(๐•ᴗ•๐)e_format: <<key_name>> <<library_typeU>>s
#匹配不到的名称
other_name: Other Resolutions <<library_typeU>>s
#模板
t(๐•ᴗ•๐)late:
#智能过滤器
- smart_filter
#共享模板
- shared
other_t(๐•ᴗ•๐)late:
- other_collection
- smart_filter
- shared
#模板变量
t(๐•ᴗ•๐)late_variables:
#搜索词
search_term:
#默认为resolution分辨率
default: resolution
translation_key:
default: resolution
other: resolution_other
#排序顺序
order:
4k: 1_
1080: 2_
720: 3_
480: 4_
#默认值
dynamic:
default: true
#集合包含哪些分辨率
include:
- 4k
- 1080
- 720
- 480
#每个分辨率集合与其对应的动态集合之间的映射关系
addons:
#将8k分辨率的媒体文件放到4k集合中
4k:
- 8k
1080:
- 2k
480:
- 144
- 240
- 360
- sd
- 576
if(window.hljsLoader && !document.currentScr(๐•ᴗ•๐).parentNode.hasAttribute('data-s9e-livepreview-onupdate')) {
window.hljsLoader.highlightBlocks(document.currentScr(๐•ᴗ•๐).parentNode);
}
结果示意:
这个集合功能我没有测试过, 所以有些地方可能不是很准确, 通过各种翻译慢慢摸索的, 勿喷
播放列表
根据流行的电影/电视节目(如漫威电影宇宙或星际迷航)创建播放列表
需要Trakt
身份验证才能使用该功能, 目前会创建这些播放列表
播放列表 | 关键字 | 描述 |
Arrowverse | arrow | DC宇宙中的电影和剧集播放列表(时间线) |
DC Animated Universe | dcau | DC动画宇宙中的电影和剧集播放列表(时间线) |
Dragon Ball | dragonball | 龙珠中的电影和剧集播放列表(时间线) |
Marvel Cinematic Universe | mcu | 漫威电影宇宙中的电影和剧集播放列表(时间线) |
Pokémon | pokemon | 神奇宝贝中的电影和剧集播放列表(时间线) |
Star Trek | startrek | 星际迷航中的电影和剧集播放列表(时间线) |
Star Wars | starwars | 星球大战中的电影和剧集播放列表(时间线) |
Star Wars The Clone Wars | clonewars | 星球大战克隆人战争的电视播放列表(时间线) |
X-Men | xmen | X 战警中的电影和剧集播放列表(时间线) |
当然你也可以自定义播放列表, 太复杂啦, 我看不懂~
我稍微看了下, 是请求Trakt
的页面, 获取对应的集合列表, 然后xxxx, 就弄好播放列表了
正式启动
可能出现的错误提示
在运行脚本的时候你可能会遇到一些错误
SSLError: SSL认证失败了, 修改verify_ssl
配置为false
#这个错误就是 SSL认证失败了,
Max retries exceeded with url: /3/configuration?api_key=(redacted)&append_to_response=countries%2Cj(๐•ᴗ•๐)s%2Clanguages%2Cprimary_translations%2Ctimezones (Caused by SSLError(SSLEOFError(8, 'EOF occurred in violation of protocol (_ssl.c:1002)'))) |
#
TMDb Error: Failed to Connect to https://api.themoviedb.org/3/configuration: HTTPSConnectionPool(redacted): Max retries exceeded with url: /3/configuration?api_key=(redacted)&append_to_response=countries%2Cj(๐•ᴗ•๐)s%2Clanguages%2Cprimary_translations%2Ctimezones (Caused by SSLError(SSLEOFError(8, 'EOF occurred in violation of protocol (_ssl.c:1002)'))) |
# SSLv3认证失败, ssl认证的版本问题, 不知道怎么出现的, 偶尔会有, 一般多试几次就可以了
TMDb Error: Failed to Connect to https://api.themoviedb.org/3/configuration: HTTPSConnectionPool(redacted): Max retries exceeded with url: /3/configuration?api_key=(redacted)&append_to_response=countries%2Cj(๐•ᴗ•๐)s%2Clanguages%2Cprimary_translations%2Ctimezones (Caused by SSLError(SSLError(1, '[SSL: SSLV3_ALERT_HANDSHAKE_FAILURE] sslv3 alert handshake failure (_ssl.c:1002)')))
if(window.hljsLoader && !document.currentScr(๐•ᴗ•๐).parentNode.hasAttribute('data-s9e-livepreview-onupdate')) {
window.hljsLoader.highlightBlocks(document.currentScr(๐•ᴗ•๐).parentNode);
}
Connection refused: 连接服务器失败
#无法请求raw.gith(๐•ᴗ•๐)usercontent.com接口, 需要新增host
#--add-host='raw.gith(๐•ᴗ•๐)usercontent.com:185.199.108.133'
HTTPSConnectionPool(redacted): Max retries exceeded with url: /meisnate12/Plex-Meta-Manager-Anime-IDs/master/pmm_anime_ids.json (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection (๐•ᴗ•๐)ject at 0xffffba789f10>: Failed to establish a new connection: [Errno 111] Connection refused'))
#无法请求api.themoviedb.org接口, 需要新增host
#--add-host='api.themoviedb.org:3.160.188.68'
TMDb Error: Failed to Connect to https://api.themoviedb.org/3/configuration: HTTPSConnectionPool(redacted): Max retries exceeded with url: /3/configuration?api_key=(redacted)&append_to_response=countries%2Cj(๐•ᴗ•๐)s%2Clanguages%2Cprimary_translations%2Ctimezones (Caused by ConnectTimeoutError(<urllib3.connection.HTTPSConnection (๐•ᴗ•๐)ject at 0x1493a4c61610>, 'Connection to api.themoviedb.org timed out. (connect timeout=180)'))
if(window.hljsLoader && !document.currentScr(๐•ᴗ•๐).parentNode.hasAttribute('data-s9e-livepreview-onupdate')) {
window.hljsLoader.highlightBlocks(document.currentScr(๐•ᴗ•๐).parentNode);
}
Read timed out: 连接超时
#不知道哪里的链接超时了, 没有具体url, 一般多重试几下
#我这里遇到的是 连接plex media server超时了, 发现是plex出问题了, 重启之后好了
#具体问题要看他上面的错误堆栈信息
HTTPConnectionPool(redacted): Read timed out. (read timeout=60)
if(window.hljsLoader && !document.currentScr(๐•ᴗ•๐).parentNode.hasAttribute('data-s9e-livepreview-onupdate')) {
window.hljsLoader.highlightBlocks(document.currentScr(๐•ᴗ•๐).parentNode);
}
Plex的一些错误:
#url错误
Plex Error: Plex url is invalid
#检查媒体库名称是否错误
Plex Error: No Plex libraries were connected to
#媒体库填写错误
#检查是否没有添加 metadata_path 这个配置
Config Error: No libraries were found in config
if(window.hljsLoader && !document.currentScr(๐•ᴗ•๐).parentNode.hasAttribute('data-s9e-livepreview-onupdate')) {
window.hljsLoader.highlightBlocks(document.currentScr(๐•ᴗ•๐).parentNode);
}
权限问题:
#config.yml没有权限, 建议直接chmod 777 省心
[Errno 13] Permission denied:/config/config.yml
if(window.hljsLoader && !document.currentScr(๐•ᴗ•๐).parentNode.hasAttribute('data-s9e-livepreview-onupdate')) {
window.hljsLoader.highlightBlocks(document.currentScr(๐•ᴗ•๐).parentNode);
}
运行脚本
所以我们在运行脚本的时候呢, 就要添加host
了这个是运行一次的, 就酱紫
docker run --rm -it -v "/mnt/user/appdata/pmm:/config:rw" --add-host='api.themoviedb.org:3.160.188.68' --add-host='raw.gith(๐•ᴗ•๐)usercontent.com:185.199.108.133' meisnate12/plex-meta-manager --run
if(window.hljsLoader && !document.currentScr(๐•ᴗ•๐).parentNode.hasAttribute('data-s9e-livepreview-onupdate')) {
window.hljsLoader.highlightBlocks(document.currentScr(๐•ᴗ•๐).parentNode);
}
启动后会打印很多日志, 如果遇到错误一定要静下心来看是什么错误, 这鬼东西, 一碰就碎. 动不动就报错!
如果提示SSL
的错误, 可以修改配置文件的verify_ssl
, 我是这么解决的
注意: 一定要看日志, 通过日志发现问题,再去解决, 才能得到好看的海报
这个只是一次性的, 用来测试是否能运行脚本, 如果我们要长期跑的话, 需要启动容器, 并且指定运行时间
docker run -d --privileged \
--name=plex-meta-manager \
-e PUID=0 \
-e PGID=0 \
-e TZ=Asia/Shanghai \
-e PMM_CONFIG=/config/config.yml \ #config配置文件
-e PMM_TIME=03:00 \ #每天启动脚本时间 (๐•ᴗ•๐):MM, 多个逗号隔开(06:00,18:00)
-e PMM_RUN=false \ #true: 启动就运行, 不用等待到达运行时间运行
-e PMM_TEST=false \ #调试模式, 只会启用配置了test: true, 高级功能一般用不到
-v /mnt/user/appdata/pmm:/config \ #配置文件
--restart unless-stopped meisnate12/plex-meta-manager:latest
if(window.hljsLoader && !document.currentScr(๐•ᴗ•๐).parentNode.hasAttribute('data-s9e-livepreview-onupdate')) {
window.hljsLoader.highlightBlocks(document.currentScr(๐•ᴗ•๐).parentNode);
}
具体的运行环境变量配置可以看这里: environmental
除此之外还能设置每个媒体库的计划运行时间
类型 | 描述 | 格式 | 例子 |
小时 | 指定的小时运行(小时) | 小时 | hourly(17) |
每天 | 每天更新一次 | 每天 | daily |
每周 | 每周指定日期更新一次 | 每周(星期) | weekly(sunday) |
每(๐•ᴗ•๐) | 每(๐•ᴗ•๐)指定日期更新一次 | 每(๐•ᴗ•๐)(日) | monthly(1) |
每年 | 每年在指定日期更新一次 | 每年((๐•ᴗ•๐)/日) | yearly(01/30) |
范围 | 只要日期在范围内就更新 | 范围(MM/DD-MM/DD) | range(12/01-12/31) |
从不 | 从不更新 | nerver | never |
不存在 | 如果不存在则更新 | non_existing | non_existing |
全部 | 括号内的选项 | 全部[选项] | all[weekly(sunday), hourly(17)] |
libraries:
Movies:
metadata_path:
- file: config/Movies.yml
#每周一
schedule: weekly(monday)
- pmm: imdb
#每天17点
schedule: hourly(17)
- folder: config/Movies/
#每周三
schedule: weekly(wednesday)
- pmm: genre
#每(๐•ᴗ•๐)一号
schedule: monthly(1)
- pmm: actor
#不更新
schedule: never
overlay_path:
#这个是统一时间的, 不能单独使用不同的时间运行
- schedule: weekly(saturday)
- pmm: audio_codec
- pmm: resolution
- pmm: video_format
playlist_files:
- file: config/Playlists.yml
schedule: weekly(sunday)
if(window.hljsLoader && !document.currentScr(๐•ᴗ•๐).parentNode.hasAttribute('data-s9e-livepreview-onupdate')) {
window.hljsLoader.highlightBlocks(document.currentScr(๐•ᴗ•๐).parentNode);
}
pmm
的可配置性非常非常高, 而且很多功能可以定制, 但是有些东西就是这样, 可配置型高的话, 使用性的复杂度就会成倍提升, 而且有好多整理合集的东西, 匹配的关键字都是英语啥的, 如果用的话又要好一番折腾
我还是喜欢那个海报叠加的功能, 很nice, 祝各位大佬都能整理出自己喜欢的海报