feat: 可选从媒体服务器中获取最新入库条目海报作为登录页面壁纸

This commit is contained in:
Akimio521
2024-11-02 14:11:51 +08:00
parent a59d73a68a
commit 88e8790678
4 changed files with 29 additions and 9 deletions

View File

@@ -7,6 +7,7 @@ from fastapi.security import OAuth2PasswordRequestForm
from app import schemas
from app.chain.tmdb import TmdbChain
from app.chain.user import UserChain
from app.chain.mediaserver import MediaServerChain
from app.core import security
from app.core.config import settings
from app.helper.sites import SitesHelper
@@ -53,10 +54,12 @@ def wallpaper() -> Any:
"""
获取登录页面电影海报
"""
if settings.WALLPAPER == "tmdb":
url = TmdbChain().get_random_wallpager()
else:
if settings.WALLPAPER == "bing":
url = WebUtils.get_bing_wallpaper()
elif settings.WALLPAPER == "mediaserver":
url = MediaServerChain().get_latest_wallpaper()
else:
url = TmdbChain().get_random_wallpager()
if url:
return schemas.Response(
success=True,
@@ -70,7 +73,9 @@ def wallpapers() -> Any:
"""
获取登录页面电影海报
"""
if settings.WALLPAPER == "tmdb":
return TmdbChain().get_trending_wallpapers()
else:
if settings.WALLPAPER == "bing":
return WebUtils.get_bing_wallpapers()
elif settings.WALLPAPER == "mediaserver":
url = MediaServerChain().get_latest_wallpapers()
else:
url = TmdbChain().get_trending_wallpapers()

View File

@@ -1,9 +1,11 @@
import threading
from typing import List, Union, Optional, Generator
from cachetools import cached, TTLCache
from app import schemas
from app.chain import ChainBase
from app.core.config import global_vars
from app.core.config import global_vars, settings
from app.db.mediaserver_oper import MediaServerOper
from app.helper.service import ServiceConfigHelper
from app.log import logger
@@ -91,6 +93,19 @@ class MediaServerChain(ChainBase):
获取媒体服务器最新入库条目
"""
return self.run_module("mediaserver_latest", count=count, server=server, username=username)
@cached(cache=TTLCache(maxsize=1, ttl=3600))
def get_latest_wallpapers(self, server:str, count=20) -> List[str]:
"""
获取最新最新入库条目海报作为壁纸缓存1小时
"""
return self.run_module("mediaserver_latest_images", server=server, count=count)
def get_latest_wallpaper(self, server:str) -> Optional[str]:
"""
获取最新最新入库条目海报作为壁纸缓存1小时
"""
return self.get_latest_wallpapers(server=server, count=20)[0]
def get_play_url(self, server: str, item_id: Union[str, int]) -> Optional[str]:
"""

View File

@@ -79,7 +79,7 @@ class ConfigModel(BaseModel):
API_TOKEN: Optional[str] = None
# 网络代理 IP:PORT
PROXY_HOST: Optional[str] = None
# 登录页面电影海报,tmdb/bing
# 登录页面电影海报,tmdb/bing/mediaserver
WALLPAPER: str = "tmdb"
# 媒体搜索来源 themoviedb/douban/bangumi多个用,分隔
SEARCH_SOURCE: str = "themoviedb,douban,bangumi"