mitikoman / test_subtitle.py
mhdacm's picture
Create test_subtitle.py
30bbc99 verified
Raw
History Blame Contribute Delete
2.45 kB
import requests
import time
import re
# آدرس API شما
API_URL = "https://mhdacm-mitikoman.hf.space/translate"
def translate_text(text):
"""ارسال یک متن به API برای ترجمه"""
try:
response = requests.post(
API_URL,
json={"text": text, "src_lang": "eng_Latn", "tgt_lang": "pes_Arab"},
headers={"Content-Type": "application/json"}
)
if response.status_code == 200:
return response.json()["translation"]
else:
print(f"خطا در ترجمه: {response.status_code}")
return text
except Exception as e:
print(f"خطا: {e}")
return text
def translate_srt_file(input_file, output_file):
"""ترجمه فایل زیرنویس SRT"""
print(f"📖 در حال خواندن فایل: {input_file}")
with open(input_file, 'r', encoding='utf-8') as f:
lines = f.readlines()
translated_lines = []
total_lines = len(lines)
for i, line in enumerate(lines):
line = line.rstrip('\n')
# تشخیص خطوط زمان (-->)
if '-->' in line:
translated_lines.append(line)
# تشخیص خطوط شماره (اعداد تنها)
elif line.strip().isdigit():
translated_lines.append(line)
# خطوط خالی
elif line.strip() == '':
translated_lines.append('')
# متن زیرنویس
else:
print(f"🔄 در حال ترجمه خط {i+1}/{total_lines}: {line[:50]}...")
translated = translate_text(line)
translated_lines.append(translated)
time.sleep(0.5) # تاخیر 0.5 ثانیه بین درخواست‌ها برای جلوگیری از overload
# ذخیره فایل ترجمه شده
with open(output_file, 'w', encoding='utf-8') as f:
f.write('\n'.join(translated_lines))
print(f"✅ ترجمه کامل شد! فایل خروجی: {output_file}")
# اجرای تست
if __name__ == "__main__":
# فایل ورودی و خروجی
input_file = "sample.srt"
output_file = "sample_fa.srt"
# ترجمه فایل
translate_srt_file(input_file, output_file)
# نمایش نتیجه
print("\n📝 نتیجه ترجمه:")
print("-" * 50)
with open(output_file, 'r', encoding='utf-8') as f:
print(f.read())