54 lines
1.6 KiB
Plaintext

# -*- coding:utf-8 -*-
# POST /api/submit - 提交视频超分任务
import json
import uuid
from ahserver.serverenv import ServerEnv
method = request.method
if method == 'POST':
video_path = params_kw.get('video_path', '')
if not video_path:
return json.dumps({'error': 'video_path is required'}, ensure_ascii=False)
task_id = params_kw.get('task_id', str(uuid.uuid4()).replace("-", "")[:12])
scale = params_kw.get('scale', 2)
output_format = params_kw.get('output_format', 'mp4')
payload = {
'task_type': 'upscale_video',
'task_id': task_id,
'video_path': video_path,
'scale': int(scale),
'output_format': output_format
}
env = ServerEnv()
longtasks = env.longtasks
if longtasks is None:
return json.dumps({'error': 'service not ready'}, ensure_ascii=False)
result = await longtasks.submit_task(payload)
real_task_id = result.get('task_id', str(result)) if isinstance(result, dict) else str(result)
return json.dumps({
'task_id': real_task_id,
'status': 'queued',
'video_path': video_path,
'scale': int(scale),
'message': 'task submitted',
'check_url': f'/api/task?task_id={real_task_id}'
}, ensure_ascii=False)
else:
return json.dumps({
'usage': 'POST with JSON body',
'params': {
'video_path': 'string (required, server path to video file)',
'scale': 'int (default 2, upscale factor)',
'output_format': 'string (default mp4)',
'task_id': 'string (optional, auto-generated)',
}
}, ensure_ascii=False)