Merge pull request #46 from developer-wlj/wlj0807

This commit is contained in:
jxxghp 2023-08-09 06:29:55 +08:00 committed by GitHub
commit 293b992ac0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -1,4 +1,5 @@
import datetime
from functools import reduce
from pathlib import Path
from typing import Optional, Any, List, Dict, Tuple
from xml.dom.minidom import parseString
@ -398,6 +399,8 @@ class BestFilmVersion(_PluginBase):
"&Limit=20" \
"&apikey={APIKEY}"
resp = self.get_items(Jellyfin().get_data(url))
if not resp:
continue
all_item.extend(resp)
elif settings.MEDIASERVER == 'emby':
# 获取所有user
@ -417,12 +420,21 @@ class BestFilmVersion(_PluginBase):
"&EnableTotalRecordCount=false" \
"&Limit=20&api_key={APIKEY}"
resp = self.get_items(Emby().get_data(url))
if not resp:
continue
all_item.extend(resp)
else:
resp = self.plex_get_watchlist()
if not resp:
return
all_item.extend(resp)
for data in all_item:
def function(y, x):
return y if (x['Name'] in [i['Name'] for i in y]) else (lambda z, u: (z.append(u), z))(y, x)[1]
# all_item 根据电影名去重
result = reduce(function, all_item, [])
for data in result:
# 检查缓存
if data.get('Name') in caches:
continue
@ -520,6 +532,8 @@ class BestFilmVersion(_PluginBase):
elem = dom.documentElement
# 获取 指定元素
eles = elem.getElementsByTagName('Video')
if not eles:
return []
for ele in eles:
data = {}
# 获取标签中内容
@ -539,20 +553,29 @@ class BestFilmVersion(_PluginBase):
logger.error(f"连接Plex/Watchlist 出错:" + str(e))
return []
def plex_get_iteminfo(self, itemid):
@staticmethod
def plex_get_iteminfo(itemid):
url = f"https://metadata.provider.plex.tv/library/metadata/{itemid}" \
f"?X-Plex-Token={settings.PLEX_TOKEN}"
ids = []
try:
resp = RequestUtils().get_res(url=url)
resp = RequestUtils(accept_type="application/json, text/plain, */*").get_res(url=url)
if resp:
dom = parseString(resp.text)
# 获取文档元素对象
elem = dom.documentElement
# 获取 指定元素
eles = elem.getElementsByTagName('Video')
for ele in eles:
# 获取标签中内容
return {"ExternalUrls": "TheMovieDb", "Url": f"{self.ele_get_tmdbid(ele)}"}
metadata = resp.json().get('MediaContainer').get('Metadata')
for item in metadata:
_guid = item.get('Guid')
if not _guid:
continue
id_list = [h.get('id') for h in _guid if h.get('id').__contains__("tmdb")]
if not id_list:
continue
ids.append({'Name': 'TheMovieDb', 'Url': id_list[0]})
if not ids:
return []
return {'ExternalUrls': ids}
else:
logger.error(f"Plex/Items 未获取到返回数据")
return []
@ -560,19 +583,6 @@ class BestFilmVersion(_PluginBase):
logger.error(f"连接Plex/Items 出错:" + str(e))
return []
@staticmethod
def ele_get_tmdbid(ele):
data = []
for h in ele.getElementsByTagName('Guid'):
tmdbid = h.attributes['id'].nodeValue if h.attributes['id'].nodeValue.__contains__("tmdb") else ""
if not tmdbid:
continue
obj = {"Name": "TheMovieDb", "Url": f"{tmdbid}"}
data.append(obj)
return data
logger.warn(f"连接Plex/Guid 警告:" + "未获取到tmdbid数据")
return data
@eventmanager.register(EventType.WebhookMessage)
def webhook_message_action(self, event):