fix personmeta
This commit is contained in:
parent
fcbfb63645
commit
32ff385444
@ -880,11 +880,12 @@ class Emby(metaclass=Singleton):
|
|||||||
logger.error(f"连接Emby出错:" + str(e))
|
logger.error(f"连接Emby出错:" + str(e))
|
||||||
return None
|
return None
|
||||||
|
|
||||||
def post_data(self, url: str, data: str = None) -> Optional[Response]:
|
def post_data(self, url: str, data: str = None, headers: dict = None) -> Optional[Response]:
|
||||||
"""
|
"""
|
||||||
自定义URL从媒体服务器获取数据,其中[HOST]、[APIKEY]、[USER]会被替换成实际的值
|
自定义URL从媒体服务器获取数据,其中[HOST]、[APIKEY]、[USER]会被替换成实际的值
|
||||||
:param url: 请求地址
|
:param url: 请求地址
|
||||||
:param data: 请求数据
|
:param data: 请求数据
|
||||||
|
:param headers: 请求头
|
||||||
"""
|
"""
|
||||||
if not self._host or not self._apikey:
|
if not self._host or not self._apikey:
|
||||||
return None
|
return None
|
||||||
@ -893,9 +894,7 @@ class Emby(metaclass=Singleton):
|
|||||||
.replace("[USER]", self.user)
|
.replace("[USER]", self.user)
|
||||||
try:
|
try:
|
||||||
return RequestUtils(
|
return RequestUtils(
|
||||||
headers={
|
headers=headers,
|
||||||
"Content-Type": "application/json"
|
|
||||||
}
|
|
||||||
).post_res(url=url, data=data)
|
).post_res(url=url, data=data)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error(f"连接Emby出错:" + str(e))
|
logger.error(f"连接Emby出错:" + str(e))
|
||||||
|
@ -566,11 +566,12 @@ class Jellyfin(metaclass=Singleton):
|
|||||||
logger.error(f"连接Jellyfin出错:" + str(e))
|
logger.error(f"连接Jellyfin出错:" + str(e))
|
||||||
return None
|
return None
|
||||||
|
|
||||||
def post_data(self, url: str, data: str = None):
|
def post_data(self, url: str, data: str = None, headers: dict = None) -> Optional[Response]:
|
||||||
"""
|
"""
|
||||||
自定义URL从媒体服务器获取数据,其中[HOST]、[APIKEY]、[USER]会被替换成实际的值
|
自定义URL从媒体服务器获取数据,其中[HOST]、[APIKEY]、[USER]会被替换成实际的值
|
||||||
:param url: 请求地址
|
:param url: 请求地址
|
||||||
:param data: 请求数据
|
:param data: 请求数据
|
||||||
|
:param headers: 请求头
|
||||||
"""
|
"""
|
||||||
if not self._host or not self._apikey:
|
if not self._host or not self._apikey:
|
||||||
return None
|
return None
|
||||||
@ -579,9 +580,7 @@ class Jellyfin(metaclass=Singleton):
|
|||||||
.replace("[USER]", self.user)
|
.replace("[USER]", self.user)
|
||||||
try:
|
try:
|
||||||
return RequestUtils(
|
return RequestUtils(
|
||||||
headers={
|
headers=headers
|
||||||
"Content-Type": "application/json"
|
|
||||||
}
|
|
||||||
).post_res(url=url, data=data)
|
).post_res(url=url, data=data)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error(f"连接Jellyfin出错:" + str(e))
|
logger.error(f"连接Jellyfin出错:" + str(e))
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
import base64
|
||||||
import copy
|
import copy
|
||||||
import datetime
|
import datetime
|
||||||
import json
|
import json
|
||||||
@ -10,6 +11,7 @@ import pytz
|
|||||||
import zhconv
|
import zhconv
|
||||||
from apscheduler.schedulers.background import BackgroundScheduler
|
from apscheduler.schedulers.background import BackgroundScheduler
|
||||||
from apscheduler.triggers.cron import CronTrigger
|
from apscheduler.triggers.cron import CronTrigger
|
||||||
|
from requests import RequestException
|
||||||
|
|
||||||
from app.chain.mediaserver import MediaServerChain
|
from app.chain.mediaserver import MediaServerChain
|
||||||
from app.chain.tmdb import TmdbChain
|
from app.chain.tmdb import TmdbChain
|
||||||
@ -22,6 +24,8 @@ from app.modules.plex import Plex
|
|||||||
from app.plugins import _PluginBase
|
from app.plugins import _PluginBase
|
||||||
from app.schemas import MediaInfo, MediaServerItem
|
from app.schemas import MediaInfo, MediaServerItem
|
||||||
from app.schemas.types import EventType, MediaType
|
from app.schemas.types import EventType, MediaType
|
||||||
|
from app.utils.common import retry
|
||||||
|
from app.utils.http import RequestUtils
|
||||||
from app.utils.string import StringUtils
|
from app.utils.string import StringUtils
|
||||||
|
|
||||||
|
|
||||||
@ -658,7 +662,10 @@ class PersonMeta(_PluginBase):
|
|||||||
try:
|
try:
|
||||||
res = Emby().post_data(
|
res = Emby().post_data(
|
||||||
url=f'[HOST]emby/Items/{itemid}?api_key=[APIKEY]&reqformat=json',
|
url=f'[HOST]emby/Items/{itemid}?api_key=[APIKEY]&reqformat=json',
|
||||||
data=json.dumps(iteminfo)
|
data=json.dumps(iteminfo),
|
||||||
|
headers={
|
||||||
|
"Content-Type": "application/json"
|
||||||
|
}
|
||||||
)
|
)
|
||||||
if res and res.status_code in [200, 204]:
|
if res and res.status_code in [200, 204]:
|
||||||
return True
|
return True
|
||||||
@ -676,7 +683,10 @@ class PersonMeta(_PluginBase):
|
|||||||
try:
|
try:
|
||||||
res = Jellyfin().post_data(
|
res = Jellyfin().post_data(
|
||||||
url=f'[HOST]Items/{itemid}?api_key=[APIKEY]',
|
url=f'[HOST]Items/{itemid}?api_key=[APIKEY]',
|
||||||
data=json.dumps(iteminfo)
|
data=json.dumps(iteminfo),
|
||||||
|
headers={
|
||||||
|
"Content-Type": "application/json"
|
||||||
|
}
|
||||||
)
|
)
|
||||||
if res and res.status_code in [200, 204]:
|
if res and res.status_code in [200, 204]:
|
||||||
return True
|
return True
|
||||||
@ -713,19 +723,40 @@ class PersonMeta(_PluginBase):
|
|||||||
return __set_plex_iteminfo()
|
return __set_plex_iteminfo()
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
|
@retry(RequestException, logger=logger)
|
||||||
def set_item_image(server: str, itemid: str, imageurl: str):
|
def set_item_image(server: str, itemid: str, imageurl: str):
|
||||||
"""
|
"""
|
||||||
更新媒体项图片
|
更新媒体项图片
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def __set_emby_item_image():
|
def __download_image():
|
||||||
|
"""
|
||||||
|
下载图片
|
||||||
|
"""
|
||||||
|
try:
|
||||||
|
logger.info(f"正在下载图片:{imageurl} ...")
|
||||||
|
r = RequestUtils().get_res(url=imageurl, raise_exception=True)
|
||||||
|
if r:
|
||||||
|
return base64.b64encode(r.content).decode()
|
||||||
|
else:
|
||||||
|
logger.info(f"{imageurl} 图片下载失败,请检查网络连通性")
|
||||||
|
except Exception as err:
|
||||||
|
logger.error(f"下载图片失败:{err}")
|
||||||
|
return None
|
||||||
|
|
||||||
|
def __set_emby_item_image(_base64: str):
|
||||||
"""
|
"""
|
||||||
更新Emby媒体项图片
|
更新Emby媒体项图片
|
||||||
"""
|
"""
|
||||||
try:
|
try:
|
||||||
url = f'[HOST]emby/Items/{itemid}/Images/Primary/0/Url?api_key=[APIKEY]'
|
url = f'[HOST]emby/Items/{itemid}/Images/Primary?api_key=[APIKEY]'
|
||||||
data = json.dumps({'Url': imageurl})
|
res = Emby().post_data(
|
||||||
res = Emby().post_data(url=url, data=data)
|
url=url,
|
||||||
|
data=_base64,
|
||||||
|
headers={
|
||||||
|
"Content-Type": "image/png"
|
||||||
|
}
|
||||||
|
)
|
||||||
if res and res.status_code in [200, 204]:
|
if res and res.status_code in [200, 204]:
|
||||||
return True
|
return True
|
||||||
else:
|
else:
|
||||||
@ -765,11 +796,15 @@ class PersonMeta(_PluginBase):
|
|||||||
return False
|
return False
|
||||||
|
|
||||||
if server == "emby":
|
if server == "emby":
|
||||||
return __set_emby_item_image()
|
# 下载图片获取base64
|
||||||
|
image_base64 = __download_image()
|
||||||
|
if image_base64:
|
||||||
|
return __set_emby_item_image(image_base64)
|
||||||
elif server == "jellyfin":
|
elif server == "jellyfin":
|
||||||
return __set_jellyfin_item_image()
|
return __set_jellyfin_item_image()
|
||||||
else:
|
else:
|
||||||
return __set_plex_item_image()
|
return __set_plex_item_image()
|
||||||
|
return None
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def __get_chinese_name(personinfo: dict) -> str:
|
def __get_chinese_name(personinfo: dict) -> str:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user