test post

test post

script Python khusus buat translate SRT pakai OpenAI.

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:

  1. Install dulu library:
pip install openai
  1. Ganti openai.api_key dengan API key lu.
  2. Simpan script jadi translate_srt.py
  3. Taruh file .srt di folder yang sama
  4. 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.