mirror of
https://github.com/jxxghp/MoviePilot.git
synced 2026-09-05 07:27:15 +08:00
fix fetch_medias action
This commit is contained in:
+35
-23
@@ -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)
|
||||||
|
|||||||
Reference in New Issue
Block a user