#!/usr/bin/env python3
import re
import sys
import time
from deep_translator import GoogleTranslator

INPUT = sys.argv[1] if len(sys.argv) > 1 else '/root/.claude/projects/-root-projects-stremwi/9315b40d-38d6-4db3-a538-8702218a8e41/tool-results/webfetch-1776625181433-6u3dxu.bin'
OUTPUT = sys.argv[2] if len(sys.argv) > 2 else '/root/projects/stremwi/ProjectHailMary_Hebrew.srt'

translator = GoogleTranslator(source='en', target='iw')

with open(INPUT, 'r', encoding='utf-8-sig') as f:
    content = f.read()

blocks = re.split(r'\r?\n\r?\n', content.strip())
translated_blocks = []
batch_texts = []
batch_indices = []

for i, block in enumerate(blocks):
    lines = block.strip().split('\n')
    lines = [l.strip('\r') for l in lines]
    if len(lines) < 2:
        translated_blocks.append(block)
        continue

    num = lines[0]
    timestamp = lines[1] if '-->' in lines[1] else None
    if not timestamp:
        translated_blocks.append(block)
        continue

    text_lines = lines[2:]
    text = '\n'.join(text_lines)

    # Keep sound effects [brackets] and HTML tags, translate the rest
    translated_blocks.append({'num': num, 'ts': timestamp, 'text': text, 'idx': i})
    batch_texts.append(text)
    batch_indices.append(len(translated_blocks) - 1)

# Translate in batches of 50
BATCH_SIZE = 50
total = len(batch_texts)
print(f"Translating {total} subtitle entries to Hebrew...")

for start in range(0, total, BATCH_SIZE):
    end = min(start + BATCH_SIZE, total)
    batch = batch_texts[start:end]

    try:
        results = translator.translate_batch(batch)
    except Exception as e:
        print(f"  Batch {start}-{end} error: {e}, retrying one by one...")
        results = []
        for t in batch:
            try:
                r = translator.translate(t)
                results.append(r if r else t)
            except:
                results.append(t)
            time.sleep(0.1)

    for j, translated in enumerate(results):
        idx = batch_indices[start + j]
        entry = translated_blocks[idx]
        if translated:
            entry['translated'] = translated
        else:
            entry['translated'] = entry['text']

    done = min(end, total)
    print(f"  [{done}/{total}] translated")
    if end < total:
        time.sleep(0.5)

# Write output
with open(OUTPUT, 'w', encoding='utf-8') as f:
    for item in translated_blocks:
        if isinstance(item, dict):
            f.write(f"{item['num']}\n")
            f.write(f"{item['ts']}\n")
            f.write(f"{item['translated']}\n")
            f.write("\n")
        else:
            f.write(item + "\n\n")

import os
print(f"\nDone! Hebrew SRT saved to: {OUTPUT}")
print(f"File size: {os.path.getsize(OUTPUT)} bytes")
