DLE Movie Importer PRO - Полная документация

1. Установка и первоначальная настройка

1.1. Установка модуля

  1. Войдите в административную панель вашего DLE сайта
  2. Перейдите в раздел "Сторонние модули""Установка модулей"
  3. Загрузите файл dle-movie-importer-pro.zip через систему установки
  4. Дождитесь завершения установки (может занять до 30 секунд)
  5. После успешной установки в разделе "Сторонние модули" появится новый модуль "DLE Movie Importer PRO"
  6. Нажмите на название модуля для перехода в панель управления

1.2. Первичная активация

При первом запуске модуль создаст необходимые таблицы в базе данных:

  • dle_movie_importer_movies - основная таблица фильмов
  • dle_movie_importer_persons - таблица персон
  • dle_movie_importer_episodes - таблица эпизодов сериалов
  • dle_movie_importer_cache - таблица кеша

2. Детальная настройка модуля

2.1. Вкладка "Основные" - Базовая конфигурация

2.1.1. API конфигурация ALLOHA

API токен ALLOHA - это ваш уникальный ключ доступа к базе данных фильмов и сериалов.

Получение токена:

  1. Перейдите на https://alloha.tv/
  2. Зарегистрируйтесь или войдите в личный кабинет
  3. В разделе "API" создайте новый токен
  4. Скопируйте токен и вставьте в поле настроек модуля

Важно: Токен имеет формат: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX

2.1.2. Детальные настройки лимитов импорта

Лимит полного импорта (поле: import_limit)

  • Описание: Определяет количество материалов, импортируемых за один CRON запрос при полном импорте
  • Диапазон значений: 1-30
  • Рекомендации по настройке:
    • VPS с 1 ядром, 1GB RAM: 5-8 материалов
    • VPS с 2 ядрами, 2GB RAM: 10-15 материалов
    • VPS с 4 ядрами, 4GB RAM: 15-20 материалов
    • Выделенный сервер: 20-30 материалов
  • При включенном AI Rewrite: уменьшите лимит в 2 раза
  • Формула расчета нагрузки:
Время обработки = (Лимит × 2 сек) + (Rewrite ? Лимит × 5 сек : 0)

Лимит режима обновлений (поле: update_limit)

  • Описание: Количество материалов для проверки обновлений (новые серии, изменения рейтинга)
  • Диапазон значений: 1-20
  • Особенности:
    • Проверяет последние добавленные материалы в API
    • Обновляет существующие записи на сайте
    • Добавляет новые эпизоды к сериалам
    • Обновляет рейтинги и описания

Максимум страниц обновлений (поле: max_update_pages)

  • Описание: Глубина проверки обновлений в API
  • Значение по умолчанию: 30
  • Рекомендации:
    • Для ежедневных обновлений: 10-15 страниц
    • Для почасовых обновлений: 5-10 страниц
    • Для обновлений раз в 10 минут: 3-5 страниц

2.1.3. Секретный ключ CRON

Генерация и использование:

// Автоматическая генерация при установке
$cron_secret = substr(md5(time() . $_SERVER['HTTP_HOST']), 0, 20);

Безопасность:

  • Ключ должен быть уникальным для каждого сайта
  • Рекомендуется менять ключ каждые 3-6 месяцев
  • Минимальная длина: 10 символов
  • Используйте только латинские буквы и цифры

2.2. CRON URL - Полное руководство по автоматизации

2.2.1. Структура CRON URL

Базовый формат:

https://yoursite.com/engine/ajax/controller.php?mod=movie_importer_cron&secret_key=YOUR_KEY&action=cron_run&type=TYPE&category=CATEGORY

Параметры:

  • secret_key - ваш секретный ключ
  • type - тип операции (last/list/search/translation/trailer)
  • category - категория контента (movie/serial/anime/anime-serial/tv-show)

2.2.2. Детальное описание всех CRON операций

РЕЖИМ ОБНОВЛЕНИЙ (type=last)

Используется для получения последних обновлений из API.

# Все категории (универсальный)
*/30 * * * * curl -s "https://yoursite.com/engine/ajax/controller.php?mod=movie_importer_cron&secret_key=YOUR_KEY&action=cron_run&type=last"

# Только фильмы
*/45 * * * * curl -s "https://yoursite.com/engine/ajax/controller.php?mod=movie_importer_cron&secret_key=YOUR_KEY&action=cron_run&type=last&category=movie"

# Только сериалы (рекомендуется чаще, так как выходят новые серии)
*/15 * * * * curl -s "https://yoursite.com/engine/ajax/controller.php?mod=movie_importer_cron&secret_key=YOUR_KEY&action=cron_run&type=last&category=serial"

# Аниме
0 */2 * * * curl -s "https://yoursite.com/engine/ajax/controller.php?mod=movie_importer_cron&secret_key=YOUR_KEY&action=cron_run&type=last&category=anime"

# Аниме-сериалы
*/20 * * * * curl -s "https://yoursite.com/engine/ajax/controller.php?mod=movie_importer_cron&secret_key=YOUR_KEY&action=cron_run&type=last&category=anime-serial"

# ТВ-шоу
0 */3 * * * curl -s "https://yoursite.com/engine/ajax/controller.php?mod=movie_importer_cron&secret_key=YOUR_KEY&action=cron_run&type=last&category=tv-show"


ПОЛНЫЙ ИМПОРТ (type=list)

# Полный импорт всех категорий (запускать только ночью!)
0 3 * * * curl -s "https://yoursite.com/engine/ajax/controller.php?mod=movie_importer_cron&secret_key=YOUR_KEY&action=cron_run&type=list"

# Полный импорт фильмов (разделить на несколько запусков)
0 2 * * 1 curl -s "https://yoursite.com/engine/ajax/controller.php?mod=movie_importer_cron&secret_key=YOUR_KEY&action=cron_run&type=list&category=movie"

# Полный импорт сериалов
0 2 * * 3 curl -s "https://yoursite.com/engine/ajax/controller.php?mod=movie_importer_cron&secret_key=YOUR_KEY&action=cron_run&type=list&category=serial"

СПЕЦИАЛЬНЫЕ ФУНКЦИИ

# Импорт переводчиков (раз в неделю достаточно)
0 5 * * 0 curl -s "https://yoursite.com/engine/ajax/controller.php?mod=movie_importer_cron&secret_key=YOUR_KEY&action=cron_run&type=translation"

# Импорт трейлеров (раз в день)
0 6 * * * curl -s "https://yoursite.com/engine/ajax/controller.php?mod=movie_importer_cron&secret_key=YOUR_KEY&action=cron_run&type=trailer"

# Поисковый импорт (использует фильтры из "Продвинутые")
*/45 * * * * curl -s "https://yoursite.com/engine/ajax/controller.php?mod=movie_importer_cron&secret_key=YOUR_KEY&action=cron_run&type=search"

2.2.3. Оптимальная настройка CRON по мощности сервера

Слабый сервер (1 CPU, 1GB RAM):

# Обновления каждые 2 часа с лимитом 5
0 */2 * * * curl -s "URL&type=last"

Средний сервер (2 CPU, 2-4GB RAM):

# Обновления каждые 30 минут с лимитом 10
*/30 * * * * curl -s "URL&type=last"
# Полный импорт раз в неделю ночью
0 3 * * 0 curl -s "URL&type=list"

Мощный сервер (4+ CPU, 8+ GB RAM):

# Обновления каждые 10 минут с лимитом 20
*/10 * * * * curl -s "URL&type=last"
# Разделенный полный импорт по категориям
0 2 * * * curl -s "URL&type=list&category=movie"
0 3 * * * curl -s "URL&type=list&category=serial"

2.3. Категории - Полное руководство по маппингу

2.3.1. Принципы маппинга категорий

Маппинг - это соответствие между категориями API и категориями вашего сайта.

Формат записи:

API_категория - Ваша_категория

2.3.2. Подробные примеры настройки

Пример 1: Простая структура

Фильмы - Фильмы
Сериалы - Сериалы
Мультфильмы - Мультфильмы
Аниме - Аниме

Пример 2: Сложная иерархическая структура

Фильмы - Фильмы
Фильмы/Боевик - Фильмы/Боевик
Фильмы/Комедия - Фильмы/Комедия
Фильмы/Драма - Фильмы/Драма
Фильмы/Ужасы - Фильмы/Ужасы
Фильмы/Фантастика - Фильмы/Фантастика
Сериалы - Сериалы
Сериалы/Российские - Сериалы/Российские
Сериалы/Зарубежные - Сериалы/Зарубежные

Пример 3: Маппинг годов

2025 - 2025
2024 - 2024
2023 - 2023
2020-2022 - Фильмы 2020-2022

Пример 4: Маппинг стран

США - США
Россия - Россия
Великобритания - Великобритания
Франция - Франция
Германия - Германия
Япония - Япония
Южная Корея - Корея

2.3.3. Специальные случаи и решение проблем

Проблема: API отдает категорию, которой нет на сайте Решение: Создайте универсальную категорию

НеизвестныйЖанр - Прочее

Проблема: Одна категория API должна попасть в несколько категорий сайта Решение: Используйте мультикатегории через запятую

Фильмы/Боевик - Фильмы,Боевики,Экшн

2.4. Дополнительные поля - Расширенная настройка

2.4.1. Типы дополнительных полей и их применение

Текстовые поля (input):

  • kinopoisk_id - ID фильма на Кинопоиске
  • imdb_id - ID фильма на IMDB
  • world_art_id - ID на World-Art
  • original_name - Оригинальное название
  • slogan - Слоган фильма

Числовые поля:

  • rating_kp - Рейтинг Кинопоиск (формат: 7.5)
  • rating_imdb - Рейтинг IMDB (формат: 7.5)
  • rating_critics - Рейтинг критиков
  • votes_kp - Количество голосов КП
  • votes_imdb - Количество голосов IMDB

Текстовые области (textarea):

  • actors - Список актёров
  • directors - Список режиссёров
  • producers - Список продюсеров
  • writers - Сценаристы
  • operators - Операторы

Специальные поля:

  • poster - Постер (изображение или ссылка)
  • trailer - Код трейлера
  • player - Код плеера
  • quality - Качество видео
  • duration - Продолжительность

2.4.2. Создание и настройка xfields

Шаг 1: Создание поля в DLE

  1. Админпанель → Дополнительные поля
  2. Добавить новое поле
  3. Указать название (латиницей)
  4. Выбрать тип поля
  5. Сохранить

Шаг 2: Маппинг в модуле

API_field - your_xfield_name

Примеры маппинга:

rating_kp - kp_rating
rating_imdb - imdb_rating
year - god
country - strana
genre - zhanr
actors - aktery
director - rezhisser
quality - kachestvo
duration - dlitelnost

2.5. Оформление - SEO и шаблоны контента

2.5.1. Все доступные переменные для шаблонов

Основные данные:

  • {id} - ID в API
  • {kp_id} - ID Кинопоиск
  • {imdb_id} - ID IMDB
  • {name} - Название на русском
  • {original_name} - Оригинальное название
  • {year} - Год выпуска
  • {description} - Описание
  • {short_description} - Краткое описание
  • {slogan} - Слоган

Рейтинги и статистика:

  • {rating_kp} - Рейтинг КП
  • {rating_imdb} - Рейтинг IMDB
  • {rating_critics} - Рейтинг критиков
  • {votes_kp} - Голосов на КП
  • {votes_imdb} - Голосов на IMDB

Персоны:

  • {actors} - Актёры
  • {directors} - Режиссёры
  • {producers} - Продюсеры
  • {writers} - Сценаристы
  • {operators} - Операторы
  • {composers} - Композиторы

Технические данные:

  • {quality} - Качество
  • {duration} - Длительность
  • {premiere_russia} - Премьера в России
  • {premiere_world} - Мировая премьера
  • {age_restrictions} - Возрастные ограничения

Категории и жанры:

  • {genres} - Жанры через запятую
  • {countries} - Страны через запятую
  • {tags} - Все теги

2.5.2. Примеры настройки шаблонов

Шаблон заголовка (title):

{name} ({year}) смотреть онлайн бесплатно в хорошем качестве

Шаблон meta title:

[if-serial]Сериал [/if-serial]{name} ({year}) - [if-rating_kp]КП: {rating_kp}[/if-rating_kp] - смотреть онлайн HD

Meta Keywords:

{name}, {original_name}, {year}, смотреть онлайн, {genres}, {actors}, {directors}, фильм {year} года

ЧПУ (alt_name):

{original_name}

2.6. Изображения - Детальная настройка

2.6.1. Режим внешних ссылок

Настройка:

  1. Создайте xfield типа "Одна строка"
  2. Назовите его poster_url
  3. В маппинге укажите: poster - poster_url

Преимущества:

  • Не занимает место на сервере
  • Быстрая скорость импорта
  • Нет нагрузки на сервер

Недостатки:

  • Зависимость от внешнего сервера
  • Возможные проблемы с HTTPS
  • Нет контроля над изображениями

2.6.2. Режим загрузки на сервер (рекомендуется)

Настройка:

  1. Создайте xfield типа "Загружаемое изображение"
  2. Назовите его poster
  3. В настройках модуля включите "Загружать изображения"

Детальные параметры:

  • Папка сохранения: /uploads/posts/{year}/{month}/
  • Максимальный размер: 2 MB
  • Разрешенные форматы: JPG, PNG, WEBP, AVIF
  • Качество сжатия: 85% (оптимально)

Настройки ресайза:

Ширина постера: 300px
Высота постера: 450px
Сохранять пропорции: Да
Обрезать по центру: Да
Водяной знак: Опционально

Оптимизация изображений:

Оригинал → 1920x2880 (2MB)
После обработки → 300x450 (50KB) WEBP
Экономия: 97.5%

2.7. Модерация - Контроль контента

2.7.1. Фильтры 

Обязательные поля для публикации:

  • Отправлять все на модерацию
  • На модерацию, если нет постера
  • На модерацию, если нет описания

2.7.2. Фильтры по контенту

Возрастные ограничения:

  • Не публиковать 18+ контент
  • Не публиковать без рейтинга
  • Модерация для 16+ контента

Качество видео:

  • Только HD и выше
  • Только с определенными переводами
  • Исключить CAMRip/TS

2.8. API Фильтры - Тонкая настройка импорта

2.8.1. Все доступные фильтры

Основные фильтры:

name=Текст               # Поиск по названию
year=2024               # Конкретный год
year=2020,2021,2022    # Несколько годов
year=2020-2025         # Диапазон годов
not_year=2010,2011     # Исключить годы

Фильтры по рейтингу:

rating_kp=7.0          # КП от 7.0 и выше
rating_imdb=6.5        # IMDB от 6.5 и выше
votes_kp=10000         # Минимум голосов на КП
votes_imdb=5000        # Минимум голосов на IMDB

Фильтры по жанрам:

genre=драма            # Один жанр
genre=драма,комедия    # Несколько жанров
not_genre=ужасы        # Исключить жанр

Фильтры по странам:

country=США            # Одна страна
country=США,Франция    # Несколько стран
not_country=Индия      # Исключить страну

Фильтры по персонам:

actor=Джонни Депп           # Конкретный актер
director=Кристофер Нолан    # Конкретный режиссер
producer=Стивен Спилберг    # Конкретный продюсер

Технические фильтры:

poster=1           # Только с постером
description=1      # Только с описанием
trailer=1          # Только с трейлером
quality=HD             # Конкретное качество
translation_id=1       # ID перевода

Сортировка:

order=rating_kp        # По рейтингу КП
order=rating_imdb      # По рейтингу IMDB
order=year             # По году
order=created          # По дате добавления
order_type=DESC        # По убыванию
order_type=ASC         # По возрастанию

2.9. Продвинутые фильтры - Поисковый импорт

2.9.1. Отличие от основных фильтров

Основные фильтры:

  • Применяются к type=list и type=last
  • Используют общие счетчики
  • Работают с основным CRON

Продвинутые фильтры:

  • Применяются только к type=search
  • Имеют отдельные счетчики
  • Независимый CRON процесс

2.9.2. Сценарии использования

Сценарий 1: Премиальный контент

Основной CRON: все фильмы
Поисковый CRON: rating_kp >= 8.0, year >= 2023

Сценарий 2: Тематический импорт

Основной CRON: общий поток
Поисковый CRON: genre=фантастика, country=США

3. Система управления персонами

3.1. Общие принципы работы

Система персон работает в связке с основным импортом фильмов. При импорте каждого фильма автоматически создаются записи о персонах.

3.2. Kinopoisk Unofficial парсинг - Полное руководство

3.2.1. Настройка API Kinopoisk Unofficial

Получение API ключа:

  1. Перейдите на https://kinopoiskapiunofficial.tech/
  2. Зарегистрируйтесь через email
  3. Подтвердите почту
  4. В личном кабинете скопируйте API ключ

Тарифные планы:

  • Бесплатный: 500 запросов/день
  • Расширенный доступ: 10,000 запросов/день (500 руб. / меся)

Проверка API ключа в модуле:

  1. Вставьте ключ в поле настроек
  2. Нажмите кнопку "Проверить"
  3. Система выполнит тестовый запрос к API
  4. При успехе увидите сообщение "API ключ правильный"

3.2.2. Вкладка "API настройки"

Kinopoisk Unofficial API ключ:

  • Поле для ввода вашего API ключа
  • Кнопка проверки работоспособности
  • Индикатор оставшихся запросов за день

Режим парсинга:

  • Все необработанные - парсит всех персон без статуса
  • Только новые (NULL) - только новые записи без попыток
  • Повторить неудачные - персоны со статусом error/not_found
  • Повторить найденные - обновление уже найденных персон

Лимит за CRON запуск:

  • Диапазон: 1-50 персон
  • Рекомендуется: 10-20 персон
  • При бесплатном тарифе: не более 10

Максимальный размер фото:

  • 1 MB - экономия места
  • 2 MB - оптимальный вариант
  • 5 MB - максимальное качество

Дополнительные опции:

  • Разрешить ручной парсинг
  • Разрешить CRON парсинг
  • Автоматически загружать фото
  • Обновлять существующие данные
  • Изменять размер фото

Параметры изображений:

  • Ширина: 500px 
  • Высота: 750px 
  • Формат: WEBP/AVIF (для экономии)

3.2.3. Вкладка "Парсинг"

Статистика парсинга:

Всего персон: 15,234
К обработке: 8,456
Успешно: 5,234
Найдено: 1,234
Ошибки: 234
Пропущено: 76

Ручной запуск парсинга:

  1. Нажмите "Начать парсинг"
  2. Система начнет последовательную обработку
  3. Прогресс отображается в реальном времени
  4. Логи показывают детали каждой операции

3.2.4. Вкладка "CRON"

CRON статус:

  • Индикатор: Включён/Отключён
  • Последний запуск: дата и время
  • Обработано за последний запуск: количество

CRON URLs:

Обычный режим:

*/10 * * * * curl -s "https://site.com/engine/ajax/controller.php?mod=person_parsing_cron&secret_key=KEY"

Принудительный режим (игнорирует временные ограничения):

0 */2 * * * curl -s "https://site.com/engine/ajax/controller.php?mod=person_parsing_cron&secret_key=KEY&force=1"

3.3. Настройки персон - Полная конфигурация

3.3.1. Вкладка "Кеширование"

Система кеширования персон:

Статистические карточки:

  • Статус кеша: ВКЛЮЧЕН/ОТКЛЮЧЕН
  • Файлов в кеше: количество
  • Размер кеша: в MB
  • Время жизни: минуты или ∞

Режимы кеширования:

Безлимитный (рекомендуется):

  • Кеш не устаревает автоматически
  • Обновляется только при изменении данных
  • Экономит ресурсы сервера
  • Идеально для стабильных баз

С ограничением по времени:

  • Автоматическое обновление через интервал
  • Диапазон: 300-86400 секунд (5 минут - 24 часа)
  • Подходит для часто обновляемых данных
  • Требует больше ресурсов

Управление кешем:

  • Полная очистка кеша - удаляет все файлы
  • Очистка устаревшего - только старые файлы
  • Автоочистка при сохранении настроек

Тип ЧПУ для страницы персоны:

  • slug - /person/johnny-depp/ (по имени)
  • id - /person/12345/ (по ID)

3.3.2. Вкладка "Отображение"

Персон на странице:

12 = Сетка 3×4 (компактно)
20 = Сетка 4×5 (стандарт)
24 = Сетка 4×6 (оптимально)
30 = Сетка 5×6 (подробно)
48 = Сетка 6×8 (максимум)

Заглушка для фото:

  • Путь по умолчанию: /templates/Default/images/no_avatar.png
  • Можно указать внешний URL
  • Поддерживает SVG для экономии

Длина биографии в превью:

  • Минимум: 50 символов
  • Максимум: 5000 символов
  • Оптимально: 200 символов

Дополнительные опции:

  • Показывать роли персон (актер, режиссер)
  • Показывать debug-статистику
  • Разрешить поисковую индексацию

3.3.3. Вкладка "SEO Общие"

Глобальные модификаторы Title:

Эти переменные можно использовать в шаблонах:

Префикс {prefix}:

Пример: "Кинопортал | "
Результат в title: Кинопортал | Актеры и режиссеры

Суффикс {suffix}:

Пример: " - База актеров 2025"
Результат в title: Актеры и режиссеры - База актеров 2025

Разделитель {separator}:

Пример: " | " или " — "
Использование: {person_name}{separator}{profession}
Результат: Джонни Депп | Актер

Социальные сети:

  • Open Graph теги (Facebook, VK, Telegram)
  • Twitter Card теги
  • Изображение по умолчанию: URL для соцсетей (1200×630px)

3.3.4. Вкладка "SEO Список"

Шаблоны для списка персон (/persons/):

Доступные переменные:

  • {prefix} - глобальный префикс
  • {suffix} - глобальный суффикс
  • {filters} - активные фильтры (текст)
  • {filters_keywords} - фильтры (ключевые слова)
  • {page} - номер страницы
  • {total} - всего персон

Шаблон Title:

{prefix}Актеры и режиссеры{filters}{suffix}

Результат: "Кинопортал | Актеры и режиссеры Актер из США - База актеров"

Шаблон Description:

Полная база актеров и режиссеров. {filters}. Всего персон: {total}. Страница {page}

Результат: "Полная база актеров и режиссеров. роль: актер, страна: США. Всего персон: 15234. Страница 1"

Шаблон Keywords:

актеры, режиссеры, знаменитости, {filters_keywords}

Автоматическое дополнение Keywords:

  • Авто-генерировать Keywords
  • Количество имен: 5-20 (оптимально 10)
  • Добавляются имена из текущего списка

3.3.5. Вкладка "SEO Персона"

Шаблоны для страницы персоны (/person/name/):

Доступные переменные:

  • {person_name} - имя персоны
  • {person_name_en} - имя на английском
  • {profession} - основная профессия
  • {profession_keywords} - все профессии
  • {country} - страна
  • {age} - возраст (60 лет)
  • {movies_count} - количество фильмов

Условные блоки:

[profession]{profession}[/profession]
[not-profession]Персона[/not-profession]

Дополнительные опции:

  • Авто-генерировать Keywords
  • Включать названия фильмов
  • Количество фильмов в Keywords: 3-15

3.3.6. Вкладка "Статистика"

Статистика базы персон:

  • Всего персон: количество
  • С фотографиями: количество (процент)
  • С биографией: количество (процент)
  • Покрытие фото: процент
  • Покрытие биографий: процент

Активные функции:

  • Кеширование данных: ВКЛ/ВЫКЛ
  • Отображение ролей: ВКЛ/ВЫКЛ
  • Поисковая индексация: ВКЛ/ВЫКЛ
  • Показ статистики: ВКЛ/ВЫКЛ
  • Open Graph теги: ВКЛ/ВЫКЛ
  • Twitter Card теги: ВКЛ/ВЫКЛ

Производительность:

  • График покрытия фотографиями
  • График покрытия биографиями
  • Цветовая индикация (зеленый/желтый/красный)

Системная информация:

  • Директория кеша: /engine/cache/persons/
  • Права на запись: проверка
  • Конфигурационный файл: путь и статус

4. Настройка эпизодов

4.1. Список эпизодов

Функции управления:

  • Поиск по названию сериала
  • Фильтрация по сезонам
  • Массовое редактирование
  • Добавление новых эпизодов
  • Удаление эпизодов
  • Изменение порядка

Структура эпизода:

Сериал: Название
Сезон: 1
Эпизод: 1
Название эпизода: Пилот
Дата выхода: 2025-01-01
Качество: 1080p
Перевод: Дубляж

4.2. Темы и настройки плеера

Добавьте этот код в файл fullstory.tpl в то место, где должен отображаться плеер

 {episodes}

4.2.1. Выбор темы

Доступные темы:

  • Classic - классический дизайн
  • Modern - современный плоский дизайн
  • Dark - темная тема
  • Netflix - стиль Netflix
  • YouTube - стиль YouTube
  • Custom - своя тема

Настройка цветов:

  • Основной цвет
  • Цвет кнопок
  • Цвет прогресс-бара
  • Цвет текста

4.2.2. Параметры плеера

Изображение-заставка:

  • URL изображения до начала воспроизведения
  • Размер: 1920×1080px
  • Формат: JPG/PNG/WEBP

Время старта видео:

  • Пропуск интро: секунды
  • Пропуск титров: автоопределение
  • Сохранение позиции просмотра

Дополнительные настройки:

  • Автовоспроизведение
  • Показывать субтитры
  • Качество по умолчанию
  • Скорость воспроизведения

4․3․ График эпизодов 

Здесь вы настраиваете получение дополнительного контента для эпизодов сериалов.
Например: название эпизода, постер, описание, дата выхода и изображение, которое будет отображаться под плеером.

Существует 3 способа получения этих данных, которые необходимо выбрать и настроить в разделе:
?mod=movie_importer&action=episod&sub_action=settings

  1. TMDB – требуется API-ключ, который можно получить здесь: https://www.themoviedb.org/settings/api.
    Данные с TMDB приходят на русском языке.

  2. TVMaze – не требует API-ключа, однако данные приходят на английском языке.

  3. Гибридный режимрекомендуется.
    В этом режиме сначала выполняется запрос к TMDB, и если данные отсутствуют, система обращается к API TVMaze.

Категории сериалов

Выберите на сайте те категории, которые относятся к сериалам.
Например: Сериалы, Аниме-сериалы, Мультсериалы, а иногда и TV-шоу.

Режим работы

Это логика работы CRON-ссылки.

  1. Smart (рекомендуется) – интеллектуальный режим.
    Когда запускается ваш CRON, приоритет отдаётся наиболее часто просматриваемым сериалам.
    Например, если кто-то посмотрел условный сериал «Supernatural», то он поднимается выше в очереди, и при следующем запуске CRON метаданные этого сериала (названия и постеры эпизодов, описание, даты выхода) будут обновлены в первую очередь, что позволяет поддерживать контент максимально актуальным.

  2. Только CRON – не имеет механизма приоритетов.
    Обновление данных происходит тогда, когда CRON дойдет до конкретного материала в своей очереди.

Интервал обновления (часы)

Это продолжение предыдущего пункта.
Например, если приоритет какого-то сериала был повышен, но Интервал обновления установлен на 24 часа, то данные этого сериала не будут обновляться чаще одного раза в сутки, даже при просмотре, что позволяет экономить ресурсы.

Лимит CRON-обработки (сериалов)

Ограничение количества сериалов, которые CRON может обновить за один запуск.
Например, при значении 20 за один запуск обновятся данные для 20 сериалов.

Лимит API-запросов (эпизодов)

Максимальное количество эпизодов, которые система может обработать для одного сериала за один запрос.
Рекомендуемое значение — около 100.
Чем больше значение, тем больше ресурсов потребуется, но при этом можно полностью обновить многосерийные проекты.

CRON-ссылка

https://site.ru/engine/ajax/controller.php?mod=movie_importer_schedule_queue&secret_key=your_api_key

Рекомендуемая частота: каждые 5–10 минут
(шаблон CRON: */5 * * * *)

Пример для cPanel:

*/5 * * * * wget -q -O - "https://site.ru/engine/ajax/controller.php?mod=movie_importer_schedule_queue&secret_key=your_api_key"


5. Настройки ИИ для Контента (AI Rewrite)

Этот раздел предоставляет функционал для уникализации импортируемого контента с помощью нейросетей, что критически важно для SEO-продвижения и избежания фильтров поисковых систем за неуникальный контент.

  • Принцип: Модуль отправляет загруженное описание, название и мета-теги выбранному AI-провайдеру вместе с вашим промптом (инструкцией) и получает обратно уникализированный текст.

  • Польза для SEO: Уникальный контент повышает авторитет вашего сайта в глазах поисковых систем (Google, Yandex), что положительно влияет на ранжирование и трафик.

Настройка Назначение
API / Документация
Включить переписывание
Активирует функцию AI Rewrite. Если включено, весь импортируемый контент (через CRON или вручную) будет автоматически переписываться.


Основной AI провайдер
Выбор нейросети для переписывания (ChatGPT, Gemini, DeepSeek, Claude, Grok, Yandex GPT).


API Ключ и Модель Ввод API-ключа и выбор конкретной модели для каждого провайдера.


5.2. Цели

  • Назначение: Выбор полей DLE, которые должны быть переписаны нейросетью.

  • Доступные поля: Title, Metatitle, Краткая новость (Short Story), Полная новость (Full Story), Description, Keywords.

5.3. Промпты

  • Промпт (Prompt): Это инструкция или техническое задание, которое вы отправляете нейросети.

  • Назначение: В этом разделе вы пишете уникальные промпты для каждого переписываемого поля (Title, Description и т.д.), чтобы контролировать стиль, объем и тон сгенерированного текста.

  • Пример промпта: «Перепиши этот текст в стиле увлекательного обзора, используя позитивный тон. Ограничься 500 символами и не упоминай имена актеров.»

Чрезвычайно профессиональный подход! Предоставленные вами детали и код позволяют составить исчерпывающую, высококачественную документацию.

6. Настройка для ЧПУ Персон

Для DLE 19.0 и выше (Рекомендуется)

В DLE 19.0+ используется встроенная система Friendly URL без необходимости редактирования .htaccess.

Шаг 1: Добавление правил через Admin Panel

  1. Перейдите в Настройки → Управление ссылками ЧПУ
  2. Нажмите кнопку "Добавить правило" и добавьте следующие правила в указанном порядке:

Правило 1: Персоны с ролью и страницей

Ключ правила: custom.persons.role.page
SEO URL: /persons/{role}/page/{page}/
Реальный URL: /index.php?do=persons&role={role}&page={page}
```

**Правило 2: Персоны с ролью**
```
Ключ правила: custom.persons.role
SEO URL: /persons/{role}/
Реальный URL: /index.php?do=persons&role={role}
```

**Правило 3: Персоны со страницей**
```
Ключ правила: custom.persons.page
SEO URL: /persons/page/{page}/
Реальный URL: /index.php?do=persons&page={page}
```

**Правило 4: Главная страница персон**
```
Ключ правила: custom.persons
SEO URL: /persons/
Реальный URL: /index.php?do=persons
```

**Правило 5: Профиль персоны**
```
Ключ правила: custom.person.profile
SEO URL: /person/{slug}/
Реальный URL: /index.php?do=person&slug={slug}
```

#### Шаг 2: Изменение порядка правил

⚠️ **ВАЖНО:** После добавления всех правил необходимо изменить их порядок!

1. В списке правил Friendly URL найдите добавленные правила модуля
2. **Перетащите (drag & drop)** все 5 правил персон **В САМЫЙ ВЕРХ** списка
3. Правила персон должны находиться **ВЫШЕ** стандартных правил категорий и новостей

**Правильный порядок (сверху вниз):**
```
✅ custom.persons.role.page
✅ custom.persons.role
✅ custom.persons.page
✅ custom.persons
✅ custom.person.profile
---
[Стандартные правила DLE - category, news и т.д.]

Шаг 3: Проверка правил

  1. Нажмите кнопку "Проверить правила"
  2. Убедитесь, что нет ошибок: должно появиться сообщение "Правила не содержат ошибок"
  3. Если появляется ошибка "Static route is shadowed" - значит правила персон находятся слишком низко в списке, переместите их выше

Шаг 4: Очистка кеша

Перейдите в Инструменты → Очистка кеша → Полная очистка

Для DLE 18.x и ниже

Для более старых версий DLE добавьте следующие правила в ваш файл .htaccess сразу после строки RewriteEngine On:

# Movie Importer - Persons Module Rules
RewriteRule ^persons/page/([0-9]+)/?$ index.php?do=persons&page=$1 [L,QSA]
RewriteRule ^persons/?$ index.php?do=persons [L,QSA]

RewriteRule ^persons/(actor|director|producer|writer)/page/([0-9]+)/?$ index.php?do=persons&role=$1&page=$2 [L,QSA]
RewriteRule ^persons/(actor|director|producer|writer)/?$ index.php?do=persons&role=$1 [L,QSA]

RewriteRule ^person/([a-zA-Z0-9\-_]+)/?$ index.php?do=person&slug=$1 [L,QSA]
# End Movie Importer Rules

7. Шаблоны - Полное руководство

7.1. Структура шаблонов

/templates/ВАШ_ШАБЛОН/
├── persons/
│   ├── index.tpl          # Главная страница списка
│   ├── list_item.tpl      # Элемент списка персон
│   ├── person.tpl         # Страница персоны
│   ├── fact_item.tpl      # Элемент факта
│   ├── award_item.tpl     # Элемент награды
│   └── family_item.tpl    # Элемент семьи
├── movie_persons/
│   └── person_item.tpl    # Персона в фильме
└── fullstory.tpl          # Добавить теги персон

7.2. Шаблон списка персон (persons/index.tpl)

<div class="persons-page">
    <!-- Фильтры -->
    <div class="persons-filters">
        <form method="get" action="/persons/">
            <select name="role">
                <option value="">Все роли</option>
                <option value="actor" {filter_role_actor_selected}>Актеры</option>
                <option value="director" {filter_role_director_selected}>Режиссеры</option>
                <option value="producer" {filter_role_producer_selected}>Продюсеры</option>
                <option value="writer" {filter_role_writer_selected}>Сценаристы</option>
            </select>
            
            <select name="country">
                <option value="">Все страны</option>
                {countries_options}
            </select>
            
            <select name="letter">
                <option value="">Все буквы</option>
                <option value="A">A</option>
                <option value="B">B</option>
                <!-- ... -->
            </select>
            
            <input type="text" name="q" placeholder="Поиск..." value="{search_query}">
            <button type="submit">Применить</button>
        </form>
        
        [clear_filters]
        <a href="/persons/" class="clear-filters">Сбросить фильтры</a>
        [/clear_filters]
    </div>
    
    <!-- Сортировка -->
    <div class="persons-sort">
        Сортировка:
        <a href="{sort_name_link}" class="{sort_name_active}">По имени</a>
        <a href="{sort_popular_link}" class="{sort_popular_active}">По популярности</a>
        <a href="{sort_movies_link}" class="{sort_movies_active}">По фильмам</a>
    </div>
    
    <!-- Статистика -->
    <div class="persons-stats">
        Найдено персон: {total_persons} | 
        Страница: {current_page} из {total_pages}
    </div>
    
    <!-- Список персон -->
    [persons]
    <div class="persons-grid">
        {persons_list_items}
    </div>
    [/persons]
    
    [not-persons]
    <div class="no-persons">
        <p>Персоны не найдены</p>
    </div>
    [/not-persons]
    
    <!-- Пагинация -->
    [pagination]
    <div class="pagination">
        {pagination}
    </div>
    [/pagination]
    
</div>

7.3. Элемент списка персон (persons/list_item.tpl)

<div class="person-card" data-id="{person_id}">
    <a href="{person_link}" class="person-card__link">
        <div class="person-card__image">
            [if_person_photo]
            <img src="{person_photo}" alt="{person_name}" loading="lazy">
            [/if_person_photo]
            
            [not_if_person_photo]
            <div class="person-card__placeholder">
                <span class="initial">{person_initial}</span>
            </div>
            [/not_if_person_photo]
            
            [person_age]
            <span class="person-card__age">{person_age} лет</span>
            [/person_age]
        </div>
        
        <div class="person-card__content">
            <h3 class="person-card__name">{person_name}</h3>
            
            [person_country]
            <div class="person-card__country">
                <i class="icon-location"></i> {person_country}
            </div>
            [/person_country]
            
            [person_roles]
            <div class="person-card__roles">
                {person_roles_list}
            </div>
            [/person_roles]
            
            <div class="person-card__movies">
                <i class="icon-film"></i> Фильмов: {person_movies_count}
            </div>
            
            [person_bio]
            <div class="person-card__bio">
                {person_bio_short}
            </div>
            [/person_bio]
        </div>
    </a>
</div>

7.4. Страница персоны (persons/person.tpl)

<div class="person-page">
    <!-- Хлебные крошки -->
    <div class="breadcrumbs">
        <a href="/">Главная</a> / 
        <a href="/persons/">Персоны</a> / 
        <span>{person_name}</span>
    </div>
    
    <!-- Основная информация -->
    <div class="person-header">
        <div class="person-header__left">
            [person_photo]
            <img src="{person_photo}" alt="{person_name}" class="person-photo">
            [/person_photo]
            
            [no_person_photo]
            <div class="person-no-photo">
                <span class="initial">{person_initial}</span>
            </div>
            [/no_person_photo]
        </div>
        
        <div class="person-header__right">
            <h1 class="person-name">{person_name}</h1>
            
            [name_en]
            <h2 class="person-name-en">{person_name_en}</h2>
            [/name_en]
            
            <div class="person-info">
                <table class="info-table">
                    <tr>
                        <td>Профессия:</td>
                        <td>{person_profession}</td>
                    </tr>
                    
                    [birth_date]
                    <tr>
                        <td>Дата рождения:</td>
                        <td>{person_birth_date}</td>
                    </tr>
                    [/birth_date]
                    
                    [death_date]
                    <tr>
                        <td>Дата смерти:</td>
                        <td>{person_death_date}</td>
                    </tr>
                    [/death_date]
                    
                    [age_text]
                    <tr>
                        <td>Возраст:</td>
                        <td>{person_age_text}</td>
                    </tr>
                    [/age_text]
                    
                    [country]
                    <tr>
                        <td>Страна:</td>
                        <td>{person_country}</td>
                    </tr>
                    [/country]
                    
                    [birthplace]
                    <tr>
                        <td>Место рождения:</td>
                        <td>{person_birthplace}</td>
                    </tr>
                    [/birthplace]
                    
                    [growth]
                    <tr>
                        <td>Рост:</td>
                        <td>{person_growth} см</td>
                    </tr>
                    [/growth]
                    
                    [sex]
                    <tr>
                        <td>Пол:</td>
                        <td>{person_sex}</td>
                    </tr>
                    [/sex]
                </table>
            </div>
            
            <!-- Статистика по фильмам -->
            <div class="person-stats">
                <div class="stat-item">
                    <span class="stat-value">{total_movies}</span>
                    <span class="stat-label">Всего фильмов</span>
                </div>
                <div class="stat-item">
                    <span class="stat-value">{as_actor}</span>
                    <span class="stat-label">Как актер</span>
                </div>
                <div class="stat-item">
                    <span class="stat-value">{as_director}</span>
                    <span class="stat-label">Как режиссер</span>
                </div>
                <div class="stat-item">
                    <span class="stat-value">{as_producer}</span>
                    <span class="stat-label">Как продюсер</span>
                </div>
            </div>
        </div>
    </div>
    
    <!-- Биография -->
    [bio]
    <div class="person-section">
        <h3 class="section-title">Биография</h3>
        <div class="person-biography">
            {person_bio}
        </div>
    </div>
    [/bio]
    
    <!-- Факты -->
    [facts]
    <div class="person-section">
        <h3 class="section-title">Интересные факты</h3>
        <div class="person-facts">
            {facts_list}
        </div>
    </div>
    [/facts]
    
    [no_facts]
    <!-- Факты отсутствуют -->
    [/no_facts]
    
    <!-- Награды -->
    [awards]
    <div class="person-section">
        <h3 class="section-title">Награды и номинации</h3>
        <div class="person-awards">
            {awards_list}
        </div>
    </div>
    [/awards]
    
    [no_awards]
    <!-- Награды отсутствуют -->
    [/no_awards]
    
    <!-- Семья -->
    [family]
    <div class="person-section">
        <h3 class="section-title">Семья</h3>
        <div class="person-family">
            {family_list}
        </div>
    </div>
    [/family]
    
    [no_family]
    <!-- Информация о семье отсутствует -->
    [/no_family]
    
    <!-- Фильмография -->
    [all_movies]
    <div class="person-section">
        <h3 class="section-title">Фильмография ({total_movies})</h3>
        <div class="person-movies">
            {all_movies_list}
        </div>
    </div>
    [/all_movies]
    
    [no_all_movies]
    <div class="person-section">
        <p>Фильмография пока отсутствует</p>
    </div>
    [/no_all_movies]
    
    <!-- Debug информация -->
    [cache_info]
    <div class="debug-info">
        {cache_info}
    </div>
    [/cache_info]
</div>

7.5. Элемент факта (persons/fact_item.tpl)

<div class="fact-item">
    <i class="icon-info"></i>
    <span class="fact-text">{fact_text}</span>
</div>

7.6. Элемент награды (persons/award_item.tpl)

<div class="award-item">
    <div class="award-icon">{award_icon}</div>
    <div class="award-content">
        <div class="award-name">{award_name}</div>
        
        [award_category]
        <div class="award-category">Категория: {award_category}</div>
        [/award_category]
        
        [award_movie]
        <div class="award-movie">За фильм: {award_movie}</div>
        [/award_movie]
        
        [award_year]
        <div class="award-year">Год: {award_year}</div>
        [/award_year]
    </div>
</div>

7.7. Элемент семьи (persons/family_item.tpl)

<div class="family-item">
    <div class="family-type">{family_type}:</div>
    <div class="family-name">{family_name}</div>
    
    [family_status]
    <div class="family-status">({family_status})</div>
    [/family_status]
    
    [relation_type]
    <div class="relation-type">{relation_type}</div>
    [/relation_type]
    
    [children_count]
    <div class="children-count">Детей: {children_count}</div>
    [/children_count]
    
    [birth_year]
    <div class="birth-year">Год рождения: {birth_year}</div>
    [/birth_year]
</div>

7.8. Персона в фильме (movie_persons/person_item.tpl)

<div class="movie-person">
    <a href="{person_url}" class="movie-person__link">
        [person_photo]
        <img src="{person_photo}" alt="{person_name}" class="movie-person__photo">
        [/person_photo]
        
        [no_person_photo]
        <div class="movie-person__no-photo">
            <span>{person_initial}</span>
        </div>
        [/no_person_photo]
        
        <div class="movie-person__info">
            <div class="movie-person__name">{person_name}</div>
            
            [person_name_en]
            <div class="movie-person__name-en">{person_name_en}</div>
            [/person_name_en]
            
            <div class="movie-person__role">{person_role}</div>
            
            [character_name]
            [is_actor]
            <div class="movie-person__character">
                Роль: {character_name}
            </div>
            [/is_actor]
            [/character_name]
        </div>
    </a>
</div>

7.9. Интеграция в fullstory.tpl

В ваш шаблон fullstory.tpl добавьте следующие блоки:

<!-- Актеры и съемочная группа -->
[movie_persons]
<div class="movie-persons">
    <h3>Актеры и съемочная группа</h3>
    <div class="movie-persons-grid">
        {movie_persons_list}
    </div>
</div>
[/movie_persons]

[no_movie_persons]
<!-- Информация о персонах отсутствует -->
[/no_movie_persons]

<!-- Только актеры -->
[actors]
<div class="movie-actors">
    <h4>В главных ролях</h4>
    <p>{actors_list_with_characters}</p>
</div>
[/actors]

<!-- Только режиссеры -->
[directors]
<div class="movie-directors">
    <h4>Режиссер</h4>
    <p>{directors_list}</p>
    <p>Главный режиссер: {main_director_name}</p>
</div>
[/directors]

<!-- Schema.org разметка (невидима для пользователей) -->
{movie_persons_schema}

8. Синхронизация (Обновление действующей базы)

В этом разделе вы можете интегрировать данный модуль с вашей действующей базой.
Необходимо перейти в раздел «Синхронизация», выбрать, какие из ваших полей будут обновляться, и запустить cron-ссылку.
Пример команды для crontab:

*/30 * * * * wget -q -O /dev/null "https://181.dlemod.ru/engine/ajax/controller.php?mod=movie_importer_sync&secret_key=94ad5ad51c7ca2a&action=sync_run&limit=5"

Очень важно перед запуском cron основного модуля синхронизировать всю вашу действующую базу — это позволит избежать дублирования.

Перед запуском синхронизации настоятельно рекомендуется:

  • Создать резервную копию базы данных
  • Убедиться в правильности настроек

Рекомендуется не обновлять те поля, которые являются статичными, например: название, изображение, дата производства и т.д.

Заключение и поддержка

Важные замечания

  1. Обязательно создайте резервную копию базы данных перед установкой
  2. Проверьте совместимость с вашей версией DLE (минимум 13.0)
  3. Настройте правильно часовой пояс в PHP и MySQL
  4. Оптимизируйте настройки под мощность вашего сервера
  5. Следите за лимитами API сервисов

Частые проблемы и решения

Проблема: CRON не работает Решение: Проверьте секретный ключ и права доступа к файлам

Проблема: Изображения не загружаются Решение: Проверьте права на папку /uploads/ (должно быть 755 или 777)

Проблема: Персоны не парсятся Решение: Проверьте API ключ Kinopoisk и оставшиеся лимиты

Проблема: AI не переписывает тексты Решение: Проверьте баланс и корректность API ключей AI сервисов

Контакты поддержки

Модуль находится в стадии активного развития. При обнаружении ошибок или вопросах обращайтесь:

Официальный сайт: https://dlemod.ru
Форма обратной связи: https://dlemod.ru/index.php?do=feedback
Telegram: @snh001
Email: info@dlemod.ru

Версия модуля: 1.0.6
Дата обновления: 14.10.2025
Автор: DLEMod Team