Files
pgames-manager/docs/F95.md
T
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

82 lines
8.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Импорт данных и обложек 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](https://xenforo.com/community/threads/authentication-from-a-node-application.189858/).
`xf_csrf` и `TSVB_UID` для этого импорта не запрашиваются.
Если сайт блокирует запрос, откройте «Если F95zone блокирует запрос» и добавьте
`cf_clearance` из той же таблицы. Необязательный User-Agent находится в Network →
запрос страницы темы → Request Headers → User-Agent.
`cf_clearance` привязан к посетителю и устройству; перенос cookie из браузера на сервер
может не сработать ([документация Cloudflare](https://developers.cloudflare.com/cloudflare-challenges/concepts/clearance/)).
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`; после сохранения доступ к картинкам подчиняется видимости игры,
а сборщик мусора сохраняет все изображения, на которые ссылается галерея.