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

This commit is contained in:
Akimio521
2024-11-02 14:17:52 +08:00
parent a59d73a68a
commit 88e8790678
4 changed files with 29 additions and 9 deletions
+11 -6
View File
@@ -7,6 +7,7 @@ from fastapi.security import OAuth2PasswordRequestForm
from app import schemas from app import schemas
from app.chain.tmdb import TmdbChain from app.chain.tmdb import TmdbChain
from app.chain.user import UserChain from app.chain.user import UserChain
from app.chain.mediaserver import MediaServerChain
from app.core import security from app.core import security
from app.core.config import settings from app.core.config import settings
from app.helper.sites import SitesHelper from app.helper.sites import SitesHelper
@@ -53,10 +54,12 @@ def wallpaper() -> Any:
""" """
获取登录页面电影海报 获取登录页面电影海报
""" """
if settings.WALLPAPER == "tmdb": if settings.WALLPAPER == "bing":
url = TmdbChain().get_random_wallpager()
else:
url = WebUtils.get_bing_wallpaper() url = WebUtils.get_bing_wallpaper()
elif settings.WALLPAPER == "mediaserver":
url = MediaServerChain().get_latest_wallpaper()
else:
url = TmdbChain().get_random_wallpager()
if url: if url:
return schemas.Response( return schemas.Response(
success=True, success=True,
@@ -70,7 +73,9 @@ def wallpapers() -> Any:
""" """
获取登录页面电影海报 获取登录页面电影海报
""" """
if settings.WALLPAPER == "tmdb": if settings.WALLPAPER == "bing":
return TmdbChain().get_trending_wallpapers()
else:
return WebUtils.get_bing_wallpapers() return WebUtils.get_bing_wallpapers()
elif settings.WALLPAPER == "mediaserver":
url = MediaServerChain().get_latest_wallpapers()
else:
url = TmdbChain().get_trending_wallpapers()
+16 -1
View File
@@ -1,9 +1,11 @@
import threading import threading
from typing import List, Union, Optional, Generator from typing import List, Union, Optional, Generator
from cachetools import cached, TTLCache
from app import schemas from app import schemas
from app.chain import ChainBase 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.db.mediaserver_oper import MediaServerOper
from app.helper.service import ServiceConfigHelper from app.helper.service import ServiceConfigHelper
from app.log import logger from app.log import logger
@@ -91,6 +93,19 @@ class MediaServerChain(ChainBase):
获取媒体服务器最新入库条目 获取媒体服务器最新入库条目
""" """
return self.run_module("mediaserver_latest", count=count, server=server, username=username) 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]: def get_play_url(self, server: str, item_id: Union[str, int]) -> Optional[str]:
""" """
+1 -1
View File
@@ -79,7 +79,7 @@ class ConfigModel(BaseModel):
API_TOKEN: Optional[str] = None API_TOKEN: Optional[str] = None
# 网络代理 IP:PORT # 网络代理 IP:PORT
PROXY_HOST: Optional[str] = None PROXY_HOST: Optional[str] = None
# 登录页面电影海报,tmdb/bing # 登录页面电影海报,tmdb/bing/mediaserver
WALLPAPER: str = "tmdb" WALLPAPER: str = "tmdb"
# 媒体搜索来源 themoviedb/douban/bangumi,多个用,分隔 # 媒体搜索来源 themoviedb/douban/bangumi,多个用,分隔
SEARCH_SOURCE: str = "themoviedb,douban,bangumi" SEARCH_SOURCE: str = "themoviedb,douban,bangumi"
+1 -1
View File
@@ -33,7 +33,7 @@ META_CACHE_EXPIRE=0
AUTO_UPDATE_RESOURCE=true AUTO_UPDATE_RESOURCE=true
# 【*】API密钥,未设置时系统将随机生成,建议使用复杂字符串,用于Jellyseerr/Overseerr、媒体服务器Webhook等配置以及部分支持API_TOKEN的API请求 # 【*】API密钥,未设置时系统将随机生成,建议使用复杂字符串,用于Jellyseerr/Overseerr、媒体服务器Webhook等配置以及部分支持API_TOKEN的API请求
API_TOKEN='' API_TOKEN=''
# 登录页面电影海报,tmdb/bingtmdb要求能正常连接api.themoviedb.org # 登录页面电影海报,tmdb/bing/mediaservertmdb要求能正常连接api.themoviedb.org
WALLPAPER=tmdb WALLPAPER=tmdb
# TMDB图片地址,无需修改需保留默认值,如果默认地址连通性不好可以尝试修改为:`static-mdb.v.geilijiasu.com` # TMDB图片地址,无需修改需保留默认值,如果默认地址连通性不好可以尝试修改为:`static-mdb.v.geilijiasu.com`
TMDB_IMAGE_DOMAIN=image.tmdb.org TMDB_IMAGE_DOMAIN=image.tmdb.org