- Совместимость с XenForo
- 2.3
- Видимый копирайт
- Нет
Hotlink Converter — это инструмент администратора, который пакетно преобразует внешние изображения с горячими ссылками в описаниях ресурсов XFRM в локально хранящиеся вложения XenForo. Он сканирует теги BB-кода [IMG]https://external.com/pic.jpg[/IMG], скачивает изображения, создаёт соответствующие XF-вложения и заменяет BB-код на [ATTACH=full]id[/ATTACH].
Создан как единовременный инструмент для миграции форумов с устаревшим ресурсом, который ссылается на изображения с внешних хостов, которые могут в любой момент выйти из сети.
После:
Изображение теперь хранится локально как полноценное XF-вложение, связанное с обновлением ресурса. Он выживет даже если внешний хост отключится.
Создан как единовременный инструмент для миграции форумов с устаревшим ресурсом, который ссылается на изображения с внешних хостов, которые могут в любой момент выйти из сети.
Ключевые особенности
- Панель администратора — показывает, сколько обновлений ресурсов содержат горячие ссылки на изображения, статистику конверсии (конвертировано/неудачно/пропущено/ожидаемо) и кнопки действий.
- Режим Dry Run — предпросмотр, что будет конвертировано, без скачивания ничего. Результаты отображаются в журнале конвертации как «ожидающие» записи.
- Live Conversion — скачивает внешние изображения, создаёт XF-вложения и заменяет теги [IMG] на [ATTACH=full].Работает как восстанавливаемая фоновая работа.
- Confirmation Overlay — Живое преобразование требует явного подтверждения, так как оно необратимо изменяет содержимое ресурсов.
- Журнал конверсии — страницированный журнал каждого обработанного URL с статусными значками, ссылками на вложения, размером файлов, сообщениями об ошибках и временными метками. Фильтруется по статусу.
- Умная обработка — обрабатывает все варианты тегов [IMG] ([IMG width="400" height="300"], [IMG alt="desc"] и др.).
- Дедупликация URL — если один и тот же внешний URL появляется несколько раз в одном обновлении ресурса, он скачивается один раз, и все экземпляры имеют одно и то же вложение.
- Пропуск локальных URL — URL, ведущие на вашу собственную доску, автоматически пропускаются.
- Идемпотентный — безопасно повторять. Уже конвертированные URL пропускаются при последующих запусках. Никаких дублирующих скачиваний или вложений.
- Устойчивость к отказам — неудачные загрузки (404, тайм-ауты, недействительные изображения) фиксируются с конкретными сообщениями об ошибках. Задача продолжает обрабатывать оставшиеся URL.
- Чистое удаление — при удалении сбрасывает таблицу журнала конверсии.
Как это работает
- Перейти к AdminCP > инструментам > конвертеру горячих ссылок
- Проверьте дашборд— посмотрите, сколько обновлений ресурсов содержат внешние теги[IMG]
- Проведите пробный запуск — нажмите «Dry run», чтобы отсканировать без конвертации. Проверьте журнал, чтобы узнать, что будет обработано.
- Convert All — нажмите «Convert All», подтвердите в оверлее, и фоновая задача справится с остальным. Он скачает каждое изображение, создаёт вложение XF и обновляет описание ресурса.
- Проверьте журнал — проверьте журнал конверсий на предмет сбоев. Фильтруйте по статусу, чтобы сосредоточиться на проблемах.
Что конвертируется
До:
Код:
Check out this screenshot: [IMG]https://external-site.com/image.jpg[/IMG]
После:
Код:
Check out this screenshot: [ATTACH=full]12345[/ATTACH]
Изображение теперь хранится локально как полноценное XF-вложение, связанное с обновлением ресурса. Он выживет даже если внешний хост отключится.
Технические детали
- Архитектура: Сервис + Вакансия + Репозиторий. Одна таблица базы данных (xf_qubn_hlc_conversion_log) для аудита.
- Загрузки: Использует встроенный HTTP-ридер XF getUntrusted() с защитой SSRF. 15-секундный тайм-аут, лимит размера файла 10 МБ на изображение.
- Поддерживаемые форматы: JPG, JPEG, PNG, GIF, WebP, BMP
- Создание привязанности: Использует родной PreparerService XF — тот же API, что и ручные загрузки. Корректно обновляется attach_count по обновлению ресурсов.
- Обработка работы: Восстанавливаемое задание на основе курсора. Обрабатывает 50 обновлений ресурсов за одну партию с проверкой по времени. Можно отменить из очереди заданий AdminCP.
- Совместимость: Требуется XenForo 2.3.0+ и XF Resource Manager 2.3.0+
- Качество кода: PHPStan уровня 3 чистый. Без расширений классов — полностью автономно.
Установка
- Скачайте и распакуйте ZIP-файл
- Загрузите папку Qubn/HotlinkConverter/ в src/addons/
- Перейдите в AdminCP > дополнения > Установка из архива (или Установка/обновление)
- Перейти к AdminCP > инструментам > конвертеру горячих ссылок
