82 lines
8.3 KiB
Markdown
82 lines
8.3 KiB
Markdown
# Импорт данных и обложек 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`; после сохранения доступ к картинкам подчиняется видимости игры,
|
||
а сборщик мусора сохраняет все изображения, на которые ссылается галерея.
|