fix c674e320
This commit is contained in:
parent
4dcefb141a
commit
7587946d51
@ -48,33 +48,13 @@ class MediaServerChain(ChainBase):
|
|||||||
"""
|
"""
|
||||||
获取媒体服务器正在播放信息
|
获取媒体服务器正在播放信息
|
||||||
"""
|
"""
|
||||||
playing_items = self.run_module("mediaserver_playing", count=100, server=server, username=username)
|
return self.run_module("mediaserver_playing", count=count, server=server, username=username)
|
||||||
# 判断是否在同步的媒体数据中
|
|
||||||
exists_items = []
|
|
||||||
for item in playing_items:
|
|
||||||
if self.dboper.exists(mtype=item.type,
|
|
||||||
title=item.title,
|
|
||||||
year=item.year):
|
|
||||||
exists_items.append(item)
|
|
||||||
if len(exists_items) == count:
|
|
||||||
break
|
|
||||||
return exists_items
|
|
||||||
|
|
||||||
def latest(self, count: int = 20, server: str = None, username: str = None) -> List[schemas.MediaServerPlayItem]:
|
def latest(self, count: int = 20, server: str = None, username: str = None) -> List[schemas.MediaServerPlayItem]:
|
||||||
"""
|
"""
|
||||||
获取媒体服务器最新入库条目
|
获取媒体服务器最新入库条目
|
||||||
"""
|
"""
|
||||||
latest_items = self.run_module("mediaserver_latest", count=100, server=server, username=username)
|
return self.run_module("mediaserver_latest", count=count, server=server, username=username)
|
||||||
# 判断是否在同步的媒体数据中
|
|
||||||
exists_items = []
|
|
||||||
for item in latest_items:
|
|
||||||
if self.dboper.exists(mtype=item.type,
|
|
||||||
title=item.title,
|
|
||||||
year=item.subtitle):
|
|
||||||
exists_items.append(item)
|
|
||||||
if len(exists_items) == count:
|
|
||||||
break
|
|
||||||
return exists_items
|
|
||||||
|
|
||||||
def get_play_url(self, server: str, item_id: Union[str, int]) -> Optional[str]:
|
def get_play_url(self, server: str, item_id: Union[str, int]) -> Optional[str]:
|
||||||
"""
|
"""
|
||||||
|
@ -971,15 +971,23 @@ class Emby(metaclass=Singleton):
|
|||||||
else:
|
else:
|
||||||
user = self.user
|
user = self.user
|
||||||
req_url = (f"{self._host}Users/{user}/Items/Resume?"
|
req_url = (f"{self._host}Users/{user}/Items/Resume?"
|
||||||
f"Limit={num}&MediaTypes=Video&api_key={self._apikey}&Fields=ProductionYear")
|
f"Limit=100&MediaTypes=Video&api_key={self._apikey}&Fields=ProductionYear,Path")
|
||||||
try:
|
try:
|
||||||
res = RequestUtils().get_res(req_url)
|
res = RequestUtils().get_res(req_url)
|
||||||
if res:
|
if res:
|
||||||
result = res.json().get("Items") or []
|
result = res.json().get("Items") or []
|
||||||
ret_resume = []
|
ret_resume = []
|
||||||
|
# 用户媒体库列表(排除黑名单)
|
||||||
|
user_librarys = self.get_librarys(username=user)
|
||||||
for item in result:
|
for item in result:
|
||||||
|
if len(ret_resume) == num:
|
||||||
|
break
|
||||||
if item.get("Type") not in ["Movie", "Episode"]:
|
if item.get("Type") not in ["Movie", "Episode"]:
|
||||||
continue
|
continue
|
||||||
|
item_path = item.get("Path")
|
||||||
|
if item_path and user_librarys and not any(
|
||||||
|
library.name in item_path for library in user_librarys):
|
||||||
|
continue
|
||||||
item_type = MediaType.MOVIE.value if item.get("Type") == "Movie" else MediaType.TV.value
|
item_type = MediaType.MOVIE.value if item.get("Type") == "Movie" else MediaType.TV.value
|
||||||
link = self.get_play_url(item.get("Id"))
|
link = self.get_play_url(item.get("Id"))
|
||||||
if item_type == MediaType.MOVIE.value:
|
if item_type == MediaType.MOVIE.value:
|
||||||
@ -1002,7 +1010,6 @@ class Emby(metaclass=Singleton):
|
|||||||
ret_resume.append(schemas.MediaServerPlayItem(
|
ret_resume.append(schemas.MediaServerPlayItem(
|
||||||
id=item.get("Id"),
|
id=item.get("Id"),
|
||||||
title=title,
|
title=title,
|
||||||
year=item.get("ProductionYear"),
|
|
||||||
subtitle=subtitle,
|
subtitle=subtitle,
|
||||||
type=item_type,
|
type=item_type,
|
||||||
image=image,
|
image=image,
|
||||||
@ -1027,15 +1034,23 @@ class Emby(metaclass=Singleton):
|
|||||||
else:
|
else:
|
||||||
user = self.user
|
user = self.user
|
||||||
req_url = (f"{self._host}Users/{user}/Items/Latest?"
|
req_url = (f"{self._host}Users/{user}/Items/Latest?"
|
||||||
f"Limit={num}&MediaTypes=Video&api_key={self._apikey}&Fields=ProductionYear")
|
f"Limit=100&MediaTypes=Video&api_key={self._apikey}&Fields=ProductionYear,Path")
|
||||||
try:
|
try:
|
||||||
res = RequestUtils().get_res(req_url)
|
res = RequestUtils().get_res(req_url)
|
||||||
if res:
|
if res:
|
||||||
result = res.json() or []
|
result = res.json() or []
|
||||||
ret_latest = []
|
ret_latest = []
|
||||||
|
# 用户媒体库列表(排除黑名单)
|
||||||
|
user_librarys = self.get_librarys(username=user)
|
||||||
for item in result:
|
for item in result:
|
||||||
|
if len(ret_latest) == num:
|
||||||
|
break
|
||||||
if item.get("Type") not in ["Movie", "Series"]:
|
if item.get("Type") not in ["Movie", "Series"]:
|
||||||
continue
|
continue
|
||||||
|
item_path = item.get("Path")
|
||||||
|
if item_path and user_librarys and not any(
|
||||||
|
library.name in item_path for library in user_librarys):
|
||||||
|
continue
|
||||||
item_type = MediaType.MOVIE.value if item.get("Type") == "Movie" else MediaType.TV.value
|
item_type = MediaType.MOVIE.value if item.get("Type") == "Movie" else MediaType.TV.value
|
||||||
link = self.get_play_url(item.get("Id"))
|
link = self.get_play_url(item.get("Id"))
|
||||||
image = self.__get_local_image_by_id(item_id=item.get("Id"))
|
image = self.__get_local_image_by_id(item_id=item.get("Id"))
|
||||||
|
@ -654,15 +654,23 @@ class Jellyfin(metaclass=Singleton):
|
|||||||
else:
|
else:
|
||||||
user = self.user
|
user = self.user
|
||||||
req_url = (f"{self._host}Users/{user}/Items/Resume?"
|
req_url = (f"{self._host}Users/{user}/Items/Resume?"
|
||||||
f"Limit={num}&MediaTypes=Video&api_key={self._apikey}&Fields=ProductionYear")
|
f"Limit=100&MediaTypes=Video&api_key={self._apikey}&Fields=ProductionYear,Path")
|
||||||
try:
|
try:
|
||||||
res = RequestUtils().get_res(req_url)
|
res = RequestUtils().get_res(req_url)
|
||||||
if res:
|
if res:
|
||||||
result = res.json().get("Items") or []
|
result = res.json().get("Items") or []
|
||||||
ret_resume = []
|
ret_resume = []
|
||||||
|
# 用户媒体库列表(排除黑名单)
|
||||||
|
user_librarys = self.get_librarys(username=user)
|
||||||
for item in result:
|
for item in result:
|
||||||
|
if len(ret_resume) == num:
|
||||||
|
break
|
||||||
if item.get("Type") not in ["Movie", "Episode"]:
|
if item.get("Type") not in ["Movie", "Episode"]:
|
||||||
continue
|
continue
|
||||||
|
item_path = item.get("Path")
|
||||||
|
if item_path and user_librarys and not any(
|
||||||
|
library.name in item_path for library in user_librarys):
|
||||||
|
continue
|
||||||
item_type = MediaType.MOVIE.value if item.get("Type") == "Movie" else MediaType.TV.value
|
item_type = MediaType.MOVIE.value if item.get("Type") == "Movie" else MediaType.TV.value
|
||||||
link = self.get_play_url(item.get("Id"))
|
link = self.get_play_url(item.get("Id"))
|
||||||
if item.get("BackdropImageTags"):
|
if item.get("BackdropImageTags"):
|
||||||
@ -679,7 +687,6 @@ class Jellyfin(metaclass=Singleton):
|
|||||||
ret_resume.append(schemas.MediaServerPlayItem(
|
ret_resume.append(schemas.MediaServerPlayItem(
|
||||||
id=item.get("Id"),
|
id=item.get("Id"),
|
||||||
title=title,
|
title=title,
|
||||||
year=item.get("ProductionYear"),
|
|
||||||
subtitle=subtitle,
|
subtitle=subtitle,
|
||||||
type=item_type,
|
type=item_type,
|
||||||
image=image,
|
image=image,
|
||||||
@ -704,15 +711,23 @@ class Jellyfin(metaclass=Singleton):
|
|||||||
else:
|
else:
|
||||||
user = self.user
|
user = self.user
|
||||||
req_url = (f"{self._host}Users/{user}/Items/Latest?"
|
req_url = (f"{self._host}Users/{user}/Items/Latest?"
|
||||||
f"Limit={num}&MediaTypes=Video&api_key={self._apikey}&Fields=ProductionYear")
|
f"Limit=100&MediaTypes=Video&api_key={self._apikey}&Fields=ProductionYear,Path")
|
||||||
try:
|
try:
|
||||||
res = RequestUtils().get_res(req_url)
|
res = RequestUtils().get_res(req_url)
|
||||||
if res:
|
if res:
|
||||||
result = res.json() or []
|
result = res.json() or []
|
||||||
ret_latest = []
|
ret_latest = []
|
||||||
|
# 用户媒体库列表(排除黑名单)
|
||||||
|
user_librarys = self.get_librarys(username=user)
|
||||||
for item in result:
|
for item in result:
|
||||||
|
if len(ret_latest) == num:
|
||||||
|
break
|
||||||
if item.get("Type") not in ["Movie", "Series"]:
|
if item.get("Type") not in ["Movie", "Series"]:
|
||||||
continue
|
continue
|
||||||
|
item_path = item.get("Path")
|
||||||
|
if item_path and user_librarys and not any(
|
||||||
|
library.name in item_path for library in user_librarys):
|
||||||
|
continue
|
||||||
item_type = MediaType.MOVIE.value if item.get("Type") == "Movie" else MediaType.TV.value
|
item_type = MediaType.MOVIE.value if item.get("Type") == "Movie" else MediaType.TV.value
|
||||||
link = self.get_play_url(item.get("Id"))
|
link = self.get_play_url(item.get("Id"))
|
||||||
image = self.__get_local_image_by_id(item_id=item.get("Id"))
|
image = self.__get_local_image_by_id(item_id=item.get("Id"))
|
||||||
|
@ -151,7 +151,6 @@ class MediaServerPlayItem(BaseModel):
|
|||||||
"""
|
"""
|
||||||
id: Optional[Union[str, int]] = None
|
id: Optional[Union[str, int]] = None
|
||||||
title: Optional[str] = None
|
title: Optional[str] = None
|
||||||
year: Optional[str] = None
|
|
||||||
subtitle: Optional[str] = None
|
subtitle: Optional[str] = None
|
||||||
type: Optional[str] = None
|
type: Optional[str] = None
|
||||||
image: Optional[str] = None
|
image: Optional[str] = None
|
||||||
|
Loading…
x
Reference in New Issue
Block a user