Spaces:
Running
Running
def main(url, parameters, progress=gr.Progress()): | |
try: | |
font_type, font_size, font_color, service, target, style, subject = parameters.split(',') | |
progress(0, desc="پردازش شروع شد") | |
yield "پردازش شروع شد", None | |
# Transcription | |
progress(0.35, desc="تبدیل صوت به متن") | |
yield "تبدیل متن به صوت", None | |
with Client("rayesh/transcribe") as client: | |
job = client.submit(url, api_name="/transcribe") | |
while not job.done(): | |
time.sleep(0.5) | |
if job.failed(): | |
raise gr.Error("Transcription failed") | |
results = job.outputs() | |
if len(results) != 3: | |
raise ValueError(f"Expected 3 outputs, got {len(results)}") | |
srt_file, video, mp3_file = results | |
# Translation | |
progress(0.55, desc="در حال ترجمه") | |
yield "در حال ترجمه", None | |
with Client("rayesh/translate") as client: | |
job = client.submit( | |
handle_file(srt_file), | |
3000, | |
api_name="/translate" | |
) | |
while not job.done(): | |
time.sleep(0.5) | |
subtitle_file = job.outputs()[0] | |
# Video Processing | |
progress(0.75, desc="پردازش ویدئو") | |
yield "درحال پردازش ویدئو", None | |
with Client("SPACERUNNER99/video_edite") as client: | |
job = client.submit( | |
handle_file(subtitle_file), | |
{"video": handle_file(video["video"])}, | |
font_color, | |
font_type, | |
font_size, | |
handle_file(mp3_file), | |
api_name="/video_edit" | |
) | |
while not job.done(): | |
time.sleep(0.5) | |
output_video = job.outputs()[0]['video'] | |
yield "پردازش کامل شد", output_video | |
except Exception as e: | |
raise gr.Error(f"خطا در پردازش: {str(e)}") | |