ai_admin/WebAdmin/create_tiktok_video.py
2024-09-20 04:29:09 +00:00

71 lines
2.7 KiB
Python
Executable File
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

from .base import logger, synthesize_speech
import requests
VIDEO_API_KEY = 'c4c0f516-33c0-4f5c-9d29-3b1d4e6a93c3'
VIDEO_API_URL = 'https://www.typeframes.com/api/public/v2/render'
WEBHOOK_URL = 'https://www.typeframes.cc/api/webhook/'
def create_video(audio_url,generationPreset, media_type, text, ratio, voice_name, user_id, slug,disableCaptions, caption_preset, caption_position, video_id):
"""
生成视频的函数(用于 create-tiktok-video
"""
try:
video_headers = {
'Content-Type': 'application/json',
'key': VIDEO_API_KEY
}
# 判断是否需要生成视频
hasToGenerateVideos = media_type == "movingImage"
# 配置 webhook URL包含 video_id
webhook_url = f"{WEBHOOK_URL}?userid={user_id}&videoid={video_id}"
# 构建请求体
payload = {
"frameRate": 60,
"resolution": "1080p",
"frameDurationMultiplier": 5,
"webhook": webhook_url,
"creationParams": {
"mediaType": media_type,
"origin": "/create",
"inputText": text,
"flowType": "text-to-video",
"slug": slug,
"disableCaptions": disableCaptions,
"hasToGenerateVoice": False,
"hasToTranscript": False,
"hasToSearchMedia": True,
"useQualityTranscript":False,
"hasAvatar": False,
"hasWebsiteRecorder": False,
"hasTextSmallAtBottom": False,
"captionPresetName": caption_preset,
"captionPositionName": caption_position,
"disableAudio": True,
"ratio": ratio,
"selectedAudio": "Bladerunner 2049",
"selectedVoice": voice_name,
"sourceType": "contentScraping",
"selectedStoryStyle": {
"value": "custom",
"label": "Custom"
},
"hasToGenerateVideos": hasToGenerateVideos,
"selectedRecording": audio_url,
"selectedRecordingType": "audio",
"generationPreset": generationPreset,
"audioUrl": "https://cdn.tfrv.xyz/audio/_bladerunner-2049.mp3"
}
}
logger.info(payload)
response = requests.post(VIDEO_API_URL, headers=video_headers, json=payload)
if response.status_code == 200:
return {"code": 200, "data": response.json()}
else:
return {"code": response.status_code, "message": response.text}
except Exception as e:
return {"code": 500, "message": str(e)}