fix schemas

This commit is contained in:
jxxghp
2023-07-07 17:40:15 +08:00
parent 39165a92f0
commit 9ccb2b482e
5 changed files with 71 additions and 50 deletions

View File

@ -38,7 +38,12 @@ async def login_access_token(
raise HTTPException(status_code=401, detail="用户名或密码不正确")
else:
logger.info(f"辅助认证成功,用户信息: {token}")
user = schemas.User(id=-1, name=form_data.username, is_active=True, is_superuser=False)
# 加入用户信息表
user = User.get_by_name(db=db, name=form_data.username)
if not user:
logger.info(f"用户不存在,创建用户: {form_data.username}")
user = User(name=form_data.username, is_active=True, is_superuser=False)
user.create(db)
elif not user.is_active:
raise HTTPException(status_code=403, detail="用户未启用")
access_token_expires = timedelta(minutes=settings.ACCESS_TOKEN_EXPIRE_MINUTES)

View File

@ -1,33 +1,47 @@
from typing import List, Any
from fastapi import APIRouter, Depends
from fastapi import APIRouter, Depends, HTTPException
from app import schemas
from app.chain.douban import DoubanChain
from app.chain.search import SearchChain
from app.core.context import Context
from app.core.security import verify_token
from app.schemas.types import MediaType
router = APIRouter()
@router.get("/tmdbid", summary="精确搜索资源", response_model=List[schemas.Context])
async def search_by_tmdbid(tmdbid: int,
@router.get("/media/{mediaid}", summary="精确搜索资源", response_model=List[schemas.Context])
async def search_by_tmdbid(mediaid: str,
mtype: str = None,
_: schemas.TokenPayload = Depends(verify_token)) -> Any:
"""
根据TMDBID精确搜索站点资源
根据TMDBID/豆瓣ID精确搜索站点资源 tmdb:/douban:/
"""
if mtype:
mtype = MediaType.TV if mtype == MediaType.TV.value else MediaType.MOVIE
torrents = SearchChain().search_by_tmdbid(tmdbid=tmdbid, mtype=mtype)
if mediaid.startswith("tmdb:"):
tmdbid = int(mediaid.replace("tmdb:", ""))
if mtype:
mtype = MediaType(mtype)
torrents = SearchChain().search_by_tmdbid(tmdbid=tmdbid, mtype=mtype)
elif mediaid.startswith("douban:"):
doubanid = mediaid.replace("douban:", "")
# 识别豆瓣信息
context = DoubanChain().recognize_by_doubanid(doubanid)
if not context or not context.media_info or not context.media_info.tmdb_id:
raise HTTPException(status_code=404, detail="无法识别TMDB媒体信息")
torrents = SearchChain().search_by_tmdbid(tmdbid=context.media_info.tmdb_id,
mtype=context.media_info.type)
else:
return []
return [torrent.to_dict() for torrent in torrents]
@router.get("/title", summary="模糊搜索资源", response_model=List[schemas.TorrentInfo])
async def search_by_title(title: str,
@router.get("/title/{keyword}", summary="模糊搜索资源", response_model=List[schemas.Context])
async def search_by_title(keyword: str,
_: schemas.TokenPayload = Depends(verify_token)) -> Any:
"""
根据名称模糊搜索站点资源
"""
torrents = SearchChain().search_by_title(title=title)
return [torrent.to_dict() for torrent in torrents]
torrents = SearchChain().search_by_title(title=keyword)
return [Context(torrent_info=torrent).to_dict() for torrent in torrents]