This commit is contained in:
jxxghp
2025-05-15 08:40:38 +08:00
parent 52640b80c0
commit 1dadf56c42
4 changed files with 108 additions and 95 deletions

View File

@@ -1,7 +1,3 @@
from typing import Optional, List
from app.core.cache import cached
from app.core.config import settings
from app.utils.http import RequestUtils
@@ -73,87 +69,3 @@ class WebUtils:
except Exception as err:
print(str(err))
return ""
@staticmethod
@cached(maxsize=1, ttl=3600)
def get_bing_wallpaper() -> Optional[str]:
"""
获取Bing每日壁纸
"""
url = "https://cn.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1"
resp = RequestUtils(timeout=5).get_res(url)
if resp and resp.status_code == 200:
try:
result = resp.json()
if isinstance(result, dict):
for image in result.get('images') or []:
return f"https://cn.bing.com{image.get('url')}" if 'url' in image else ''
except Exception as err:
print(str(err))
return None
@staticmethod
@cached(maxsize=1, ttl=3600)
def get_bing_wallpapers(num: int = 7) -> List[str]:
"""
获取7天的Bing每日壁纸
"""
url = f"https://cn.bing.com/HPImageArchive.aspx?format=js&idx=0&n={num}"
resp = RequestUtils(timeout=5).get_res(url)
if resp and resp.status_code == 200:
try:
result = resp.json()
if isinstance(result, dict):
return [f"https://cn.bing.com{image.get('url')}" for image in result.get('images') or []]
except Exception as err:
print(str(err))
return []
@staticmethod
@cached(maxsize=1, ttl=3600)
def get_customize_wallpapers() -> List[str]:
"""
递归查找对象中所有包含特定后缀的文件或URL返回匹配的字符串列表
支持输入字典、列表、字符串普通文件路径或URL
"""
def find_files_with_suffixes(obj, suffixes: list[str]) -> list[str]:
"""
递归查找对象中所有包含特定后缀的文件,返回匹配的字符串列表
支持输入:字典、列表、字符串
"""
result = []
# 处理字符串
if isinstance(obj, str):
if obj.endswith(tuple(suffixes)):
result.append(obj)
# 处理字典
elif isinstance(obj, dict):
for value in obj.values():
result.extend(find_files_with_suffixes(value, suffixes))
# 处理列表
elif isinstance(obj, list):
for item in obj:
result.extend(find_files_with_suffixes(item, suffixes))
return result
"""
获取自定义壁纸api壁纸
"""
# 判断是否存在自定义壁纸api
if settings.CUSTOMIZE_WALLPAPER_API_URL is not None and len(settings.CUSTOMIZE_WALLPAPER_API_URL) > 0:
url = settings.CUSTOMIZE_WALLPAPER_API_URL
wallpaper_list = []
resp = RequestUtils(timeout=5).get_res(url)
if resp and resp.status_code == 200:
try:
result = resp.json()
if isinstance(result, list) or isinstance(result, dict) or isinstance(result, str):
wallpaper_list = find_files_with_suffixes(result, settings.SECURITY_IMAGE_SUFFIXES)
except Exception as err:
print(str(err))
return wallpaper_list
else:
return []