From 0b33094b9c496037cddbf2be81caf365c4ee8142 Mon Sep 17 00:00:00 2001 From: jxxghp Date: Mon, 10 Jul 2023 12:27:03 +0800 Subject: [PATCH] add douban image proxy --- app/api/endpoints/douban.py | 20 ++++++++++++++++++-- app/core/context.py | 2 -- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/app/api/endpoints/douban.py b/app/api/endpoints/douban.py index 6aba525c..2542aeb3 100644 --- a/app/api/endpoints/douban.py +++ b/app/api/endpoints/douban.py @@ -1,13 +1,14 @@ from typing import List, Any -from fastapi import APIRouter, Depends -from fastapi import BackgroundTasks +from fastapi import APIRouter, Depends, Response, BackgroundTasks from app import schemas from app.chain.douban import DoubanChain +from app.core.config import settings from app.core.context import MediaInfo from app.core.security import verify_token from app.schemas import MediaType +from app.utils.http import RequestUtils router = APIRouter() @@ -30,6 +31,21 @@ def sync_douban( return schemas.Response(success=True, message="任务已启动") +@router.get("/img/{imgurl:path}", summary="豆瓣图片代理") +def douban_img(imgurl: str) -> Any: + """ + 豆瓣图片代理 + """ + if not imgurl: + return None + response = RequestUtils(headers={ + 'Referer': "https://movie.douban.com/" + }, ua=settings.USER_AGENT).get_res(url=imgurl) + if response: + return Response(content=response.content, media_type="image/jpeg") + return None + + @router.get("/recognize/{doubanid}", summary="豆瓣ID识别", response_model=schemas.Context) def recognize_doubanid(doubanid: str, _: schemas.TokenPayload = Depends(verify_token)) -> Any: diff --git a/app/core/context.py b/app/core/context.py index 7e7cdcf5..bcb499b2 100644 --- a/app/core/context.py +++ b/app/core/context.py @@ -400,8 +400,6 @@ class MediaInfo: self.poster_path = info.get("pic", {}).get("large") if not self.poster_path and info.get("cover_url"): self.poster_path = info.get("cover_url") - if self.poster_path: - self.poster_path = self.poster_path.replace("m_ratio_poster", "l_ratio_poster") # 简介 if not self.overview: self.overview = info.get("intro") or info.get("card_subtitle") or ""