#!/usr/bin/env python3
# -*- coding: utf-8 -*-
from __future__ import annotations

import argparse

from DrissionPage import ChromiumOptions, ChromiumPage

from tyyp_app.api import app
from tyyp_app.automation import input_code, submit_phone
from tyyp_app.config import DEFAULT_PHONE, DEFAULT_TARGET_URL


def build_parser() -> argparse.ArgumentParser:
    parser = argparse.ArgumentParser(description="天翼云盘订购页自动化")
    parser.add_argument("--api", action="store_true", help="以 FastAPI 服务模式启动")
    parser.add_argument("--host", default="0.0.0.0", help="API 监听地址（--api 模式）")
    parser.add_argument("--api-port", type=int, default=8000, help="API 监听端口（--api 模式）")
    parser.add_argument("--phone", default=DEFAULT_PHONE, help="手机号码（默认用代码中的 DEFAULT_PHONE）")
    parser.add_argument("--url", default=DEFAULT_TARGET_URL, help="目标页面 URL")
    parser.add_argument("--port", type=int, default=0, help="连接已有浏览器端口，0 表示新建")
    return parser


def run_once(phone: str, url: str, port: int = 0) -> None:
    if port:
        co = ChromiumOptions().set_local_port(port=port)
        page = ChromiumPage(addr_or_opts=co)
    else:
        page = ChromiumPage()

    print(f"打开页面: {url}，手机号: {phone}")
    body = submit_phone(page=page, phone=phone, url=url)
    print("hn_userEquitys/getYanZhenMa/v2 响应:")
    print(body)

    input_code(page=page, code=123123)


def main() -> None:
    args = build_parser().parse_args()

    if args.api:
        import uvicorn

        uvicorn.run(app, host=args.host, port=args.api_port)
        return

    run_once(phone=args.phone, url=args.url, port=args.port)
