Чтобы Ваш киносайт был интересен пользователям, базу данных нужно держать всегда в актуальном состоянии. Чем больше Вы заполните ID с разных сервисов, тем более точная и полная будет информация о фильмах и сериалах.
Чаще всего у фильмов изменяется рейтинг. Очень дико видеть на популярных сайтах рейтинг IMDb или КиноПоиска годичной давности. Вы же можете обновлять его хоть раз в неделю, хоть раз в месяц и что самое важное, это обновление напрямую с КиноПоиска. Имея на киносайте ID КиноПоиска, Вы сможете обновить не только рейтинг одноименного сайта, но так же и рейтинг IMDb. КиноПоиск делает обход для получения новых данных с IMDb достаточно часто, поэтому расхождения в числе голосов минимальные. Однако, если на Вашем кино-сайте есть ID IMDb, Вы можете обновлять рейтинг уже напрямую с IMDb, они отдают ежедневный дамп со всеми оценками, который Вы с лёгкостью можете интегрировать в автозаполнение.
Помимо частого изменения рейтинга, в связи с ситуацией в мире, даты премьер стали переноситься довольно регулярно. Поэтому Вам стоит следить за этим пунктом и держать его у всех фильмов в актуальности. Дату премьеры Вы можете обновлять через автозаполнение с таких API, как TMDb, IMDb, TVmaze, Shikimori и многие другие, в зависимости от того, какие ID у Вас есть в информации фильма.
Актерский состав и режиссеры, назначаются на этапе съемочного процесса, и после релиза фильма, редко когда эта информация меняется.
В огромном числе фильмов по умолчанию после создания киносайта больше нет надобности, так как теперь во время создания кино-сайта, сразу запускается автоматическое получение фильмов и наполнение коллекций, чтобы все функции сайта заработали на полную. Такой принцип сейчас работает при создании английской и российской версии киносайта. Данные все прекрасно заполняются с API TheMovieDB + IMDb + TVmaze. К сожалению в русскоязычном интернете нет свободных и открытых API для получения информации о фильмах по ID КиноПоиска, а заполнение данных с пиратских API в системе по умолчанию никогда не было и не будет. Большие надежды подает ru.kinorium.com, поэтому держим кулаки за развитием сервиса, чтобы их API стало таким же быстрым и полным как TheMovieDB.
Все Ваши фильмы нужно отправить в realtime индекс (админ-панель) и дальше с лёгкостью поддерживать их актуальность, путём автоматического обновления. Все уникальные описания никуда не денутся, описания не затираются автоматическим обновлением. Если у фильма
unique: true
, названия фильма и описания остаются неизменными. Выполнять все работы лучше в ночное время, чтобы на сайте было людей по минимуму.Перед выполнением, загрузите новый установочный, сделайте бэкап и обновите систему:
cinemapress upd
cinemapress backup
cinemapress update
Вот к примеру, на сайте 43 685 фильмов из которых опубликованы 39 898 (фильмы с русским названием и описанием):
В админ-панели 1 уникальный фильм:
Основной ID - это ID КиноПоиска:
Если Вам не нужны фильмы в админ-панели, удалите их (они должны быть в бэкапе, так что всегда сможете восстановить):
После выполнения команды, в админ-панели станет 43 685 фильмов:
0 ~ xmlpipe2 ~ ~ ~ kp_id <> kp_id ~ title_ru <> title_ru ~ title_en <> title_en ~ description <> description ~ poster <> poster ~ "2022-06-29" <> custom.updated_at
Это перенесёт все фильмы, даже те, у которых нет русского названия или описания. Чем больше фильмов будет в Вашей оперативной памяти, тем больше её Вам потребуется на сервере, возможно придется докупать у хостинга дополнительные мощности.
Строка
"2022-06-29" <> custom.updated_at
в команде нужна для того, чтобы при переносе было хотя бы какое-то изменение, иначе система подумает что данные идентичные и не сохранит фильм. В данном случае Вы просто говорите, чтобы сегодняшняя дата была занесена в кастомное поле updated_at
.Для того, чтобы перенеслись только те фильмы, у которых есть русское название и описание (именно эти 39 898 фильмов доступны на сайте), сделайте так:
0 ~ xmlpipe2 ~ ~ ~ kp_id <> kp_id ~ title_ru <> title_ru! ~ title_en <> title_en ~ description <> description! ~ poster <> poster ~ "2022-06-29" <> custom.updated_at
Вот смотрите, на сайте было всего - 43 685 фильмов, а имеющие русское название и описание - 39 898, и вот именно эти фильмы после выполнения команды сейчас в админ-панели:
Команда может выполняться несколько часов, по окончании убедитесь, что уникальные описания не затёрлись и фильмы доступны на сайте.
Вы видите, что фильмы теперь дублируются, и создают ненужную избыточность, поэтому нужно деактивировать лишнее:
Команда которая удалит все дублирующие фильмы:
cinemapress zero
Не переживайте, нажав NOT при подтверждении команды, они все снова вернутся.
Это не едиственный сценарий, Вы можете не переносить в админ-панель все фильмы, а только те, например которые есть на каком-либо видео-хостинге (или на всех, выполняя команды одна за другой для каждого видео-хостинга). Сценарий выполнения происходит так, Вы достаёте все ID КиноПоиск фильмов, проверяете по API, есть ли он на видео-хостинге (проверяется наличие ID КиноПоиск
results.0.kinopoisk_id
и название results.0.title
) и если есть, то в таком случае происходит сохранение фильма в админ-панели. Так как происходит обращение к стороннему сервису, скорость наполнения зависит от этого API.- # Перенести только те фильмы, которые есть на Kodik:
0 ~ xmlpipe2 ~ kp_id ~ http://kodikapi.com/search?token=b7cc4293ed475c4ad1fd599d114f4435&kinopoisk_id=[id] ~ results.0.kinopoisk_id <> kp_id <> 1 ~ results.0.title <> title_ru! <> 1 ~ "2022-06-29" <> custom.updated_at
Как Вы видите, один API может иметь лишь небольшую часть фильмов, однако выполнив последовательно для нескольких API, их станет заметно больше.
- # Перенести только те фильмы, у которых изменился рейтинг КиноПоиск или IMDb (+ сразу обновить его на акутальный):
0 ~ xmlpipe2 ~ kp_id ~ https://rating.kinopoisk.ru/[id].xml ~ rating.kp_rating._attributes.num_vote <> kp_vote ~ rating.kp_rating._text <> kp_rating ~ rating.imdb_rating._attributes.num_vote <> imdb_vote ~ rating.imdb_rating._text <> imdb_rating
Было добавлено 27 582 фильма, но это не все фильмы, так как сервер убил процесс из-за того, что он долго выполнялся. Решение для больших команд - это разделить её на несколько в процентном соотншении, т.е. в данном случае из 40к фильмов было обработано больше половины, поэтому можно разделить на около 50%. Если У Вас больше фильмов, или API очень плохое и отдает данные долго, то разделите команду на еще больше частей.
- # Взять только первые 55% (
0-55
) фильмов: 0 ~ xmlpipe2 <> 0-55 ~ kp_id ~ https://rating.kinopoisk.ru/[id].xml ~ rating.kp_rating._attributes.num_vote <> kp_vote ~ rating.kp_rating._text <> kp_rating ~ rating.imdb_rating._attributes.num_vote <> imdb_vote ~ rating.imdb_rating._text <> imdb_rating
- # Взять оставшиеся 45% (
55-100
) фильмов: 0 ~ xmlpipe2 <> 55-100 ~ kp_id ~ https://rating.kinopoisk.ru/[id].xml ~ rating.kp_rating._attributes.num_vote <> kp_vote ~ rating.kp_rating._text <> kp_rating ~ rating.imdb_rating._attributes.num_vote <> imdb_vote ~ rating.imdb_rating._text <> imdb_rating
У realtime index есть не только плюсы в виде скорости работы, но и минусы (решение будет), в том, что Ваш сервер не всегда может оперативно их отправлять в оперативную память. И если ID фильма нет в ОЗУ, значит его может не быть в некоторых категориях.
Команда, которая проверяет фильмы, в индексе (вместо
example.com
домен Вашего сайта):cinemapress reindex example.com
Исправить это так же легко, выполняете:
cinemapress reindex example.com save