mirror of
https://github.com/jxxghp/MoviePilot.git
synced 2026-09-04 23:17:20 +08:00
fix episodes group
This commit is contained in:
@@ -136,6 +136,24 @@ def category(_: schemas.TokenPayload = Depends(verify_token)) -> Any:
|
|||||||
return MediaChain().media_category() or {}
|
return MediaChain().media_category() or {}
|
||||||
|
|
||||||
|
|
||||||
|
@router.get("/group/seasons/{episode_group}", summary="查询剧集组季信息", response_model=List[schemas.MediaSeason])
|
||||||
|
def group_seasons(episode_group: str, _: schemas.TokenPayload = Depends(verify_token)) -> Any:
|
||||||
|
"""
|
||||||
|
查询剧集组季信息(themoviedb)
|
||||||
|
"""
|
||||||
|
return TmdbChain().tmdb_group_seasons(group_id=episode_group)
|
||||||
|
|
||||||
|
|
||||||
|
@router.get("/groups/{tmdbid}", summary="查询媒体剧集组", response_model=List[dict])
|
||||||
|
def seasons(tmdbid: int, _: schemas.TokenPayload = Depends(verify_token)) -> Any:
|
||||||
|
"""
|
||||||
|
查询媒体剧集组列表(themoviedb)
|
||||||
|
"""
|
||||||
|
mediainfo = MediaChain().recognize_media(tmdbid=tmdbid, mtype=MediaType.TV)
|
||||||
|
if not mediainfo:
|
||||||
|
return []
|
||||||
|
return mediainfo.episode_groups
|
||||||
|
|
||||||
@router.get("/seasons", summary="查询媒体季信息", response_model=List[schemas.MediaSeason])
|
@router.get("/seasons", summary="查询媒体季信息", response_model=List[schemas.MediaSeason])
|
||||||
def seasons(mediaid: Optional[str] = None,
|
def seasons(mediaid: Optional[str] = None,
|
||||||
title: Optional[str] = None,
|
title: Optional[str] = None,
|
||||||
|
|||||||
@@ -149,7 +149,7 @@ class SubscribeChain(ChainBase, metaclass=Singleton):
|
|||||||
season = 1
|
season = 1
|
||||||
# 总集数
|
# 总集数
|
||||||
if not kwargs.get('total_episode'):
|
if not kwargs.get('total_episode'):
|
||||||
if not mediainfo.seasons:
|
if not mediainfo.seasons or episode_group:
|
||||||
# 补充媒体信息
|
# 补充媒体信息
|
||||||
mediainfo = self.recognize_media(mtype=mediainfo.type,
|
mediainfo = self.recognize_media(mtype=mediainfo.type,
|
||||||
tmdbid=mediainfo.tmdb_id,
|
tmdbid=mediainfo.tmdb_id,
|
||||||
|
|||||||
@@ -70,6 +70,13 @@ class TmdbChain(ChainBase, metaclass=Singleton):
|
|||||||
"""
|
"""
|
||||||
return self.run_module("tmdb_seasons", tmdbid=tmdbid)
|
return self.run_module("tmdb_seasons", tmdbid=tmdbid)
|
||||||
|
|
||||||
|
def tmdb_group_seasons(self, group_id: str) -> List[schemas.TmdbSeason]:
|
||||||
|
"""
|
||||||
|
根据剧集组ID查询themoviedb所有季集信息
|
||||||
|
:param group_id: 剧集组ID
|
||||||
|
"""
|
||||||
|
return self.run_module("tmdb_group_seasons", group_id=group_id)
|
||||||
|
|
||||||
def tmdb_episodes(self, tmdbid: int, season: int, episode_group: Optional[str] = None) -> List[schemas.TmdbEpisode]:
|
def tmdb_episodes(self, tmdbid: int, season: int, episode_group: Optional[str] = None) -> List[schemas.TmdbEpisode]:
|
||||||
"""
|
"""
|
||||||
根据TMDBID查询某季的所有信信息
|
根据TMDBID查询某季的所有信信息
|
||||||
|
|||||||
@@ -84,8 +84,6 @@ class Subscribe(Base):
|
|||||||
media_category = Column(String)
|
media_category = Column(String)
|
||||||
# 过滤规则组
|
# 过滤规则组
|
||||||
filter_groups = Column(JSON, default=list)
|
filter_groups = Column(JSON, default=list)
|
||||||
# 可选剧集组
|
|
||||||
episode_groups = Column(JSON, default=list)
|
|
||||||
# 选择的剧集组
|
# 选择的剧集组
|
||||||
episode_group = Column(String)
|
episode_group = Column(String)
|
||||||
|
|
||||||
|
|||||||
@@ -34,7 +34,6 @@ class SubscribeOper(DbOper):
|
|||||||
backdrop=mediainfo.get_backdrop_image(),
|
backdrop=mediainfo.get_backdrop_image(),
|
||||||
vote=mediainfo.vote_average,
|
vote=mediainfo.vote_average,
|
||||||
description=mediainfo.overview,
|
description=mediainfo.overview,
|
||||||
episode_groups=mediainfo.episode_groups,
|
|
||||||
date=time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()),
|
date=time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()),
|
||||||
**kwargs)
|
**kwargs)
|
||||||
subscribe.create(self._db)
|
subscribe.create(self._db)
|
||||||
|
|||||||
@@ -488,12 +488,28 @@ class TheMovieDbModule(_ModuleBase):
|
|||||||
tmdb_info = self.tmdb.get_info(tmdbid=tmdbid, mtype=MediaType.TV)
|
tmdb_info = self.tmdb.get_info(tmdbid=tmdbid, mtype=MediaType.TV)
|
||||||
if not tmdb_info:
|
if not tmdb_info:
|
||||||
return []
|
return []
|
||||||
return [schemas.TmdbSeason(**season)
|
return [schemas.TmdbSeason(**sea)
|
||||||
for season in tmdb_info.get("seasons", []) if season.get("season_number")]
|
for sea in tmdb_info.get("seasons", []) if sea.get("season_number")]
|
||||||
|
|
||||||
|
def tmdb_group_seasons(self, group_id: str) -> List[schemas.TmdbSeason]:
|
||||||
|
"""
|
||||||
|
根据剧集组ID查询themoviedb所有季集信息
|
||||||
|
:param group_id: 剧集组ID
|
||||||
|
"""
|
||||||
|
group_seasons = self.tmdb.get_tv_group_seasons(group_id)
|
||||||
|
if not group_seasons:
|
||||||
|
return []
|
||||||
|
return [schemas.TmdbSeason(
|
||||||
|
season_number=sea.get("order"),
|
||||||
|
name=sea.get("name"),
|
||||||
|
episode_count=len(sea.get("episodes") or []),
|
||||||
|
air_date=sea.get("episodes")[0].get("air_date") if sea.get("episodes") else None,
|
||||||
|
) for sea in group_seasons]
|
||||||
|
|
||||||
|
|
||||||
def tmdb_episodes(self, tmdbid: int, season: int, episode_group: Optional[str] = None) -> List[schemas.TmdbEpisode]:
|
def tmdb_episodes(self, tmdbid: int, season: int, episode_group: Optional[str] = None) -> List[schemas.TmdbEpisode]:
|
||||||
"""
|
"""
|
||||||
根据TMDBID查询某季的所有信信息
|
根据TMDBID查询某季的所有集信息
|
||||||
:param tmdbid: TMDBID
|
:param tmdbid: TMDBID
|
||||||
:param season: 季
|
:param season: 季
|
||||||
:param episode_group: 剧集组
|
:param episode_group: 剧集组
|
||||||
|
|||||||
@@ -73,8 +73,6 @@ class Subscribe(BaseModel):
|
|||||||
media_category: Optional[str] = None
|
media_category: Optional[str] = None
|
||||||
# 过滤规则组
|
# 过滤规则组
|
||||||
filter_groups: Optional[List[str]] = Field(default_factory=list)
|
filter_groups: Optional[List[str]] = Field(default_factory=list)
|
||||||
# 可选剧集组
|
|
||||||
episode_groups: Optional[list] = Field(default_factory=list)
|
|
||||||
# 剧集组
|
# 剧集组
|
||||||
episode_group: str = None
|
episode_group: str = None
|
||||||
|
|
||||||
|
|||||||
@@ -22,7 +22,6 @@ def upgrade() -> None:
|
|||||||
# ### commands auto generated by Alembic - please adjust! ###
|
# ### commands auto generated by Alembic - please adjust! ###
|
||||||
with contextlib.suppress(Exception):
|
with contextlib.suppress(Exception):
|
||||||
op.add_column('downloadhistory', sa.Column('episode_group', sa.String, nullable=True))
|
op.add_column('downloadhistory', sa.Column('episode_group', sa.String, nullable=True))
|
||||||
op.add_column('subscribe', sa.Column('episode_groups', sa.JSON(), nullable=True))
|
|
||||||
op.add_column('subscribe', sa.Column('episode_group', sa.String, nullable=True))
|
op.add_column('subscribe', sa.Column('episode_group', sa.String, nullable=True))
|
||||||
op.add_column('subscribehistory', sa.Column('episode_group', sa.String, nullable=True))
|
op.add_column('subscribehistory', sa.Column('episode_group', sa.String, nullable=True))
|
||||||
op.add_column('transferhistory', sa.Column('episode_group', sa.String, nullable=True))
|
op.add_column('transferhistory', sa.Column('episode_group', sa.String, nullable=True))
|
||||||
|
|||||||
Reference in New Issue
Block a user