# -*- coding: utf-8 -*-

import random
import time


def human_type_text(page, text, min_delay_ms=35, max_delay_ms=120, pause_chance=0.06):
    """
    글자마다 랜덤 delay로 실제 키보드 타이핑한다.
    - page: Playwright page
    - text: 입력할 문자열
    """
    text = str(text or "")
    if not text:
        return 0

    try:
        min_delay_ms = int(min_delay_ms or 35)
        max_delay_ms = int(max_delay_ms or 120)
    except Exception:
        min_delay_ms = 35
        max_delay_ms = 120

    if max_delay_ms < min_delay_ms:
        max_delay_ms = min_delay_ms

    typed = 0

    for ch in text:
        try:
            page.keyboard.type(ch, delay=random.randint(min_delay_ms, max_delay_ms))
        except Exception:
            # 한글/특수문자 입력 실패 방어
            try:
                page.keyboard.insert_text(ch)
            except Exception:
                continue

        typed += 1

        if random.random() < pause_chance:
            time.sleep(random.uniform(0.18, 0.95))

    return typed


def human_type_title(page, title):
    """
    제목 입력 전용.
    짧은 제목이라도 고정 delay를 피한다.
    """
    return human_type_text(
        page=page,
        text=title,
        min_delay_ms=35,
        max_delay_ms=135,
        pause_chance=0.075,
    )
