Вчера, пока разбирался с АПИ для отдельного приложения столкнулся с похожей проблемой. Например если тянуть фильмы с collaps для заполнения, то их постеры недоступны с их домена картинок. Поэтому вообще убрал из скрипта заполнение постеров с collaps, а потом, после заполнения остальной инфы и остановки получения, просто запустил скрипт обновления постеров и картинок кадров с tmdb для фильмов у которых есть imdb ID. Т.к. imdb есть у 90% фильмов с коллапса, то все картинки и постеры вставились в пустые поля в существующих фильмах, но уже с tmdb источника в хорошем качестве.
Вот оно
решение ⬆ нашей проблемы.
Если ваша целевая аудитория из РФ то ниже приведен пример
Наглядный пример:
Для получения постеров задействован custom.imdb_id (для Alloha - id_kp)
За основу выбран id_kp
Включаем публикацию франшиз только с постерами
Получаем всю инфу о франшизе включая
ID IMDb (в примере использованы Collaps, Alloha и Bazon, как говорил ранее домен с постерами
Collaps не стабилен, домен
Bazon в блоке РКН
их постеры не трогаем.
Не забываем сменить токены!
# Заполнение с API Collaps
0 ~ https://api.bhcesh.me/list?token=eedefb541aeba871dcfc756e6b31c02e&limit=99&page=[page] ~ results.0.kinopoisk_id ~ https://api.bhcesh.me/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 <> 1 ~ id <> custom.movie_id ~ world_art_id <> custom.wa_id
# Заполнение с API Alloha фильмы
0 ~ https://api.alloha.tv/?token=04941a9a3ca3ac16e2b4327347bbc1&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(",") ~ data.poster <> poster <> 1
# Заполнение с API Alloha сериалы
0 ~ https://api.alloha.tv/?token=04941a9a3ca3ac16e2b4327347bbc1&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(",") ~ data.poster <> poster <> 1
# Заполнение с API Bazon
0 ~ https://bazon.cc/api/json/?token=2848f79ca09d4bbbf419bcdb464b4d11&type=all&limit=50&page=[page] ~ results.0.kinopoisk_id ~ https://bazon.cc/api/search?token=2848f79ca09d4bbbf419bcdb464b4d11&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.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
Получаем постеры и кадры по ID IMDb из themoviedb.org
# Заполнение ID TMDb + постер + красивое фото для фильмов, у которых уже есть ID IMDb
0 ~ db ~ custom.imdb_id ~ https://api.themoviedb.org/3/find/tt[imdb_id]?api_key=269890f657dddf4635473cf4cf456576&external_source=imdb_id ~ movie_results.0.id <> custom.tmdb_id <> 1 ~ movie_results.0.poster_path <> poster <> 1 ~ movie_results.0.backdrop_path <> pictures <> 1
# Заполнение ID TMDb + постер + красивое фото для сериалов, у которых уже есть ID IMDb
0 ~ db ~ custom.imdb_id ~ https://api.themoviedb.org/3/find/tt[imdb_id]?api_key=269890f657dddf4635473cf4cf456576&external_source=imdb_id ~ tv_results.0.id <> custom.tmdb_id <> 1 ~ tv_results.0.poster_path <> poster <> 1 ~ tv_results.0.backdrop_path <> pictures <> 1
# Заполнение кадров в pleer.video
0 ~ db ~ kp_id ~ https://pleer.video/[id].json ~ pictures <> pictures
Запускаем парсинг JSON
После получения всех франшиз, делаем обход только первой страницы (удаляете
&page=[page][next_page]
) и прописываем время обновления.
Первый параметр, это кратность часов, с которой система будет выполнять команду:
- 0 - команду можно запустить только по кнопке
- 4 - каждые 4 часа
- 23 - раз в день в 23 часа
Как итог если и появляются проблемные постеры то она автоматом заменяются на Изображение по умолчанию.
Ну и тут то мы уже ставим кастомную (брендированную) заглушку.
PS: Данный пост и эта тема является ответвлением темы
"Создание онлайн кинотеатра с дорамами/аниме + автодобавление новых (20 000+ фильмов)".