#!/usr/bin/env python3
"""Публикует инструкцию Ярославу на Telegra.ph"""
import json
import urllib.parse
import urllib.request

ACCESS_TOKEN = "c38dcadb86e6edd7efc76496d9171d38beef6dc0f6a7ef2cd79bbae70e46"

VPN_KEY = "vpn://AAAIYXjanVVdcpswEH7PKTyevjl1QNiAM5MH100T4vwY06ZpQscjg-yoIYKAbMfN5Ay9RI_Qh850egf3Rl0hDHhMH1LwWOL7Pq1Wq13paacGT90LGceUkTip79duUkw8T3kvVeHFFOhNMCWOVcDrpq4oCtJ0tb5bIUFC0jEM1NE11KmUaKkEqQjs6K1KSUtIVA2Zmm4iU6nSnHhCo1VS9_gxNQATVPOUCb5dyTrpKo12JZctr4oLcMJHEOEJFeGrP7lMwC5EzYVvt4ibW9_NOSS5PGBlTsu4daTKXEtyRYhKpJVNWIbQNqRtQ61tqL0FnXgS0soYRDzzCFzdICiTRLsMO5mLRrsM5sEogTgIwgXxRzRKBHsjcckpzfTdKyxLfH9fQBL5nFvyAkoYt3w5ydX1ZY88ODYd8y_mO2tsX7KO-fHDu4fjuPfYGB7ZSTAJ9g7tcc88KLkjjYA369U2zabaNNVtSRTT-eiOLKUQzd-fzazItr1J_2qpWsNbpnfnR-Z8cnVMNM4YPfcXEekrj1XTRbNxYep_PU8zU5q4sRgn8QR75LPrsq7vxyRJage1fDl7GgLi7bkD4KvB0DrrDj-N4HO39so57F2cv82-QTSAdWJO-mQJ2hct02UnHozRRAfSBLqQI6KPH1NfFPHlqNCHNIEegh7khsuOBVaUEwCSWtcQAJoA8sIBoCVMFtXiMksYES3KWi1rW1nbli38bgaExCJSg9k4oJ5caq_xqfGle5TM8CmPptfzu-lpT_MeHobBZWe-uOh6dnAxPvWn9NA-SMNEklscE1-Odt5wyzBUNRz3LxuOjenRidroRHTv6lZ3rpdTf8GWuvpVH9gtMborq8AaiF3K0363lma6yw6ZH4WUcbEDCmoaalNFTdXU9zUDKSIeAzjyacIhl_qERDigcyK0IqylFLkNE36O70mWsmVLJdU9n60PH6OMR_kckKskGqWzZKbKZR6FMRdw6luBJndFir8oOoXlhMRzEm9Wy4u2Cc6MZ5dVHe7C6fS-EU5XCXiMWSJUUPghD4V25kf1DeHz5rjiOhZqfM_IV4pfi9s3lz3vyDNMXt8-meBZwHv_GpbLEi-mEadhesutvq9-rn6vfv35Bv8_Vj__fMuFLEnvOthk8ZZgJGGRZzm8zg5BbeRGfed55y-IVC9O"

# Telegraph Node helpers
def tag(name, children=None, attrs=None):
    n = {"tag": name}
    if children is not None:
        n["children"] = children if isinstance(children, list) else [children]
    if attrs:
        n["attrs"] = attrs
    return n

def p(*children): return tag("p", list(children))
def h3(text): return tag("h3", [text])
def h4(text): return tag("h4", [text])
def b(text): return tag("strong", [text])
def i(text): return tag("em", [text])
def ul(items): return tag("ul", [tag("li", [c]) if not isinstance(c, dict) else tag("li", [c]) for c in items])
def li_nodes(children): return tag("li", children)
def a(text, href): return tag("a", [text], {"href": href})
def code(text): return tag("code", [text])
def pre(text): return tag("pre", [text])
def hr(): return tag("hr")
def br(): return tag("br")

content = [
    p("Привет! Это инструкция в 3 шага. Внизу есть ", b("логин/пароль Apple ID"), " и ", b("ключ VPN"),
      " — их можно скопировать одним тапом."),

    hr(),

    h3("📱 Если у тебя iPhone или iPad"),

    h4("Шаг 1. Выйти из своего Apple ID в App Store"),
    p("Это нужно только чтобы скачать приложение. Твои фото и контакты никуда не денутся."),
    tag("ol", [
        tag("li", ["Открой ", b("«Настройки»"), " (серая шестерёнка)."]),
        tag("li", ["Наверху нажми на ", b("своё имя"), "."]),
        tag("li", ["Пролистай вниз до ", b("«Медиа и покупки»"), " → нажми."]),
        tag("li", ["В окошке нажми ", b("«Выйти»"), "."]),
    ]),
    p("⚠️ ", b("Важно!"), " Не нажимай «Выйти» в самом верху на своём имени — это не то. Выходишь ",
      b("только"), " в разделе «Медиа и покупки»."),

    h4("Шаг 2. Войти в американский Apple ID"),
    tag("ol", [
        tag("li", ["Открой ", b("App Store"), " (синяя иконка с буквой А)."]),
        tag("li", ["В правом верхнем углу — кружок с силуэтом → нажми."]),
        tag("li", [b("«Войти»"), " или ", b("«Использовать другой Apple ID»"), "."]),
        tag("li", ["Введи логин и пароль — они ниже на этой странице."]),
    ]),

    h4("Шаг 3. Подтверждение входа"),
    p("Apple спросит, куда отправить код. Появится список номеров."),
    p("→ Выбери номер, ", b("который заканчивается на ...70"), " (это мой)."),
    p("→ Я получу SMS и сразу пришлю тебе цифры."),
    p("→ Введи их. App Store стал американским."),

    h4("Шаг 4. Скачать AmneziaVPN"),
    p("В App Store в строке поиска набери ", b("AmneziaVPN"), " → «Загрузить»."),

    h4("Шаг 5. Вернуть свой обычный Apple ID (рекомендую)"),
    p("Повтори Шаг 1, но в конце войди под своим прежним ID. Приложение останется, обновления будут от меня."),

    hr(),

    h3("💻 Если у тебя компьютер (Windows / Mac)"),
    p("Apple ID не нужен."),
    tag("ol", [
        tag("li", ["Скачай AmneziaVPN: ", a("github.com/amnezia-vpn/amnezia-client/releases/latest",
                                             "https://github.com/amnezia-vpn/amnezia-client/releases/latest"),
                    ". Windows — файл ", code("AmneziaVPN_x64_*.exe"), ", Mac — ", code("AmneziaVPN.dmg"), "."]),
        tag("li", ["Установи, открой."]),
        tag("li", ["Скопируй ключ VPN снизу этой страницы."]),
        tag("li", ["В программе: ", b("«+»"), " → ", b("«Вставить из буфера обмена»"), "."]),
        tag("li", ["Нажми большую кнопку включения."]),
    ]),

    h3("🤖 Если у тебя Android"),
    p("Apple ID не нужен."),
    tag("ol", [
        tag("li", ["Открой Google Play, найди ", b("AmneziaVPN"), ", установи. Если в Play нет — скачай APK: ",
                    a("github.com/amnezia-vpn/amnezia-client/releases/latest",
                      "https://github.com/amnezia-vpn/amnezia-client/releases/latest"), "."]),
        tag("li", ["Скопируй ключ VPN снизу этой страницы."]),
        tag("li", ["В AmneziaVPN: ", b("«+»"), " → ", b("«Вставить»"), "."]),
        tag("li", ["Нажми большую кнопку включения."]),
    ]),

    hr(),

    h3("🔑 Подключить VPN (после установки)"),
    tag("ol", [
        tag("li", ["Скопируй ключ ", code("vpn://..."), " внизу этой страницы (тап по блоку с ключом)."]),
        tag("li", ["Открой ", b("AmneziaVPN"), "."]),
        tag("li", ["Нажми ", b("«+»"), " (или «Добавить сервер»)."]),
        tag("li", [b("«Вставить из буфера обмена»"), " (англ. «Import from clipboard»)."]),
        tag("li", ["Сервер добавится сам."]),
    ]),

    h3("▶️ Включить"),
    p("На главном экране AmneziaVPN — ", b("большая круглая кнопка"), ". Нажми."),
    p("Всплывёт окошко ", b("«Разрешить подключения VPN»"), " → ", b("«Разрешить»"),
      ". Введи пароль от телефона если попросит."),
    p("Кнопка станет ", b("зелёной"), " — VPN работает."),

    h3("✅ Проверить"),
    p("Открой в Safari ", a("2ip.ru", "https://2ip.ru"), ". Должна показаться ",
      b("другая страна"), " (не Россия). Значит всё."),

    hr(),

    h3("📲 Поделиться с другим своим устройством"),
    p("Не проси у меня — AmneziaVPN сам делится:"),
    tag("ol", [
        tag("li", ["В AmneziaVPN на рабочем устройстве нажми на сервер → иконка ", b("«i»"),
                    " / ", b("«Подробнее»"), " → ", b("«Поделиться подключением»"), "."]),
        tag("li", ["Получишь ссылку → отправь себе в Telegram «Избранное» или на почту."]),
        tag("li", ["На втором устройстве установи AmneziaVPN → скопируй ссылку → «+» → «Вставить»."]),
    ]),

    hr(),

    h3("🍏 Apple ID (США) — логин и пароль"),
    p(i("Тапни по строке чтобы скопировать.")),
    pre("hbuggle819@icloud.com"),
    pre("App5870w"),
    p("При входе — выбирай номер для кода ", b("на ...70"),
      ". Напиши мне когда Apple попросит код."),

    hr(),

    h3("🔐 Ключ VPN"),
    p(i("Тапни по блоку ниже → «Копировать». Потом в AmneziaVPN «+» → «Вставить из буфера обмена».")),
    pre(VPN_KEY),

    hr(),

    h3("❓ Если что-то идёт не так"),
    tag("ul", [
        tag("li", [b("Не пришёл код от Apple"), " — напиши, перевышлю."]),
        tag("li", [b("Кнопка не зелёная, пишет «ошибка»"),
                    " — закрой приложение (свайпни вверх), открой снова. Не помогло — перезагрузи телефон."]),
        tag("li", [b("Android, VPN отваливается"),
                    " — «Настройки телефона → Приложения → AmneziaVPN → Батарея → Без ограничений»."]),
        tag("li", [b("iPhone «Профиль VPN не найден»"),
                    " — «Настройки → Основные → VPN и управление устройством». Если профиль AmneziaVPN там есть, удали его, вернись в AmneziaVPN и снова нажми «+» → «Вставить»."]),
    ]),
    p("Совсем не получается — скинь мне скриншот того что видишь, разберёмся вместе."),
]

data = urllib.parse.urlencode({
    "access_token": ACCESS_TOKEN,
    "title": "Настройка VPN",
    "author_name": "Олег",
    "content": json.dumps(content, ensure_ascii=False),
    "return_content": "false",
}).encode()

req = urllib.request.Request("https://api.telegra.ph/createPage", data=data)
with urllib.request.urlopen(req) as resp:
    result = json.loads(resp.read().decode())

print(json.dumps(result, ensure_ascii=False, indent=2))
