feat: support YemaPT Open API (#6227)

This commit is contained in:
mustangpt
2026-08-03 07:01:21 +08:00
committed by GitHub
parent 702801d0dc
commit 51d2ed1200
6 changed files with 598 additions and 217 deletions
+12 -1
View File
@@ -7,7 +7,7 @@ import shutil
import time
from pathlib import Path
from typing import List, Optional, Tuple, Set, Dict, Union
from urllib.parse import parse_qs, urljoin, urlparse
from urllib.parse import parse_qs, urlencode, urljoin, urlparse
from app import schemas
from app.chain import ChainBase
@@ -713,10 +713,21 @@ class DownloadChain(ChainBase):
return res.text
else:
data = res.json()
success_key = req_params.get('success')
if success_key and not data.get(success_key):
return None
for key in str(req_params.get('result')).split("."):
data = data.get(key)
if not data:
return None
result_path = req_params.get('result_path')
result_query_param = req_params.get('result_query_param')
if result_path and result_query_param:
result_url = urljoin(
f"{str(req_params.get('result_base_url')).rstrip('/')}/",
str(result_path).lstrip('/'),
)
return f"{result_url}?{urlencode({result_query_param: data})}"
data = self._normalize_indirect_download_url(
url=data,
base_url=req_params.get('result_base_url'),