from pathlib import Path
from PIL import Image, ImageEnhance
import base64
import io
import re
import subprocess
import textwrap
face_path = Path("/mnt/data/Ekran Resmi 2026-07-30 00.17.58.png")
img = Image.open(face_path).convert("RGB")
# Karakter kafası için yüz + saç bölgesini sıkı kırp ve hafif iyileştir.
crop = img.crop((18, 0, min(img.width, 650), min(img.height, 880)))
crop.thumbnail((430, 600), Image.Resampling.LANCZOS)
crop = ImageEnhance.Contrast(crop).enhance(1.05)
crop = ImageEnhance.Sharpness(crop).enhance(1.12)
buffer = io.BytesIO()
crop.save(buffer, format="JPEG", quality=87, optimize=True)
face_b64 = base64.b64encode(buffer.getvalue()).decode("ascii")
html = f'''
Kadir Run: Antalya Yolu
Mesafe
0 m
Yıldız · Rekor
⭐ 0 · 0
3 şerit · Arkadan kamera
Sağa/sola kaydır · Yukarı zıpla · Aşağı eğil
KADİR RUN
Antalya yolunda üç şeridi kullan, engellerden kaç ve yıldızları topla.
Bu sürümde yol gerçekten akıyor, nesneler de arkanda kalınca çöpe gidiyor.
← →Şerit değiştir
↑ ↓Zıpla / eğil
DURDUK
Kadir Can nefesleniyor. Antalya kaçmıyor, şimdilik.
YİNE GELEMEDİ
Antalya yolu Kadir Can'ı bir kez daha reddetti.
'''
out = Path("/mnt/data/index.html")
out.write_text(html, encoding="utf-8")
# JavaScript sözdizimini Node ile kontrol et.
script_match = re.search(r"", html, flags=re.S)
if not script_match:
raise RuntimeError("Script bloğu bulunamadı.")
js_path = Path("/mnt/data/kadir_run_check.js")
js_path.write_text(script_match.group(1), encoding="utf-8")
check = subprocess.run(
["node", "--check", str(js_path)],
capture_output=True,
text=True
)
if check.returncode != 0:
raise RuntimeError(check.stderr)
print(f"{out} oluşturuldu | {out.stat().st_size:,} bayt | JavaScript sözdizimi temiz")