Files
mrleo1nid 69f71cb836
CI / frontend (push) Failing after 19s
CI / backend (push) Failing after 41s
feat: import F95 screenshot galleries with AVIF support
2026-10-26 17:51:19 +03:00

8.3 KiB

Импорт данных и обложек F95zone

Кнопка «Подтянуть» в формах создания и редактирования игры загружает название, описание, теги и превью. Изображение сохраняется на сервере в WebP; обложка игры меняется только после сохранения формы. Перед сохранением превью можно убрать.

Cookie привязаны к текущему пользователю приложения. Если они отсутствуют, истекли или F95zone запросил вход, открывается окно авторизации с возможностью отказаться. Уже полученные название, описание и теги остаются в форме. При отказе автоматических повторов нет; можно заполнить данные вручную.

Чтобы добавить сессию:

  1. Войдите в свой аккаунт F95zone в браузере и откройте тему игры.
  2. Нажмите F12 → «Приложение» (Application) → «Хранилище» → «Файлы cookie» → https://f95zone.to.
  3. Выберите строку xf_user и скопируйте только содержимое колонки «Значение» в одноимённое поле окна авторизации. Если копируете из нижней панели Cookie Value, отключите «Показать декодированные параметры URL». При необходимости добавьте xf_session таким же способом. Имена cookie, домен, путь и срок действия копировать не нужно.
  4. Нажмите «Сохранить и повторить». Импорт повторится с вашими cookie.

xf_user — токен «запомнить меня», xf_session — идентификатор текущей сессии. В XenForo вход может подтверждаться одним из них; начните с xf_user, либо используйте xf_session, если xf_user отсутствует. Это не гарантирует доступ через защиту F95zone. См. пояснение разработчика XenForo. xf_csrf и TSVB_UID для этого импорта не запрашиваются.

Если сайт блокирует запрос, откройте «Если F95zone блокирует запрос» и добавьте cf_clearance из той же таблицы. Необязательный User-Agent находится в Network → запрос страницы темы → Request Headers → User-Agent. cf_clearance привязан к посетителю и устройству; перенос cookie из браузера на сервер может не сработать (документация Cloudflare).

Cookie используется для запроса темы и скачивания картинки. Сессия хранится зашифрованной в записи вашего пользователя; другие пользователи её не используют. Значения не возвращаются через API и не сохраняются в localStorage. Кнопка «Забыть cookie F95zone» удаляет вашу сессию. При повторном отказе в доступе сохранённая сессия сбрасывается и окно предлагает ввести новые cookie либо отказаться. Успешный доступ к F95zone зависит также от защиты сайта; ответ 403 может означать блокировку автоматических запросов, а не только истёкшую сессию.

После обновления приложения примените миграции до 0005 обычным способом (Docker-образ применяет их при запуске backend). Установите обновлённые зависимости backend. Шифрование использует SECRET_KEY; при смене ключа пользователям потребуется заново добавить cookie. Общие F95_COOKIE и F95_USER_AGENT из .env больше не используются; перезапуск сервера для изменения личной сессии не требуется.

Импорт сначала ищет обложку или баннер среди bbImage первого сообщения вне скрытых блоков: по cover/banner в alt, title или имени файла (например, F95 Cover.png или F95Banner_Sideversion.png). Затем используется первая доступная bbImage первого сообщения, и только при её отсутствии — og:image. Поддерживаются изображения на f95zone.to и его поддоменах; внешние хостинги пропускаются. Скачивание ограничено 20 МиБ, переходы за пределы F95zone блокируются до отправки cookie. Если изображение скачать не удалось, текстовые данные импортируются с сообщением об ошибке превью; текущая обложка игры сохраняется.

F95zone может отдать AVIF даже по ссылке с расширением .png. Для таких изображений нужна Pillow 11.3.0 с поддержкой AVIF (версия закреплена в requirements.txt). После обновления зависимости пересоберите образ backend: docker compose up -d --build backend. Повторите импорт из темы, чтобы получить обложку; уже сохранённые обложки менять не требуется.

Галерея игры

Импорт также собирает a.js-lbImage из первого сообщения, включая блоки со скриншотами в спойлерах. Используется полный href со всеми параметрами доступа, а не маленький img src из каталога thumb. Повторы и обложка исключаются; изображения из ответов в теме не импортируются.

Картинки скачиваются с личными cookie, преобразуются в WebP до 1920×1920 и сохраняются локально. Для просмотра до сохранения формы API возвращает отдельные небольшие превью. Подписанные ссылки F95zone и cookie в карточке игры не хранятся. За один импорт загружается до 24 изображений; ошибки отдельных файлов не отменяют остальные. Форма показывает количество загруженных кадров и предупреждение о пропусках.

Галерею можно просмотреть и удалить лишние кадры перед сохранением. В редакторе игры импорт дополняет имеющуюся галерею без повторов. В карточке можно сохранить до 48 кадров; во время импорта сохранение формы недоступно. Для хранения галереи нужна миграция 0006; после сохранения доступ к картинкам подчиняется видимости игры, а сборщик мусора сохраняет все изображения, на которые ссылается галерея.