test post
script Python khusus buat translate SRT pakai OpenAI.
Script Translate SRT dengan OpenAI (GPT-4o recommended)
import openai
import re
import time
from pathlib import Path
# ================== SETTING ==================
openai.api_key = "sk-proj-XXXXXXXXXXXXXXXXXXXXXXXX" # GANTI DENGAN API KEY LU
# Pengaturan
SOURCE_LANG = "ja" # "ja" untuk Jepang, "zh" untuk China
TARGET_LANG = "id"
MODEL = "gpt-4o-mini" # Pakai "gpt-4o" kalau mau kualitas lebih tinggi
CHUNK_SIZE = 25 # Berapa baris subtitle sekaligus (20-30 recommended)
TEMPERATURE = 0.3
# ============================================
def parse_srt(file_path):
with open(file_path, 'r', encoding='utf-8') as f:
content = f.read()
# Split per block subtitle
blocks = re.split(r'\n\s*\n', content.strip())
return blocks
def translate_chunk(chunk_text, source_lang="ja"):
prompt = f"""
Translate subtitle dari bahasa {source_lang} ke bahasa Indonesia yang natural, enak dibaca, dan seperti subtitle film Indonesia resmi.
Gunakan bahasa sehari-hari yang mengalir. Jaga nada percakapan tetap sesuai.
Jangan ubah waktu (nomor dan timecode). Hanya translate teksnya saja.
Berikut teksnya:
{chunk_text}
"""
response = openai.ChatCompletion.create(
model=MODEL,
messages=[
{"role": "system", "content": "Kamu adalah ahli subtitle film Jepang/China ke Indonesia."},
{"role": "user", "content": prompt}
],
temperature=TEMPERATURE,
)
return response.choices[0].message.content.strip()
def main():
file_name = input("Masukkan nama file SRT (contoh: episode01.srt): ").strip()
input_path = Path(file_name)
if not input_path.exists():
print("File tidak ditemukan!")
return
print("Membaca file SRT...")
blocks = parse_srt(input_path)
translated_blocks = []
total = len(blocks)
print(f"Total block: {total} | Sedang translate...\n")
for i in range(0, total, CHUNK_SIZE):
chunk = blocks[i:i+CHUNK_SIZE]
chunk_text = "\n\n".join(chunk)
print(f"Proses {i+1}-{min(i+CHUNK_SIZE, total)}/{total}...", end=" ")
try:
translated = translate_chunk(chunk_text, SOURCE_LANG)
translated_blocks.append(translated)
print("ā")
except Exception as e:
print(f"Error: {e}")
translated_blocks.append(chunk_text) # Simpan original kalau error
time.sleep(5)
time.sleep(1.5) # Hindari rate limit
# Simpan hasil
output_path = input_path.with_name(input_path.stem + "_ID.srt")
with open(output_path, 'w', encoding='utf-8') as f:
f.write("\n\n".join(translated_blocks))
print(f"\nā
Selesai! File disimpan sebagai: {output_path}")
if __name__ == "__main__":
main()Cara Pakai:
- Install dulu library:
pip install openai- Ganti openai.api_key dengan API key lu.
- Simpan script jadi translate_srt.py
- Taruh file .srt di folder yang sama
- Jalankan scriptnya.
Tips Biar Hasil Bagus:
- Pakai model gpt-4o kalau mau kualitas terbaik (lebih mahal)
- Kalau mau lebih murah & cukup bagus pakai gpt-4o-mini
- CHUNK_SIZE jangan terlalu besar (max 30-35)
Mau gw buatkan versi yang lebih advanced (bisa resume, progress bar, retry otomatis, dll)? Atau versi ini dulu cukup?
Gas bro, coba dulu.