admin

Администратор
Команда форума
Регистрация
30.09.2022
Сообщения
462
Реакции
84
1619706832942.png

Чтобы Ваш киносайт был интересен пользователям, базу данных нужно держать всегда в актуальном состоянии. Чем больше Вы заполните 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
Не имеет значения, сколько у Вас фильмов на сайте 100 штук, 40 тысяч или 1 миллион, выполнив автозаполнение, все фильмы дополнят те, которые уже есть в админ-панели. Если фильмов очень много или стороннее API работает медленно, разделяйте команду на несколько, как это сделать будет написано дальше.

Вот к примеру, на сайте 43 685 фильмов из которых опубликованы 39 898 (фильмы с русским названием и описанием):

1619704187947-png-6055.png


В админ-панели 1 уникальный фильм:

1619704744665-png-6056.png


Основной ID - это ID КиноПоиска:

1619705129832-png-6060.png


Если Вам не нужны фильмы в админ-панели, удалите их (они должны быть в бэкапе, так что всегда сможете восстановить):

1619705645022-png-6061.png


После выполнения команды, в админ-панели станет 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.

1619707117381-png-6066.png


Для того, чтобы перенеслись только те фильмы, у которых есть русское название и описание (именно эти 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, и вот именно эти фильмы после выполнения команды сейчас в админ-панели:

1619704876788-png-6057.png


Команда может выполняться несколько часов, по окончании убедитесь, что уникальные описания не затёрлись и фильмы доступны на сайте.

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

1619704930170-png-6058.png


Команда которая удалит все дублирующие фильмы:
  • cinemapress zero
1619706560043-png-6063.png


Не переживайте, нажав 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
1619704986406-png-6059.png


Как Вы видите, один 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
1619708695891-png-6067.png


Было добавлено 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 индексах (число фильмов в публикации равняется числу фильмов в разделе с фильмами), а значит быстрее, гибче и Вы можете настроить автоматическое поддержание базы сайта всегда в актуальном состоянии.

У realtime index есть не только плюсы в виде скорости работы, но и минусы (решение будет), в том, что Ваш сервер не всегда может оперативно их отправлять в оперативную память. И если ID фильма нет в ОЗУ, значит его может не быть в некоторых категориях.

Команда, которая проверяет фильмы, в индексе (вместо example.com домен Вашего сайта):
  • cinemapress reindex example.com
Вы увидите ID фильмов, которых еще нет в оперативной памяти Вашего сервера.

Исправить это так же легко, выполняете:
  • cinemapress reindex example.com save
Фильмы пересохранятся и будут абсолютно все в оперативной памяти, а значит и на сайте.


Как работать со строками автозаполнения по одному?
  • Оставляете в автозаполнении только одну строку;
  • Сохраняете настройки;
  • Запускаете автозаполнение.
Как понять, что команда закончила выполнение?
  • Обновляете список фильмов кнопкой слева над ним, если написано что обновление было несколько минут/часов назад, значит команда уже отработала.
Что-то пошло не так, как всё вернуть?
  • Удаляете все строки автозаполнения;
  • Нажимаете Остановить получение информации;
  • Возвращаете фильмы: cinemapress zero example.com NOT
  • Восстанавливаете бэкап: cinemapress backup example.com restore
Как поддерживать актуальность информации о фильмах в realtime?
  • Составляете строку автозаполнения с API;
  • Указываете первым параметром время, в которое эта строка будет выполняться;
  • Если данные в API изменились - система их обновит, если нет - проигнорирует.
  • Больше информации: ТУТ
Все фильмы теперь в админ-панели, а значит они будут в бэкапе и занимать немало гигабайт.
Следите за тем, чтобы место для бэкапа всегда было, а лучше всего настройте FTP от хостинга.
 

Vladislav

Активный пользователь
Регистрация
05.11.2022
Сообщения
25
Реакции
0
Здравствуйте, подскажите пожалуйста как изменить максимальное количество фильмов? пишет тысяча с чем то, из-за этого команды API не работают загрузилось полностью, дальше ничего не происходит
 

admin

Администратор
Команда форума
Регистрация
30.09.2022
Сообщения
462
Реакции
84
Это вставить в
1667844483416.png
Код:
# Заполнение рейтинга КиноПоиск и IMDb, напрямую с КиноПоиска.

24 ~ db ~ 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

# Заполнение с API Collaps

24 ~ https://api1653399847.bhcesh.me/list?token=4c250f7ac0a8c8a658c789186b9a58a5&limit=99&page=[page] ~ results.0.kinopoisk_id ~ https://apicollaps.cc/franchise/details?token=4c250f7ac0a8c8a658c789186b9a58a5&id=[id] ~ kinopoisk_id <> kp_id ~ imdb_id <> custom.imdb_id ~ name <> title_ru ~ name_eng <> title_en ~ year <> year ~ type <> type ~ quality <> quality ~ premier <> premiere ~ description <> description ~ country <> country <> <> <> Object.values(_OBJECT_) ~ genre <> genre <> <> <> Object.values(_OBJECT_) ~ director.0 <> director ~ actors.0 <> actor <> 5 ~ voiceActing <> translate <> 1 ~ poster <> poster

# Заполнение с API Kodik

24 ~ http://kodikapi.com/list?limit=100&with_material_data=true&token=41dd95f84c21719b09d6c71182237a25&page=[page] ~ results ~ ~ kinopoisk_id <> kp_id ~ material_data.title <> title_ru ~ material_data.title_en <> title_en ~ material_data.year <> year ~ material_data.description <> description ~ material_data.poster_url <> poster ~ material_data.screenshots <> pictures ~ material_data.countries <> country ~ material_data.genres <> genre ~ material_data.premiere_world <> premiere ~ material_data.actors <> actor ~ material_data.directors <> director ~ type <> type

# Заполнение с API Alloha фильмы

24 ~ https://api.alloha.tv/?token=de19b0b4e75ce15a9be8e63c0f5858&order=date&list=movie&page=[page] ~ data.0.id_kp ~ https://api.alloha.tv/?token=04941a9a3ca3ac16e2b4327347bbc1&kp=[id] ~ data.id_kp <> kp_id ~ data.id_imdb <> custom.imdb_id ~ data.id_tmdb <> custom.tmdb_id ~ data.id_world_art <> custom.wa_id ~ data.name <> title_ru ~ data.original_name <> title_en ~ data.year <> year ~ "movie" <> type ~ data.quality <> quality <> 1 <> <> "_VALUE_".split(",") ~ data.translation <> translate <> 1 <> <> "_VALUE_".split(",") ~ data.premiere <> premiere ~ data.description <> description ~ data.country <> country ~ data.genre <> genre <> <> <> "_VALUE_".split(",") ~ data.directors <> director <> <> <> "_VALUE_".split(",") ~ data.actors <> actor <> 5 <> <> "_VALUE_".split(",") ~ "1" <> poster

# Заполнение с API Alloha сериалы

24 ~ https://api.alloha.tv/?token=de19b0b4e75ce15a9be8e63c0f5858&order=date&list=serial&page=[page] ~ data.0.id_kp ~ https://api.alloha.tv/?token=04941a9a3ca3ac16e2b4327347bbc1&kp=[id] ~ data.id_kp <> kp_id ~ data.id_imdb <> custom.imdb_id ~ data.id_tmdb <> custom.tmdb_id ~ data.id_world_art <> custom.wa_id ~ data.name <> title_ru ~ data.original_name <> title_en ~ data.year <> year ~ "serial" <> type ~ data.quality <> quality <> 1 <> <> "_VALUE_".split(",") ~ data.translation <> translate <> 1 <> <> "_VALUE_".split(",") ~ data.premiere <> premiere ~ data.description <> description ~ data.country <> country ~ data.genre <> genre <> <> <> "_VALUE_".split(",") ~ data.directors <> director <> <> <> "_VALUE_".split(",") ~ data.actors <> actor <> 5 <> <> "_VALUE_".split(",") ~ "1" <> poster

# Заполнение с API Bazon

24 ~ https://bazon.cc/api/json/?token=d0623f3ffd0d8c3d6352bbf2695c61de&type=all&page=[page] ~ results.0.kinopoisk_id ~ https://bazon.cc/api/search?token=d0623f3ffd0d8c3d6352bbf2695c61de&kp=[id] ~ results.0.kinopoisk_id <> kp_id <> 1 ~ results.0.info.rus <> title_ru <> 1 ~ results.0.info.orig <> title_en <> 1 ~ results.0.info.year <> year <> 1 ~ results.0.serial <> type <> 1 ~ results.0.quality <> quality <> 1 ~ results.0.translation <> translate <> 1 ~ results.0.info.premiere <> premiere <> 1 ~ results.0.last_season <> custom.last_season <> 1 ~ results.0.last_episode <> custom.last_episode <> 1 ~ results.0.end <> custom.end <> 1 ~ results.0.info.description <> description <> 1 ~ results.0.info.country <> country <> 1 ~ results.0.info.genre <> genre <> 1 ~ results.0.info.director <> director <> 1 ~ results.0.info.actors <> actor <> 1 ~ results.0.info.poster <> poster <> 1
 
Верх