feat: plex最近添加过滤黑名单

This commit is contained in:
zhu0823 2024-04-30 19:14:08 +08:00
parent 8aef488ab6
commit 51dc2c33a0

View File

@ -647,13 +647,51 @@ class Plex:
""" """
if not self._plex: if not self._plex:
return None return None
items = self._plex.fetchItems('/library/recentlyAdded', container_start=0, container_size=num) # 请求参数(除黑名单)
allow_library = ",".join([lib.id for lib in self.get_librarys()])
params = {
"contentDirectoryID": allow_library,
"count": num,
"excludeContinueWatching": 1
}
ret_resume = [] ret_resume = []
for item in items: sub_result = []
item_type = MediaType.MOVIE.value if item.TYPE == "movie" else MediaType.TV.value offset = 0
link = self.get_play_url(item.key) while True:
title = item.title if item_type == MediaType.MOVIE.value else \ if len(ret_resume) >= num:
"%s%s" % (item.parentTitle, item.index) break
# 获取所有资料库
hubs = self._plex.fetchItems(
'/hubs/promoted',
container_start=offset,
container_size=num,
maxresults=num,
params=params
)
if len(hubs) == 0:
break
# 合并排序
for hub in hubs:
for item in hub.items:
sub_result.append(item)
sub_result.sort(key=lambda x: x.addedAt, reverse=True)
for item in sub_result:
if len(ret_resume) >= num:
break
item_type = ""
title = ""
if item.TYPE == "movie":
item_type = MediaType.MOVIE.value
title = item.title
elif item.TYPE == "season":
item_type = MediaType.TV.value
title = "%s%s" % (item.parentTitle, item.index)
elif item.TYPE == "episode":
item_type = MediaType.TV.value
title = "%s%s季 第%s" % (item.grandparentTitle, item.parentIndex, item.index)
link = self.get_play_url(item.key).rstrip('/children')
image = item.posterUrl image = item.posterUrl
ret_resume.append(schemas.MediaServerPlayItem( ret_resume.append(schemas.MediaServerPlayItem(
id=item.key, id=item.key,
@ -663,4 +701,7 @@ class Plex:
image=image, image=image,
link=link link=link
)) ))
offset += num
return ret_resume[:num] return ret_resume[:num]