AnyTube Uploader
================

Загружает видео и комментарии на GitHub для сайта AnyTube.

ЗАПУСК
  Дважды щёлкните AnyTube.cmd — откроется окно с вкладками.
  Можно перетащить видеофайл прямо на AnyTube.cmd.
  Старый режим без окна: AnyTube.cmd --console
  При первом запуске программа сама скачает всё нужное:
    - Python 3.12 (если его нет; через winget или с python.org)
    - портативный Git и Git LFS (если их нет)
    - FFmpeg (нужен для проверки длительности, нарезки и сжатия)
  Всё, кроме Python, кладётся в папку tools рядом с программой.

ТОКЕН GITHUB (один раз)
  https://github.com/settings/tokens/new  ->  Tokens (classic)
  Отметьте только галочку public_repo  ->  Generate token  ->  вставьте в программу.
  Токен хранится в config.json рядом с программой. Никому не передавайте этот файл.

ПРОДАЖА (вкладка «Загрузить» → Монетизация)
  Видео:      цена за час просмотра (например 6 ₽, списывается поминутно) и/или покупка навсегда.
              Без оплаты на сайте виден бесплатный трейлер (первые N секунд).
  «Что загружаем» → Приложение: выберите файл приложения (.exe, .zip, .apk …).
              Приложение бесплатно, или покупка, или подписка за час / день / месяц / год
              (пустое поле — такого периода нет).
  «Что загружаем» → Обои: бесплатно или платно. Подходят mp4, webm, gif, mov.
  «Что загружаем» → WebGL-игра: папка сборки игры (где index.html) или ZIP с ней.
              Бесплатно, по времени (например 1 ₽ за час, списывается поминутно, пока игра открыта)
              и/или покупка навсегда. Играют прямо на сайте.
              Unity: File → Build Settings → WebGL → Build, выберите получившуюся папку.
  «Что загружаем» → 3D-модель: файл модели (.glb лучше всего — его можно крутить в 3D на сайте),
              бесплатно или покупкой.
  Для игр, моделей и приложений вместо видео можно выбрать картинку — будет ролик-превью 8 секунд.
  Платные файлы уходят в ПРИВАТНЫЙ репозиторий anytubepaid_…, программа приглашает туда
  аккаунт сайта (alekandrza14), чтобы сайт отдавал файлы купившим.
  Для продажи нужен токен с галочкой  repo  (не только public_repo).
  Вы получаете 63% от продажи и от каждой минуты просмотра/игры, проверенные авторы — 90%
  (ставку назначает администрация сайта, ваш процент виден рядом с аватаркой) на заработанный баланс букса (вывод на /bux).

МОДЕРАЦИЯ
  Новые видео сначала проверяет администратор и только потом они появляются в ленте,
  поиске, обоях и буксе. Пока видео на проверке, вы видите его по ссылке (войдя на сайт через GitHub).

ОГРАНИЧЕНИЯ ANYTUBE
  Длительность видео  — не больше 1 года (365 дней).
  Описание видео      — до 1 000 000 000 символов (один миллиард).

КАК ХРАНИТСЯ ВИДЕО
  ваш_ник/anytubevideo_myvideo   с файлом  myvideo.mp4  и файлом anytube.json
  Название видео = описание репозитория.

  до 95 МБ  -> один обычный файл
  больше    -> выбор в меню:
    1 — нарезать на пронумерованные части по ~95 МБ  [рекомендуется]
        myvideo.part0001.mp4, myvideo.part0002.mp4, ...
        полное качество (без перекодирования), квота Git LFS не тратится,
        размер видео не ограничен
    2 — части по 1.9 ГБ через Git LFS (частей меньше, тратится квота LFS)
    3 — сжать в один файл 95 МБ (качество ниже)
  .mov .mkv .avi … -> сначала конвертируется в MP4 (H.264 + AAC)

  Части раскладываются по репозиториям-томам (до ~900 МБ в каждом):
    anytubevideo_myvideo        — главный, тут anytube.json со списком частей
    anytubevideo_myvideo_vol2   — том 2
    anytubevideo_myvideo_vol3   — том 3 …
  На сайте части играют подряд как одно видео. Тома в ленте не показываются.
  Удалить видео = удалить главный репозиторий и все его тома.

  Нужно свободное место на диске примерно в 2 раза больше видео.

КАК ХРАНИТСЯ ОПИСАНИЕ
  При загрузке видео: просто напишите текст (закончить — строка «.»),
  или перетащите в окно .txt файл, или Enter — без описания.
  У уже загруженного видео: пункт меню 2 «Добавить / изменить описание».
  Старое описание заменяется, само видео при этом не скачивается и не меняется.
  Делится на пронумерованные файлы по 10 000 000 символов:
    description.part0001.txt, description.part0002.txt, ...
  На сайте подгружается порциями кнопкой «Показать ещё».

КАК ХРАНИТСЯ КОММЕНТАРИЙ
  ваш_ник/anytubecomment_автор-видео_myvideo.mp4_Comment.1
  Номер растёт сам: второй ваш комментарий к тому же видео будет Comment.2.
  Короткий текст лежит в описании репозитория, полный — в файле comment.md.
  Удалить комментарий = удалить этот репозиторий.

ДИЗЛАЙКИ (5 УРОВНЕЙ)
  ваш_ник/anytubecomment_автор-видео_myvideo.mp4_Commet.3.diske
  Число перед .diske — уровень:
    1 — Ну не очень
    2 — Так себе
    3 — Плохо
    4 — Очень плохо, зря потратил время
    5 — Это убогий видос, мой день испорчен
  Один человек — один дизлайк на видео. Повторный дизлайк меняет уровень.
  Своему видео дизлайк не засчитывается.
  Убрать дизлайк: пункт 0 в меню (или удалите репозиторий на GitHub).

БУКС (РЕКЛАМА ВИДЕО И ЗАРАБОТОК)
  На сайте, страница /bux, вход через GitHub.
  Рекламодатель пополняет баланс через ЮMoney и запускает рекламу своего видео.
  Зрители смотрят видео нужное время и получают деньги, вывод на ЮMoney по заявке.

НА LINUX / MACOS
  python3 anytube_uploader.py
  git, git-lfs и ffmpeg установите пакетным менеджером.
