fix fetch_medias action

This commit is contained in:
jxxghp
2025-03-01 13:54:29 +08:00
parent 7e347a458d
commit a55632051b
+35 -23
View File
@@ -1,4 +1,4 @@
from typing import List from typing import List, Optional
from pydantic import Field from pydantic import Field
@@ -17,7 +17,9 @@ class FetchMediasParams(ActionParams):
""" """
获取媒体数据参数 获取媒体数据参数
""" """
sources: List[str] = Field([], description="媒体数据来源") source_type: Optional[str] = Field("ranking", description="来源")
sources: Optional[List[str]] = Field([], description="榜单")
api_path: Optional[str] = Field(None, description="API路径")
class FetchMediasAction(BaseAction): class FetchMediasAction(BaseAction):
@@ -129,27 +131,37 @@ class FetchMediasAction(BaseAction):
获取媒体数据,填充到medias 获取媒体数据,填充到medias
""" """
params = FetchMediasParams(**params) params = FetchMediasParams(**params)
for name in params.sources: if params.source_type == "ranking":
if global_vars.is_workflow_stopped(workflow_id): for name in params.sources:
break if global_vars.is_workflow_stopped(workflow_id):
source = self.__get_source(name) break
if not source: source = self.__get_source(name)
continue if not source:
logger.info(f"获取媒体数据 {source} ...") continue
results = [] logger.info(f"获取媒体数据 {source} ...")
if source.get("func"): results = []
results = source['func']() if source.get("func"):
else: results = source['func']()
# 调用内部API获取数据 else:
api_url = f"http://127.0.0.1:{settings.PORT}/api/v1/{source['api_path']}?token={settings.API_TOKEN}" # 调用内部API获取数据
res = RequestUtils(timeout=15).post_res(api_url) api_url = f"http://127.0.0.1:{settings.PORT}/api/v1/{source['api_path']}?token={settings.API_TOKEN}"
if res: res = RequestUtils(timeout=15).post_res(api_url)
results = res.json() if res:
if results: results = res.json()
logger.info(f"{name} 获取到 {len(results)} 条数据") if results:
self._medias.extend([MediaInfo(**r) for r in results]) logger.info(f"{name} 获取到 {len(results)} 条数据")
else: self._medias.extend([MediaInfo(**r) for r in results])
logger.error(f"{name} 获取数据失败") else:
logger.error(f"{name} 获取数据失败")
else:
# 调用内部API获取数据
api_url = f"http://127.0.0.1:{settings.PORT}{params.api_path}?token={settings.API_TOKEN}"
res = RequestUtils(timeout=15).post_res(api_url)
if res:
results = res.json()
if results:
logger.info(f"{params.api_path} 获取到 {len(results)} 条数据")
self._medias.extend([MediaInfo(**r) for r in results])
if self._medias: if self._medias:
context.medias.extend(self._medias) context.medias.extend(self._medias)