fix rardar
This commit is contained in:
parent
a743403faa
commit
ac9dbb5239
@ -15,12 +15,12 @@ from app.utils.types import MediaType
|
|||||||
router = APIRouter()
|
router = APIRouter()
|
||||||
|
|
||||||
|
|
||||||
def start_subscribe_chain(title: str,
|
def start_subscribe_chain(title: str, year: str,
|
||||||
mtype: MediaType, tmdbid: int, season: int, username: str):
|
mtype: MediaType, tmdbid: int, season: int, username: str):
|
||||||
"""
|
"""
|
||||||
启动订阅链式任务
|
启动订阅链式任务
|
||||||
"""
|
"""
|
||||||
SubscribeChain().process(title=title,
|
SubscribeChain().process(title=title, year=year,
|
||||||
mtype=mtype, tmdbid=tmdbid, season=season, username=username)
|
mtype=mtype, tmdbid=tmdbid, season=season, username=username)
|
||||||
|
|
||||||
|
|
||||||
@ -113,6 +113,7 @@ async def seerr_subscribe(request: Request, background_tasks: BackgroundTasks,
|
|||||||
mtype=media_type,
|
mtype=media_type,
|
||||||
tmdbid=tmdbId,
|
tmdbid=tmdbId,
|
||||||
title=subject,
|
title=subject,
|
||||||
|
year="",
|
||||||
season=0,
|
season=0,
|
||||||
username=user_name)
|
username=user_name)
|
||||||
else:
|
else:
|
||||||
@ -126,6 +127,7 @@ async def seerr_subscribe(request: Request, background_tasks: BackgroundTasks,
|
|||||||
mtype=media_type,
|
mtype=media_type,
|
||||||
tmdbid=tmdbId,
|
tmdbid=tmdbId,
|
||||||
title=subject,
|
title=subject,
|
||||||
|
year="",
|
||||||
season=season,
|
season=season,
|
||||||
username=user_name)
|
username=user_name)
|
||||||
|
|
||||||
|
@ -4,10 +4,12 @@ from fastapi import APIRouter, HTTPException, Depends
|
|||||||
from requests import Session
|
from requests import Session
|
||||||
|
|
||||||
from app import schemas
|
from app import schemas
|
||||||
|
from app.chain.subscribe import SubscribeChain
|
||||||
from app.core.config import settings
|
from app.core.config import settings
|
||||||
from app.db import get_db
|
from app.db import get_db
|
||||||
from app.db.models.subscribe import Subscribe
|
from app.db.models.subscribe import Subscribe
|
||||||
from app.schemas import RadarrMovie
|
from app.schemas import RadarrMovie
|
||||||
|
from app.utils.types import MediaType
|
||||||
from version import APP_VERSION
|
from version import APP_VERSION
|
||||||
|
|
||||||
arr_router = APIRouter()
|
arr_router = APIRouter()
|
||||||
@ -214,6 +216,37 @@ async def arr_movies(apikey: str, db: Session = Depends(get_db)) -> Any:
|
|||||||
return result
|
return result
|
||||||
|
|
||||||
|
|
||||||
|
@arr_router.get("/movie/lookup", response_model=List[schemas.RadarrMovie])
|
||||||
|
async def arr_movie_lookup(apikey: str, term: str, db: Session = Depends(get_db)) -> Any:
|
||||||
|
"""
|
||||||
|
查询Rardar电影 term: `tmdb:${id}`
|
||||||
|
"""
|
||||||
|
if not apikey or apikey != settings.API_TOKEN:
|
||||||
|
raise HTTPException(
|
||||||
|
status_code=403,
|
||||||
|
detail="认证失败!",
|
||||||
|
)
|
||||||
|
tmdbid = term.replace("tmdb:", "")
|
||||||
|
subscribe = Subscribe.get_by_tmdbid(db, int(tmdbid))
|
||||||
|
if subscribe:
|
||||||
|
return [RadarrMovie(
|
||||||
|
id=subscribe.id,
|
||||||
|
title=subscribe.name,
|
||||||
|
isAvailable=True,
|
||||||
|
monitored=True,
|
||||||
|
tmdbId=subscribe.tmdbid,
|
||||||
|
profileId=1,
|
||||||
|
qualityProfileId=1,
|
||||||
|
added=True,
|
||||||
|
hasFile=False,
|
||||||
|
)]
|
||||||
|
else:
|
||||||
|
raise HTTPException(
|
||||||
|
status_code=404,
|
||||||
|
detail="未找到该电影!"
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
@arr_router.get("/movie/{mid}", response_model=schemas.RadarrMovie)
|
@arr_router.get("/movie/{mid}", response_model=schemas.RadarrMovie)
|
||||||
async def arr_movie(apikey: str, mid: int, db: Session = Depends(get_db)) -> Any:
|
async def arr_movie(apikey: str, mid: int, db: Session = Depends(get_db)) -> Any:
|
||||||
"""
|
"""
|
||||||
@ -244,39 +277,8 @@ async def arr_movie(apikey: str, mid: int, db: Session = Depends(get_db)) -> Any
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@arr_router.get("/movie/lookup", response_model=List[schemas.RadarrMovie])
|
|
||||||
async def arr_movie_lookup(apikey: str, term: str, db: Session = Depends(get_db)) -> Any:
|
|
||||||
"""
|
|
||||||
查询Rardar电影 term: `tmdb:${id}`
|
|
||||||
"""
|
|
||||||
if not apikey or apikey != settings.API_TOKEN:
|
|
||||||
raise HTTPException(
|
|
||||||
status_code=403,
|
|
||||||
detail="认证失败!",
|
|
||||||
)
|
|
||||||
tmdbid = term.replace("tmdb:", "")
|
|
||||||
subscribe = Subscribe.get_by_tmdbid(db, int(tmdbid))
|
|
||||||
if subscribe:
|
|
||||||
return RadarrMovie(
|
|
||||||
id=subscribe.id,
|
|
||||||
title=subscribe.name,
|
|
||||||
isAvailable=True,
|
|
||||||
monitored=True,
|
|
||||||
tmdbId=subscribe.tmdbid,
|
|
||||||
profileId=1,
|
|
||||||
qualityProfileId=1,
|
|
||||||
added=True,
|
|
||||||
hasFile=False,
|
|
||||||
)
|
|
||||||
else:
|
|
||||||
raise HTTPException(
|
|
||||||
status_code=404,
|
|
||||||
detail="未找到该电影!"
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
@arr_router.put("/movie", response_model=schemas.Response)
|
@arr_router.put("/movie", response_model=schemas.Response)
|
||||||
async def arr_add_movie(apikey: str, title: str, tmdbId: int, year: int) -> Any:
|
async def arr_add_movie(apikey: str, title: str, tmdbId: int, year: str) -> Any:
|
||||||
"""
|
"""
|
||||||
新增Rardar电影订阅
|
新增Rardar电影订阅
|
||||||
"""
|
"""
|
||||||
@ -285,6 +287,13 @@ async def arr_add_movie(apikey: str, title: str, tmdbId: int, year: int) -> Any:
|
|||||||
status_code=403,
|
status_code=403,
|
||||||
detail="认证失败!",
|
detail="认证失败!",
|
||||||
)
|
)
|
||||||
|
if SubscribeChain().process(title=title, year=year, mtype=MediaType.MOVIE, tmdbid=tmdbId):
|
||||||
|
return {"success": True, "msg": "添加订阅成功!"}
|
||||||
|
else:
|
||||||
|
raise HTTPException(
|
||||||
|
status_code=500,
|
||||||
|
detail="添加订阅失败!"
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
@arr_router.delete("/movie/{mid}", response_model=schemas.Response)
|
@arr_router.delete("/movie/{mid}", response_model=schemas.Response)
|
||||||
|
@ -96,6 +96,7 @@ class DoubanSyncChain(ChainBase):
|
|||||||
logger.info(f'{mediainfo.get_title_string()} 未下载未完整,添加订阅 ...')
|
logger.info(f'{mediainfo.get_title_string()} 未下载未完整,添加订阅 ...')
|
||||||
# 添加订阅
|
# 添加订阅
|
||||||
self.subscribechain.process(title=mediainfo.title,
|
self.subscribechain.process(title=mediainfo.title,
|
||||||
|
year=mediainfo.year,
|
||||||
mtype=mediainfo.type,
|
mtype=mediainfo.type,
|
||||||
tmdbid=mediainfo.tmdb_id,
|
tmdbid=mediainfo.tmdb_id,
|
||||||
season=meta.begin_season,
|
season=meta.begin_season,
|
||||||
|
@ -28,7 +28,7 @@ class SubscribeChain(ChainBase):
|
|||||||
self.subscribes = Subscribes()
|
self.subscribes = Subscribes()
|
||||||
self.siteshelper = SitesHelper()
|
self.siteshelper = SitesHelper()
|
||||||
|
|
||||||
def process(self, title: str,
|
def process(self, title: str, year: str,
|
||||||
mtype: MediaType = None,
|
mtype: MediaType = None,
|
||||||
tmdbid: int = None,
|
tmdbid: int = None,
|
||||||
season: int = None,
|
season: int = None,
|
||||||
@ -45,6 +45,8 @@ class SubscribeChain(ChainBase):
|
|||||||
title, _ = result
|
title, _ = result
|
||||||
# 识别元数据
|
# 识别元数据
|
||||||
metainfo = MetaInfo(title)
|
metainfo = MetaInfo(title)
|
||||||
|
if year:
|
||||||
|
metainfo.year = year
|
||||||
if mtype:
|
if mtype:
|
||||||
metainfo.type = mtype
|
metainfo.type = mtype
|
||||||
if season:
|
if season:
|
||||||
@ -305,6 +307,7 @@ class SubscribeChain(ChainBase):
|
|||||||
if no_exists \
|
if no_exists \
|
||||||
and no_exists.get(tmdb_id) \
|
and no_exists.get(tmdb_id) \
|
||||||
and (total_episode or start_episode):
|
and (total_episode or start_episode):
|
||||||
|
index = 0
|
||||||
for no_exist in no_exists.get(tmdb_id):
|
for no_exist in no_exists.get(tmdb_id):
|
||||||
# 替换原季值
|
# 替换原季值
|
||||||
if no_exist.get("season") == begin_season:
|
if no_exist.get("season") == begin_season:
|
||||||
@ -315,7 +318,7 @@ class SubscribeChain(ChainBase):
|
|||||||
if total_episode and start_episode:
|
if total_episode and start_episode:
|
||||||
# 有开始集和总集数
|
# 有开始集和总集数
|
||||||
episodes = list(range(start_episode, total_episode + 1))
|
episodes = list(range(start_episode, total_episode + 1))
|
||||||
no_exist = {
|
no_exists[tmdb_id][index] = {
|
||||||
"season": begin_season,
|
"season": begin_season,
|
||||||
"episodes": episodes,
|
"episodes": episodes,
|
||||||
"total_episodes": total_episode,
|
"total_episodes": total_episode,
|
||||||
@ -324,7 +327,7 @@ class SubscribeChain(ChainBase):
|
|||||||
elif not start_episode:
|
elif not start_episode:
|
||||||
# 有总集数没有开始集
|
# 有总集数没有开始集
|
||||||
episodes = list(range(min(episode_list or [1]), total_episode + 1))
|
episodes = list(range(min(episode_list or [1]), total_episode + 1))
|
||||||
no_exist = {
|
no_exists[tmdb_id][index] = {
|
||||||
"season": begin_season,
|
"season": begin_season,
|
||||||
"episodes": episodes,
|
"episodes": episodes,
|
||||||
"total_episodes": total_episode,
|
"total_episodes": total_episode,
|
||||||
@ -333,10 +336,11 @@ class SubscribeChain(ChainBase):
|
|||||||
elif not total_episode:
|
elif not total_episode:
|
||||||
# 有开始集没有总集数
|
# 有开始集没有总集数
|
||||||
episodes = list(range(start_episode, max(episode_list or [total]) + 1))
|
episodes = list(range(start_episode, max(episode_list or [total]) + 1))
|
||||||
no_exist = {
|
no_exists[tmdb_id][index] = {
|
||||||
"season": begin_season,
|
"season": begin_season,
|
||||||
"episodes": episodes,
|
"episodes": episodes,
|
||||||
"total_episodes": max(episode_list or [total]),
|
"total_episodes": max(episode_list or [total]),
|
||||||
"start_episode": start_episode
|
"start_episode": start_episode
|
||||||
}
|
}
|
||||||
|
index += 1
|
||||||
return no_exists
|
return no_exists
|
||||||
|
@ -129,6 +129,7 @@ class UserMessageChain(ChainBase):
|
|||||||
# 订阅媒体
|
# 订阅媒体
|
||||||
mediainfo: MediaInfo = cache_list[int(text) - 1]
|
mediainfo: MediaInfo = cache_list[int(text) - 1]
|
||||||
self.subscribechain.process(title=mediainfo.title,
|
self.subscribechain.process(title=mediainfo.title,
|
||||||
|
year=mediainfo.year,
|
||||||
mtype=mediainfo.type,
|
mtype=mediainfo.type,
|
||||||
tmdbid=mediainfo.tmdb_id,
|
tmdbid=mediainfo.tmdb_id,
|
||||||
season=self._current_meta.begin_season,
|
season=self._current_meta.begin_season,
|
||||||
@ -157,6 +158,7 @@ class UserMessageChain(ChainBase):
|
|||||||
logger.info(f'{self._current_media.get_title_string()} 未下载未完整,添加订阅 ...')
|
logger.info(f'{self._current_media.get_title_string()} 未下载未完整,添加订阅 ...')
|
||||||
# 添加订阅
|
# 添加订阅
|
||||||
self.subscribechain.process(title=self._current_media.title,
|
self.subscribechain.process(title=self._current_media.title,
|
||||||
|
year=self._current_media.year,
|
||||||
mtype=self._current_media.type,
|
mtype=self._current_media.type,
|
||||||
tmdbid=self._current_media.tmdb_id,
|
tmdbid=self._current_media.tmdb_id,
|
||||||
season=self._current_meta.begin_season,
|
season=self._current_meta.begin_season,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user