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"

View File

@@ -33,7 +33,7 @@ META_CACHE_EXPIRE=0
AUTO_UPDATE_RESOURCE=true
# 【*】API密钥未设置时系统将随机生成建议使用复杂字符串用于Jellyseerr/Overseerr、媒体服务器Webhook等配置以及部分支持API_TOKEN的API请求
API_TOKEN=''
# 登录页面电影海报tmdb/bingtmdb要求能正常连接api.themoviedb.org
# 登录页面电影海报tmdb/bing/mediaservertmdb要求能正常连接api.themoviedb.org
WALLPAPER=tmdb
# TMDB图片地址无需修改需保留默认值如果默认地址连通性不好可以尝试修改为`static-mdb.v.geilijiasu.com`
TMDB_IMAGE_DOMAIN=image.tmdb.org