Как поддерживать информацию о фильмах всегда в актуальном состоянии?

Регистрация
15 Дек 2017
Сообщения
5,068
#1
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

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

1619704744665.png

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

1619705129832.png

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

1619705645022.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

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

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

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

1619704930170.png

Команда которая удалит все дублирующие фильмы:
  • cinemapress zero
1619706560043.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

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

Было добавлено 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
Фильмы пересохранятся и будут абсолютно все в оперативной памяти, а значит и на сайте.
 
Регистрация
15 Дек 2017
Сообщения
5,068
#2
Как работать со строками автозаполнения по одному?
  • Оставляете в автозаполнении только одну строку;
  • Сохраняете настройки;
  • Запускаете автозаполнение.
Как понять, что команда закончила выполнение?
  • Обновляете список фильмов кнопкой слева над ним, если написано что обновление было несколько минут/часов назад, значит команда уже отработала.
Что-то пошло не так, как всё вернуть?
  • Удаляете все строки автозаполнения;
  • Нажимаете Остановить получение информации;
  • Возвращаете фильмы: cinemapress zero example.com NOT
  • Восстанавливаете бэкап: cinemapress backup example.com restore
Как поддерживать актуальность информации о фильмах в realtime?
  • Составляете строку автозаполнения с API;
  • Указываете первым параметром время, в которое эта строка будет выполняться;
  • Если данные в API изменились - система их обновит, если нет - проигнорирует.
  • Больше информации: https://enota.club/threads/sozdanie...nime-avtodobavlenie-novyx-20-000-filmov.2999/
Все фильмы теперь в админ-панели, а значит они будут в бэкапе и занимать немало гигабайт.
Следите за тем, чтобы место для бэкапа всегда было, а лучше всего настройте FTP от хостинга.
 
Енот
Новичо́к, через «о́»
Регистрация
13 Янв 2018
Сообщения
472
#3
Как работать со строками автозаполнения по одному?
  • Оставляете в автозаполнении только одну строку;
  • Сохраняете настройки;
  • Запускаете автозаполнение.
Как понять, что команда закончила выполнение?
  • Обновляете список фильмов кнопкой слева над ним, если написано что обновление было несколько минут/часов назад, значит команда уже отработала.
Что-то пошло не так, как всё вернуть?
  • Удаляете все строки автозаполнения;
  • Нажимаете Остановить получение информации;
  • Возвращаете фильмы: cinemapress zero example.com NOT
  • Восстанавливаете бэкап: cinemapress backup example.com restore
Как поддерживать актуальность информации о фильмах в realtime?
  • Составляете строку автозаполнения с API;
  • Указываете первым параметром время, в которое эта строка будет выполняться;
  • Если данные в API изменились - система их обновит, если нет - проигнорирует.
  • Больше информации: https://enota.club/threads/sozdanie...nime-avtodobavlenie-novyx-20-000-filmov.2999/
Все фильмы теперь в админ-панели, а значит они будут в бэкапе и занимать немало гигабайт.
Следите за тем, чтобы место для бэкапа всегда было, а лучше всего настройте FTP от хостинга.
Допустим у меня на сайте одни сериалы, в разделе публикации у меня примерно так: 14000/61000 как мне эти 14к перенести в реалтайм именно сериалы
 
Енот
Новичо́к, через «о́»
Регистрация
3 Апр 2020
Сообщения
346
#4
Я что-то вообще не понял что из себя представляет realtime, и зачем туда переносить фильмы.
Вот у меня 43333 опубликовано / 43333 отфильтровано / 45272 всего всех фильмов на сайте.
1619790172013.png
А что означают эти цифры?
1619790183512.png
 
Енот
Новичо́к, через «о́»
Регистрация
3 Апр 2020
Сообщения
346
#5
123 это видимо фильмы с уникальным описанием, верно?
а 1592 ?
 
Енот
Новичо́к, через «о́»
Регистрация
16 Мар 2018
Сообщения
162
#7
ниче не понял, какой-то гемор. Еще и серв мощнее будет нужен если все в оперативке будет.
 
Енот
Новичо́к, через «о́»
Регистрация
3 Апр 2020
Сообщения
346
#8
Наверное добавленные через автозаполнение без уникального описания
Попробовал добавить фильм которого ещё не было, действительно стало 1593.
Судя по всему это и есть число realtime фильмов.
Но я так и не понял для чего все фильмы переводить в realtime.
 
Регистрация
15 Дек 2017
Сообщения
5,068
#9
Но я так и не понял для чего все фильмы переводить в realtime.
Потому что у 45 272 фильмов меняется рейтинг и другая информация, а Вы меняете её только для 1 593 фильмам.
Допустим у меня на сайте одни сериалы, в разделе публикации у меня примерно так: 14000/61000 как мне эти 14к перенести в реалтайм именно сериалы
Делаете такую строку:
0 ~ xmlpipe2 ~ ~ ~ kp_id <> kp_id ~ type <> custom.type! <> <> <> if ("_VALUE_" === "1") {"1"} else {""}

Строка type <> custom.type! <> <> <> if ("_VALUE_" === "1") {"1"} else {""} делает следующее:
  • Взять type
  • Занести его в кастомное поле custom.type и чтобы оно было обязательное custom.type!
  • Если type будет равно 1 (сериалы) то оставить 1, в противном случае, сделать пустоту if ("_VALUE_" === "1") {"1"} else {""}
Таким образом будут сохранены только сериалы, а если пустота в обязательном поле, то сохранения не будет.
 
Новичо́к, через «о́»
Регистрация
11 Мар 2021
Сообщения
140
#10
@Alisa,
когда будет топик
сделать в сериалах надпись сезон и серия
без серии сериалов блока
что блок серии был отключен а на сериалах писалось сезон и серия
 
Енот
Новичо́к, через «о́»
Регистрация
3 Апр 2020
Сообщения
346
#11
Если на сервере 2 сайта cinemapress, у которых примерно одинаковые фильмы, и все они в realtime, значит ли это что оперативки понадобиться в 2 раза больше нежели для одного сайта?
Или фильмы занимают как бы одно пространство для обоих сайтов?

А то буквально вчера у меня было занято 6гб оперативки, а сегодня 3гб освободилось. Но фильмы все ещё в realtime. Боюсь что что-то пошло не так...
 
Регистрация
15 Дек 2017
Сообщения
5,068
#12
Если на сервере 2 сайта cinemapress, у которых примерно одинаковые фильмы, и все они в realtime, значит ли это что оперативки понадобиться в 2 раза больше нежели для одного сайта?
Да, в 2 раза больше, это будет два контейнера у каждого своя память.
Или фильмы занимают как бы одно пространство для обоих сайтов?
Все контейнеры находятся на сервере в одной сети, поэтому можно получать фильмы из одного в другом.
Нужно настраивать.
А то буквально вчера у меня было занято 6гб оперативки, а сегодня 3гб освободилось. Но фильмы все ещё в realtime. Боюсь что что-то пошло не так...
Их все можно выгрузить на диск, собственно так и делается перед бэкапом. Затем по мере получения запросов, ОЗУ наполняется.
 
Енот
Новичо́к, через «о́»
Регистрация
3 Мар 2018
Сообщения
344
#13

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

Посмотреть вложение 6055

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

Посмотреть вложение 6056

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

Посмотреть вложение 6060

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

Посмотреть вложение 6061

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

Посмотреть вложение 6066

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

Посмотреть вложение 6057

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

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

Посмотреть вложение 6058

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

Не переживайте, нажав 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
Посмотреть вложение 6059

Как Вы видите, один 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
Посмотреть вложение 6067

Было добавлено 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
Фильмы пересохранятся и будут абсолютно все в оперативной памяти, а значит и на сайте.
видео будет??
 
Енот
Новичо́к, через «о́»
Регистрация
9 Май 2020
Сообщения
672
#15

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

Посмотреть вложение 6055

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

Посмотреть вложение 6056

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

Посмотреть вложение 6060

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

Посмотреть вложение 6061

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

Посмотреть вложение 6066

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

Посмотреть вложение 6057

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

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

Посмотреть вложение 6058

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

Не переживайте, нажав 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
Посмотреть вложение 6059

Как Вы видите, один 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
Посмотреть вложение 6067

Было добавлено 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
Фильмы пересохранятся и будут абсолютно все в оперативной памяти, а значит и на сайте.
Ох разобрался наконец то благодарю Алиса за подробное изложение 🔥🔥🔥
 
Енот
Новичо́к, через «о́»
Регистрация
26 Авг 2018
Сообщения
395
#17
Приветствую всех, наконец то решил запустить и у себя на сайтах автодобавление кинопроизведений.
Решил получить все произведения с Коллапса и обновлять рейтинг по kp_id с КиноПоиск
Подскажите, правильно ли я все заполнил:

Код:
23 ~ https://apicollaps.cc/list?token=eedefb541aeba871dcfc756e6b31c02e&limit=99&page=[page] ~ results.0.id ~ https://apicollaps.cc/franchise/details?token=eedefb541aeba871dcfc756e6b31c02e&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 <> 1custom.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

23 ~ xmlpipe2 ~ ~ ~ kp_id <> kp_id ~ title_ru <> title_ru! ~ title_en <> title_en ~ description <> description! ~ poster <> poster ~ "2022-06-29" <> custom.updated_at

23 ~ xmlpipe2 <> 0-10 ~ 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

23 ~ xmlpipe2 <> 10-20 ~ 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

23 ~ xmlpipe2 <> 20-30 ~ 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

23 ~ xmlpipe2 <> 30-40 ~ 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

23 ~ xmlpipe2 <> 40-50 ~ 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

23 ~ xmlpipe2 <> 50-60 ~ 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

23 ~ xmlpipe2 <> 60-70 ~ 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

23 ~ xmlpipe2 <> 70-80 ~ 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

23 ~ xmlpipe2 <> 80-90 ~ 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

23 ~ xmlpipe2 <> 90-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

# Заполнение рейтинга КиноПоиск и IMDb, напрямую с КиноПоиска.

1 ~ 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
 
Енот
Новичо́к, через «о́»
Регистрация
13 Июн 2020
Сообщения
131
#18
Приветствую всех, наконец то решил запустить и у себя на сайтах автодобавление кинопроизведений.
Решил получить все произведения с Коллапса и обновлять рейтинг по kp_id с КиноПоиск
Подскажите, правильно ли я все заполнил:

Код:
23 ~ https://apicollaps.cc/list?token=eedefb541aeba871dcfc756e6b31c02e&limit=99&page=[page] ~ results.0.id ~ https://apicollaps.cc/franchise/details?token=eedefb541aeba871dcfc756e6b31c02e&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 <> 1custom.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

23 ~ xmlpipe2 ~ ~ ~ kp_id <> kp_id ~ title_ru <> title_ru! ~ title_en <> title_en ~ description <> description! ~ poster <> poster ~ "2022-06-29" <> custom.updated_at

23 ~ xmlpipe2 <> 0-10 ~ 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

23 ~ xmlpipe2 <> 10-20 ~ 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

23 ~ xmlpipe2 <> 20-30 ~ 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

23 ~ xmlpipe2 <> 30-40 ~ 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

23 ~ xmlpipe2 <> 40-50 ~ 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

23 ~ xmlpipe2 <> 50-60 ~ 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

23 ~ xmlpipe2 <> 60-70 ~ 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

23 ~ xmlpipe2 <> 70-80 ~ 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

23 ~ xmlpipe2 <> 80-90 ~ 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

23 ~ xmlpipe2 <> 90-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

# Заполнение рейтинга КиноПоиск и IMDb, напрямую с КиноПоиска.

1 ~ 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
Я бы только время поменял