feat(upload): #13 添加上传至sub2api

This commit is contained in:
cnlimiter
2026-03-18 18:23:04 +08:00
parent 6a5d9064f3
commit ffd3a81a38
8 changed files with 551 additions and 45 deletions

View File

@@ -10,6 +10,7 @@ from .settings import router as settings_router
from .email_services import router as email_services_router
from .payment import router as payment_router
from .cpa_services import router as cpa_services_router
from .sub2api_services import router as sub2api_services_router
api_router = APIRouter()
@@ -20,3 +21,4 @@ api_router.include_router(settings_router, prefix="/settings", tags=["settings"]
api_router.include_router(email_services_router, prefix="/email-services", tags=["email-services"])
api_router.include_router(payment_router, prefix="/payment", tags=["payment"])
api_router.include_router(cpa_services_router, prefix="/cpa-services", tags=["cpa-services"])
api_router.include_router(sub2api_services_router, prefix="/sub2api-services", tags=["sub2api-services"])

View File

@@ -785,3 +785,54 @@ async def batch_upload_accounts_to_cpa(request: BatchCPAUploadRequest):
results = batch_upload_to_cpa(ids, proxy, api_url=cpa_api_url, api_token=cpa_api_token)
return results
class BatchSub2ApiUploadRequest(BaseModel):
"""批量 Sub2API 上传请求"""
ids: List[int] = []
select_all: bool = False
status_filter: Optional[str] = None
email_service_filter: Optional[str] = None
search_filter: Optional[str] = None
service_id: Optional[int] = None # 指定 Sub2API 服务 ID不传则使用第一个启用的
concurrency: int = 3
priority: int = 50
@router.post("/batch-upload-sub2api")
async def batch_upload_accounts_to_sub2api(request: BatchSub2ApiUploadRequest):
"""批量上传账号到 Sub2API"""
from ...core.sub2api_upload import batch_upload_to_sub2api
# 解析指定的 Sub2API 服务
api_url = None
api_key = None
if request.service_id:
with get_db() as db:
svc = crud.get_sub2api_service_by_id(db, request.service_id)
if not svc:
raise HTTPException(status_code=404, detail="指定的 Sub2API 服务不存在")
api_url = svc.api_url
api_key = svc.api_key
else:
with get_db() as db:
svcs = crud.get_sub2api_services(db, enabled=True)
if svcs:
api_url = svcs[0].api_url
api_key = svcs[0].api_key
if not api_url or not api_key:
raise HTTPException(status_code=400, detail="未找到可用的 Sub2API 服务,请先在设置中配置")
with get_db() as db:
ids = resolve_account_ids(
db, request.ids, request.select_all,
request.status_filter, request.email_service_filter, request.search_filter
)
results = batch_upload_to_sub2api(
ids, api_url, api_key,
concurrency=request.concurrency,
priority=request.priority,
)
return results