fix Emby元数据刷新v2.1.8

优化刷新封面逻辑(原则是封面不是TMDB封面就刷新)
This commit is contained in:
thsrite
2024-12-18 15:09:45 +08:00
parent cc639f2161
commit 5d305430fe
2 changed files with 27 additions and 8 deletions

View File

@@ -3,11 +3,12 @@
"name": "Emby元数据刷新",
"description": "定时刷新Emby媒体库元数据演职人员中文。",
"labels": "Emby",
"version": "2.1.7",
"version": "2.1.8",
"icon": "https://raw.githubusercontent.com/thsrite/MoviePilot-Plugins/main/icons/emby-icon.png",
"author": "thsrite",
"level": 1,
"history": {
"v2.1.8": "优化刷新封面逻辑原则是封面不是TMDB封面就刷新",
"v2.1.7": "兼容Emby插件新名称神医助手",
"v2.1.6": "联动Emby Strm Assistant插件独占模式",
"v2.1.5": "媒体库未连接不继续任务",

View File

@@ -36,7 +36,7 @@ class EmbyMetaRefresh(_PluginBase):
# 插件图标
plugin_icon = "https://raw.githubusercontent.com/thsrite/MoviePilot-Plugins/main/icons/emby-icon.png"
# 插件版本
plugin_version = "2.1.7"
plugin_version = "2.1.8"
# 插件作者
plugin_author = "thsrite"
# 作者主页
@@ -215,12 +215,28 @@ class EmbyMetaRefresh(_PluginBase):
# 刷新媒体库
for item in latest:
# 信息不全再刷新
refresh_meta = "false"
refresh_image = "false"
if (str(item.get('Type')) == 'Episode' and str(
item.get("Name")) == f"{item.get('IndexNumber')}") or not item.get(
"Overview") or not item.get("ImageTags"):
item.get("Name")) == f"{item.get('IndexNumber')}"):
refresh_meta = "true"
if not item.get("Overview") or not item.get("ImageTags") or not item.get("PrimaryImageAspectRatio"):
refresh_image = "true"
else:
# 判断图片是否tmdb封面不是则刷新
if str(item.get('Type')) == 'Episode' and float(item.get("PrimaryImageAspectRatio")) >= 1.8:
refresh_image = "true"
if str(item.get('Type')) == 'Movie' and float(item.get("PrimaryImageAspectRatio")) >= 0.7:
refresh_image = "true"
logger.error(
f"最新媒体:{'电视剧' if str(item.get('Type')) == 'Episode' else '电影'} {'%s S%02dE%02d %s' % (item.get('SeriesName'), item.get('ParentIndexNumber'), item.get('IndexNumber'), item.get('Name')) if str(item.get('Type')) == 'Episode' else item.get('Name')} {item.get('Id')} {item.get('PrimaryImageAspectRatio')} {refresh_meta} {refresh_image} 开始处理")
if refresh_meta == "true" or refresh_image == "true":
logger.info(
f"开始刷新媒体库元数据,最新媒体:{'电视剧' if str(item.get('Type')) == 'Episode' else '电影'} {'%s S%02dE%02d %s' % (item.get('SeriesName'), item.get('ParentIndexNumber'), item.get('IndexNumber'), item.get('Name')) if str(item.get('Type')) == 'Episode' else item.get('Name')} {item.get('Id')}")
self.__refresh_emby_library_by_id(item.get("Id"))
self.__refresh_emby_library_by_id(item_id=item.get("Id"),
refresh_meta=refresh_meta,
refresh_image=refresh_image)
if self._interval:
logger.info(f"等待 {self._interval} 秒后继续刷新")
time.sleep(int(self._interval))
@@ -893,7 +909,7 @@ class EmbyMetaRefresh(_PluginBase):
return None
return None
def __refresh_emby_library_by_id(self, item_id: str) -> bool:
def __refresh_emby_library_by_id(self, item_id: str, refresh_meta: str = None, refresh_image: str = None) -> bool:
"""
通知Emby刷新一个项目的媒体库
"""
@@ -901,7 +917,9 @@ class EmbyMetaRefresh(_PluginBase):
return False
req_url = "%semby/Items/%s/Refresh?Recursive=true&MetadataRefreshMode=FullRefresh" \
"&ImageRefreshMode=FullRefresh&ReplaceAllMetadata=%s&ReplaceAllImages=%s&api_key=%s" % (
self._EMBY_HOST, item_id, self._ReplaceAllMetadata, self._ReplaceAllImages, self._EMBY_APIKEY)
self._EMBY_HOST, item_id, refresh_meta or self._ReplaceAllMetadata,
refresh_image or self._ReplaceAllImages,
self._EMBY_APIKEY)
try:
with RequestUtils().post_res(req_url) as res:
if res:
@@ -919,7 +937,7 @@ class EmbyMetaRefresh(_PluginBase):
"""
if not self._EMBY_HOST or not self._EMBY_APIKEY:
return []
req_url = "%semby/Users/%s/Items?Limit=%s&api_key=%s&SortBy=DateCreated,SortName&SortOrder=Descending&IncludeItemTypes=Episode,Movie&Recursive=true&Fields=DateCreated,Overview" % (
req_url = "%semby/Users/%s/Items?Limit=%s&api_key=%s&SortBy=DateCreated,SortName&SortOrder=Descending&IncludeItemTypes=Episode,Movie&Recursive=true&Fields=DateCreated,Overview,PrimaryImageAspectRatio" % (
self._EMBY_HOST, self._EMBY_USER, limit, self._EMBY_APIKEY)
try:
with RequestUtils().get_res(req_url) as res: