mirror of
https://github.com/jxxghp/MoviePilot.git
synced 2026-09-06 16:07:01 +08:00
fix(agent): 修复 MessageChannel.QQBot 不存在的错误
This commit is contained in:
@@ -160,7 +160,7 @@ class MoviePilotTool(BaseTool, metaclass=ABCMeta):
|
|||||||
MessageChannel.Slack: "slack",
|
MessageChannel.Slack: "slack",
|
||||||
MessageChannel.VoceChat: "vocechat",
|
MessageChannel.VoceChat: "vocechat",
|
||||||
MessageChannel.SynologyChat: "synologychat",
|
MessageChannel.SynologyChat: "synologychat",
|
||||||
MessageChannel.QQBot: "qqbot",
|
MessageChannel.QQ: "qqbot",
|
||||||
}
|
}
|
||||||
|
|
||||||
channel_type = None
|
channel_type = None
|
||||||
|
|||||||
@@ -21,7 +21,9 @@ router = APIRouter()
|
|||||||
|
|
||||||
|
|
||||||
@router.get("/play/{itemid:path}", summary="在线播放")
|
@router.get("/play/{itemid:path}", summary="在线播放")
|
||||||
def play_item(itemid: str, _: schemas.TokenPayload = Depends(verify_token)) -> schemas.Response:
|
def play_item(
|
||||||
|
itemid: str, _: schemas.TokenPayload = Depends(verify_token)
|
||||||
|
) -> schemas.Response:
|
||||||
"""
|
"""
|
||||||
获取媒体服务器播放页面地址
|
获取媒体服务器播放页面地址
|
||||||
"""
|
"""
|
||||||
@@ -36,20 +38,22 @@ def play_item(itemid: str, _: schemas.TokenPayload = Depends(verify_token)) -> s
|
|||||||
if item:
|
if item:
|
||||||
play_url = media_chain.get_play_url(server=name, item_id=itemid)
|
play_url = media_chain.get_play_url(server=name, item_id=itemid)
|
||||||
if play_url:
|
if play_url:
|
||||||
return schemas.Response(success=True, data={
|
return schemas.Response(success=True, data={"url": play_url})
|
||||||
"url": play_url
|
|
||||||
})
|
|
||||||
return schemas.Response(success=False, message="未找到播放地址")
|
return schemas.Response(success=False, message="未找到播放地址")
|
||||||
|
|
||||||
|
|
||||||
@router.get("/exists", summary="查询本地是否存在(数据库)", response_model=schemas.Response)
|
@router.get(
|
||||||
async def exists_local(title: Optional[str] = None,
|
"/exists", summary="查询本地是否存在(数据库)", response_model=schemas.Response
|
||||||
|
)
|
||||||
|
async def exists_local(
|
||||||
|
title: Optional[str] = None,
|
||||||
year: Optional[str] = None,
|
year: Optional[str] = None,
|
||||||
mtype: Optional[str] = None,
|
mtype: Optional[str] = None,
|
||||||
tmdbid: Optional[int] = None,
|
tmdbid: Optional[int] = None,
|
||||||
season: Optional[int] = None,
|
season: Optional[int] = None,
|
||||||
db: AsyncSession = Depends(get_async_db),
|
db: AsyncSession = Depends(get_async_db),
|
||||||
_: schemas.TokenPayload = Depends(verify_token)) -> Any:
|
_: schemas.TokenPayload = Depends(verify_token),
|
||||||
|
) -> Any:
|
||||||
"""
|
"""
|
||||||
判断本地是否存在
|
判断本地是否存在
|
||||||
"""
|
"""
|
||||||
@@ -63,36 +67,42 @@ async def exists_local(title: Optional[str] = None,
|
|||||||
title=meta.name, year=year, mtype=mtype, tmdbid=tmdbid, season=season
|
title=meta.name, year=year, mtype=mtype, tmdbid=tmdbid, season=season
|
||||||
)
|
)
|
||||||
if exist:
|
if exist:
|
||||||
ret_info = {
|
ret_info = {"id": exist.item_id}
|
||||||
"id": exist.item_id
|
return schemas.Response(success=True if exist else False, data={"item": ret_info})
|
||||||
}
|
|
||||||
return schemas.Response(success=True if exist else False, data={
|
|
||||||
"item": ret_info
|
|
||||||
})
|
|
||||||
|
|
||||||
|
|
||||||
@router.post("/exists_remote", summary="查询已存在的剧集信息(媒体服务器)", response_model=Dict[int, list])
|
@router.post(
|
||||||
def exists(media_in: schemas.MediaInfo,
|
"/exists_remote",
|
||||||
_: schemas.TokenPayload = Depends(verify_token)) -> Any:
|
summary="查询已存在的剧集信息(媒体服务器)",
|
||||||
|
response_model=Dict[int, list],
|
||||||
|
)
|
||||||
|
def exists(
|
||||||
|
media_in: schemas.MediaInfo, _: schemas.TokenPayload = Depends(verify_token)
|
||||||
|
) -> Any:
|
||||||
"""
|
"""
|
||||||
根据媒体信息查询媒体库已存在的剧集信息
|
根据媒体信息查询媒体库已存在的剧集信息
|
||||||
"""
|
"""
|
||||||
# 转化为媒体信息对象
|
# 转化为媒体信息对象
|
||||||
mediainfo = MediaInfo()
|
mediainfo = MediaInfo()
|
||||||
mediainfo.from_dict(media_in.model_dump())
|
mediainfo.from_dict(media_in.model_dump())
|
||||||
existsinfo: schemas.ExistMediaInfo = MediaServerChain().media_exists(mediainfo=mediainfo)
|
existsinfo: schemas.ExistMediaInfo = MediaServerChain().media_exists(
|
||||||
|
mediainfo=mediainfo
|
||||||
|
)
|
||||||
if not existsinfo:
|
if not existsinfo:
|
||||||
return {}
|
return {}
|
||||||
if media_in.season is not None:
|
if media_in.season is not None:
|
||||||
return {
|
return {media_in.season: existsinfo.seasons.get(media_in.season) or []}
|
||||||
media_in.season: existsinfo.seasons.get(media_in.season) or []
|
|
||||||
}
|
|
||||||
return existsinfo.seasons
|
return existsinfo.seasons
|
||||||
|
|
||||||
|
|
||||||
@router.post("/notexists", summary="查询媒体库缺失信息(媒体服务器)", response_model=List[schemas.NotExistMediaInfo])
|
@router.post(
|
||||||
def not_exists(media_in: schemas.MediaInfo,
|
"/notexists",
|
||||||
_: schemas.TokenPayload = Depends(verify_token)) -> Any:
|
summary="查询媒体库缺失信息(媒体服务器)",
|
||||||
|
response_model=List[schemas.NotExistMediaInfo],
|
||||||
|
)
|
||||||
|
def not_exists(
|
||||||
|
media_in: schemas.MediaInfo, _: schemas.TokenPayload = Depends(verify_token)
|
||||||
|
) -> Any:
|
||||||
"""
|
"""
|
||||||
根据媒体信息查询缺失电影/剧集
|
根据媒体信息查询缺失电影/剧集
|
||||||
"""
|
"""
|
||||||
@@ -109,7 +119,9 @@ def not_exists(media_in: schemas.MediaInfo,
|
|||||||
# 转化为媒体信息对象
|
# 转化为媒体信息对象
|
||||||
mediainfo = MediaInfo()
|
mediainfo = MediaInfo()
|
||||||
mediainfo.from_dict(media_in.model_dump())
|
mediainfo.from_dict(media_in.model_dump())
|
||||||
exist_flag, no_exists = DownloadChain().get_no_exists_info(meta=meta, mediainfo=mediainfo)
|
exist_flag, no_exists = DownloadChain().get_no_exists_info(
|
||||||
|
meta=meta, mediainfo=mediainfo
|
||||||
|
)
|
||||||
mediakey = mediainfo.tmdb_id or mediainfo.douban_id
|
mediakey = mediainfo.tmdb_id or mediainfo.douban_id
|
||||||
if mediainfo.type == MediaType.MOVIE:
|
if mediainfo.type == MediaType.MOVIE:
|
||||||
# 电影已存在时返回空列表,不存在时返回空对像列表
|
# 电影已存在时返回空列表,不存在时返回空对像列表
|
||||||
@@ -120,31 +132,61 @@ def not_exists(media_in: schemas.MediaInfo,
|
|||||||
return []
|
return []
|
||||||
|
|
||||||
|
|
||||||
@router.get("/latest", summary="最新入库条目", response_model=List[schemas.MediaServerPlayItem])
|
@router.get(
|
||||||
def latest(server: str, count: Optional[int] = 20,
|
"/latest", summary="最新入库条目", response_model=List[schemas.MediaServerPlayItem]
|
||||||
userinfo: schemas.TokenPayload = Depends(verify_token)) -> Any:
|
)
|
||||||
|
def latest(
|
||||||
|
server: str,
|
||||||
|
count: Optional[int] = 20,
|
||||||
|
userinfo: schemas.TokenPayload = Depends(verify_token),
|
||||||
|
) -> Any:
|
||||||
"""
|
"""
|
||||||
获取媒体服务器最新入库条目
|
获取媒体服务器最新入库条目
|
||||||
"""
|
"""
|
||||||
return MediaServerChain().latest(server=server, count=count, username=userinfo.username) or []
|
return (
|
||||||
|
MediaServerChain().latest(
|
||||||
|
server=server, count=count, username=userinfo.username
|
||||||
|
)
|
||||||
|
or []
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
@router.get("/playing", summary="正在播放条目", response_model=List[schemas.MediaServerPlayItem])
|
@router.get(
|
||||||
def playing(server: str, count: Optional[int] = 12,
|
"/playing", summary="正在播放条目", response_model=List[schemas.MediaServerPlayItem]
|
||||||
userinfo: schemas.TokenPayload = Depends(verify_token)) -> Any:
|
)
|
||||||
|
def playing(
|
||||||
|
server: str,
|
||||||
|
count: Optional[int] = 12,
|
||||||
|
userinfo: schemas.TokenPayload = Depends(verify_token),
|
||||||
|
) -> Any:
|
||||||
"""
|
"""
|
||||||
获取媒体服务器正在播放条目
|
获取媒体服务器正在播放条目
|
||||||
"""
|
"""
|
||||||
return MediaServerChain().playing(server=server, count=count, username=userinfo.username) or []
|
return (
|
||||||
|
MediaServerChain().playing(
|
||||||
|
server=server, count=count, username=userinfo.username
|
||||||
|
)
|
||||||
|
or []
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
@router.get("/library", summary="媒体库列表", response_model=List[schemas.MediaServerLibrary])
|
@router.get(
|
||||||
def library(server: str, hidden: Optional[bool] = False,
|
"/library", summary="媒体库列表", response_model=List[schemas.MediaServerLibrary]
|
||||||
userinfo: schemas.TokenPayload = Depends(verify_token)) -> Any:
|
)
|
||||||
|
def library(
|
||||||
|
server: str,
|
||||||
|
hidden: Optional[bool] = False,
|
||||||
|
userinfo: schemas.TokenPayload = Depends(verify_token),
|
||||||
|
) -> Any:
|
||||||
"""
|
"""
|
||||||
获取媒体服务器媒体库列表
|
获取媒体服务器媒体库列表
|
||||||
"""
|
"""
|
||||||
return MediaServerChain().librarys(server=server, username=userinfo.username, hidden=hidden) or []
|
return (
|
||||||
|
MediaServerChain().librarys(
|
||||||
|
server=server, username=userinfo.username, hidden=hidden
|
||||||
|
)
|
||||||
|
or []
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
@router.get("/clients", summary="查询可用媒体服务器", response_model=List[dict])
|
@router.get("/clients", summary="查询可用媒体服务器", response_model=List[dict])
|
||||||
@@ -154,5 +196,9 @@ async def clients(_: schemas.TokenPayload = Depends(verify_token)) -> Any:
|
|||||||
"""
|
"""
|
||||||
mediaservers: List[dict] = SystemConfigOper().get(SystemConfigKey.MediaServers)
|
mediaservers: List[dict] = SystemConfigOper().get(SystemConfigKey.MediaServers)
|
||||||
if mediaservers:
|
if mediaservers:
|
||||||
return [{"name": d.get("name"), "type": d.get("type")} for d in mediaservers if d.get("enabled")]
|
return [
|
||||||
|
{"name": d.get("name"), "type": d.get("type")}
|
||||||
|
for d in mediaservers
|
||||||
|
if d.get("enabled")
|
||||||
|
]
|
||||||
return []
|
return []
|
||||||
|
|||||||
Reference in New Issue
Block a user