Настройка модуля Серий сериала из любого API (у каждой серии своя страница)

Думает, что помогает
Регистрация
15 Дек 2017
Сообщения
5,068
#1
bestapi.png

Больше нет необходимости ждать от API, чтобы они привели его к «best practices» виду. Теперь Вы можете исправить любое API и использовать его для модуля Серии.

API (Application programming interface) - программный интерфейс приложения, именно через него работают и взаимодействуют между собой программы. Создавая API, многие не до конца понимают, что с API будут работать программы, а не люди. Поэтому не всегда придерживаются каких-либо стандартов или правил, иногда из-за незнания, а иногда из-за того, что API создаются для собственных проектов и программ, поэтому делают его «абы как».

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

На иллюстрации к посту Вы видите как выглядит удачное API, когда к любому значению программа с лёгкостью попадает, и ей не нужно знать заранее о неизвестных ключах.
Неудачное API выглядит так, когда только зная заранее о том, что ключ называется 2 и затем ключ называется 10, только в таком случае можно пробраться к названию.
  • Обновите Ваш установочный файл: cinemapress upd
  • Обновите Вашу систему: cinemapress update
В этом обновлении, Вы сможете получать серии сериалов из абсолютно любого API, у которого эта информация есть. Теперь даже самые неудачные API, Вы сможете преобразовать в массив и с лёгкостью получать данные о сезоне и серии.

На примере случайного API, давайте сделаем его пригодным для программного использования.

К примеру по адресу: https://example.com/api?imdb_id=[imdb_id]

Открывается JSON:

JSON:
{
    "data": {
        "seasons": {
            "1": {
                "season": 1,
                "episodes": {
                    "1": {
                        "episode": 1,
                        "translation": {
                            "87": {
                                "translation": "Профессиональный многоголосый"
                            }
                        }
                    }
                }
            }
        }
    }
}

В нём никуда невозможно зайти data.seasons.1.episodes.1.translation.87.translation, так как Вы не знаете ключа сезона, эпизода, и перевода.

Поэтому запрос делаете так: https://example.com/api?imdb_id=[imdb_id] <> data.seasons

И теперь JSON преобразовывается и выглядит так:

JSON:
{
    "data": {
        "seasons": [
            {
                "key": "1",
                "value": {
                    "season": 1,
                    "episodes": {
                        "1": {
                            "episode": 1,
                            "translation": {
                                "87": {
                                    "translation": "Профессиональный многоголосый"
                                }
                            }
                        }
                    }
                }
            }
        ]
    }
}

Вы seasons сделали массовом, в key попадает ключ который был раньше у объекта, а в value - весь прежний объект.

Теперь Вы уже имеете возможность пройти дальше data.seasons.0.value.episodes.1.translation.87.translation, но Вы всё еще не знаете ключ эпизода и перевода.

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

https://example.com/api?imdb_id=[imdb_id] <> data.seasons, data.seasons.0.value.episodes, data.seasons.0.value.episodes.0.value.translation

И преобразованный API выглядит так:

JSON:
{
    "data": {
        "seasons": [
            {
                "key": "1",
                "value": {
                    "season": 1,
                    "episodes": [
                        {
                            "key": "1",
                            "value": {
                                "episode": 1,
                                "translation": [
                                    {
                                        "key": "87",
                                        "value": {
                                            "translation": "Профессиональный многоголосый"
                                        }
                                    }
                                ]
                            }
                        }
                    ]
                }
            }
        ]
    }
}

Для программы открыты все пути, например чтобы получить перевод: data.seasons.0.value.episodes.0.value.translation.0.value.translation

Возможно это довольно трудно для понимания, поэтому вот готовые строки с преобразованием для существующих API.

Получение серий сериала на странице сериала по API

1616336743744.png

Результат на сайте:

firefox_XNXIQyDhbZ.png

firefox_tYx5ecuzbu.png

  • API Alloha: https://api.alloha.tv/?token=04941a9a3ca3ac16e2b4327347bbc1&kp=[kp_id] <> data.seasons, data.seasons.0.value.episodes, data.seasons.0.value.episodes.0.value.translation ~ data.seasons.0.key ~ data.seasons.0.value.episodes.0.key ~ data.seasons.0.value.episodes.0.value.translation.0.value.translation

  • API Collaps: https://api.bhcesh.me/franchise/details?token=eedefb541aeba871dcfc756e6b31c02e&kinopoisk_id=[kp_id] ~ seasons.0.season ~ seasons.0.episodes.0.episode ~ seasons.0.episodes.0.voiceActing

  • API Bazon: https://bazon.cc/api/search?token=2848f79ca09d4bbbf419bcdb464b4d11&kp=[kp_id] <> results.0.episodes, results.0.episodes.0.value ~ results.0.episodes.0.key ~ results.0.episodes.0.value.0.key ~ results.0.translation

  • API HDVB: https://apivb.info/api/videos.json?token=5e2fe4c70bafd9a7414c4f170ee1b192&id_kp=[kp_id] ~ 0.serial_episodes.0.season_number ~ 0.serial_episodes.0.episodes.0 ~ 0.translator

  • API Kodik: https://kodikapi.com/search?token=b7cc4293ed475c4ad1fd599d114f4435&with_episodes=true&kinopoisk_id=[kp_id] <> results.0.seasons, results.0.seasons.0.value.episodes ~ results.0.seasons.0.key ~ results.0.seasons.0.value.episodes.0.key ~ results.0.translation.title

Получение последних серий сериала на главной по API

1616337955324.png

Результат на сайте (обновляется раз в час):

firefox_RvsHmACAn2.png

  • API Alloha: https://api.alloha.tv/?token=04941a9a3ca3ac16e2b4327347bbc1&order=date&list=serial <> data.0.seasons, data.0.seasons.0.value.episodes, data.0.seasons.0.value.episodes.0.value.translation ~ data.0.id_kp ~ data.0.seasons.0.key ~ data.0.seasons.0.value.episodes.0.key ~ data.0.seasons.0.value.episodes.0.value.translation.0.value.translation

  • API Collaps: https://api.bhcesh.me/list?token=eedefb541aeba871dcfc756e6b31c02e&type=serials&limit=100 ~ results.0.kinopoisk_id ~ results.0.seasons.0.season ~ results.0.seasons.0.episodes.0.episode

  • API Bazon: https://bazon.cc/api/json/?token=2848f79ca09d4bbbf419bcdb464b4d11&type=serial <> results.0.episodes, results.0.episodes.0.value ~ results.0.kinopoisk_id ~ results.0.episodes.0.key ~ results.0.episodes.0.value.0.key ~ results.0.translation

  • API HDVB: https://apivb.info/api/serials_updates.json?token=5e2fe4c70bafd9a7414c4f170ee1b192 ~ items.0.kinopoisk_id ~ items.0.serial_episodes.0.season_number ~ items.0.serial_episodes.0.episodes.0 ~ items.0.translator

  • API Kodik: https://kodikapi.com/list?token=b7cc4293ed475c4ad1fd599d114f4435&limit=100&with_episodes=true <> results.0.seasons, results.0.seasons.0.value.episodes ~ results.0.kinopoisk_id ~ results.0.seasons.0.key ~ results.0.seasons.0.value.episodes.0.key ~ results.0.translation.title

  • API Videocdn: https://videocdn.tv/api/tv-series?api_token=EnbO9h8pv1VyjbCJhg0WM9nG259n7mtz&ordering=id&direction=desc&limit=100 ~ data.0.kinopoisk_id ~ data.0.episodes.0.season_num ~ data.0.episodes.0.num ~ data.0.episodes.0.media.0.translation.short_title
 
Енот
Новичо́к, через «о́»
Регистрация
13 Янв 2018
Сообщения
452
#2
@Alisa публикуются серии для сериалов которых нет на сайте при переходе по ним 404 ошибка, ну может в админке они и есть, но в разделе публикации у меня выставлены определенные настройки, как сделать так, чтобы инфа подгружаласьб именно для тех типов фильмов, сериалов или аниме для которых я выставил настройки
 
Енот
Новичо́к, через «о́»
Регистрация
3 Апр 2020
Сообщения
343
#3
@Alisa публикуются серии для сериалов которых нет на сайте при переходе по ним 404 ошибка, ну может в админке они и есть, но в разделе публикации у меня выставлены определенные настройки, как сделать так, чтобы инфа подгружаласьб именно для тех типов фильмов, сериалов или аниме для которых я выставил настройки
@Alisa, тоже самое для модуля случайный фильм. Берёт фильмы которых нет на сайте.
 
Думает, что помогает
Регистрация
15 Дек 2017
Сообщения
5,068
#4
@Alisa публикуются серии для сериалов которых нет на сайте при переходе по ним 404 ошибка, ну может в админке они и есть, но в разделе публикации у меня выставлены определенные настройки, как сделать так, чтобы инфа подгружаласьб именно для тех типов фильмов, сериалов или аниме для которых я выставил настройки
Список серий обновляется раз в час.
В списке все фильмы придерживаются правил настройки Публикации.
@Alisa, тоже самое для модуля случайный фильм. Берёт фильмы которых нет на сайте.
В коллекции с коротой берутся фильмы для случайного фильма, должны быть только те фильмы, которые доступны на сайте.
Если коллекция автоматическая, в нее попадают только доступные на сайте фильмы.
 
Енот
Новичо́к, через «о́»
Регистрация
3 Апр 2020
Сообщения
343
#6
Список серий обновляется раз в час.
В списке все фильмы придерживаются правил настройки Публикации.

В коллекции с коротой берутся фильмы для случайного фильма, должны быть только те фильмы, которые доступны на сайте.
Если коллекция автоматическая, в нее попадают только доступные на сайте фильмы.
а как насчёт главной страницы?
 
Думает, что помогает
Регистрация
15 Дек 2017
Сообщения
5,068
#9
Сейчас на главной нет этого сериала.
Он отфильтровался.
Серии обновляются раз в час.

При редактировании этого сериала, по какому именно фильтру он попадает, год, страна, постер?
 
Енот
Новичо́к, через «о́»
Регистрация
13 Янв 2018
Сообщения
452
#10
Сейчас на главной нет этого сериала.
Он отфильтровался.
Серии обновляются раз в час.

При редактировании этого сериала, по какому именно фильтру он попадает, год, страна, постер?
Это турецкий сериал, 2019 года,

"Китай" | "Япония" | " Тайвань" | "Южная Корея" | "Таиланд" | "Индонезия" | "Филиппины" | "Вьетнам" | "Малайзия" | "Сингапур" | "Гонконг" | "Корея" вот список стран, которые я указал в настройках автопубликации
 
Енот
Новичо́к, через «о́»
Регистрация
13 Янв 2018
Сообщения
452
#11
Но все равно эти фильтры не срабатывают, серии появляются как я понял для всех сериалов которые спарсились
 
Думает, что помогает
Регистрация
15 Дек 2017
Сообщения
5,068
#12
Вы хотите, чтобы из Kodik брались только аниме? Без турецких сериалов и фильмов?
 
Енот
Новичо́к, через «о́»
Регистрация
13 Янв 2018
Сообщения
452
#13
Вы хотите, чтобы из Kodik брались только аниме? Без турецких сериалов и фильмов?
Из кодик все, что нужно уже спарсилось около 20к фильмов и сериалов, я хочу чтобы в настройках публикации срабатывал фильтр, который я указал, и чтобы серии парсились для тех кинокартин для которых сработал фильтр их около 7к, остальное фильтр отсеял
 
Енот
Новичо́к, через «о́»
Регистрация
13 Янв 2018
Сообщения
452
#14
Енот
Новичо́к, через «о́»
Регистрация
13 Янв 2018
Сообщения
452
#15
https://doramasia.ru/mobile-version/movie/id1354101-da-ya-pauk-i-chto-zhe/s1e11_Amazing-Dubbing вот еще один только зде проблема такая, он подходит по фильтр, но не отображается, не знаю почему, и мне нужны, и фильмы, и сериалы, и аниме
Вроде и описание и постер, и названия все подгрузились, но не отображается 404 ошибка, и такого контента немало на сайте, как решить данную проблему?
 
Енот
Новичо́к, через «о́»
Регистрация
13 Янв 2018
Сообщения
452
#16
"Китай" | "Япония" | " Тайвань" | "Южная Корея" | "Таиланд" | "Индонезия" | "Филиппины" | "Вьетнам" | "Малайзия" | "Сингапур" | "Гонконг" | "Корея" вот список стран, которые я указал в настройках автопубликации
может я не так перечислил нужные страны, нужно ликовычки, эту инфу я взял еще со старой версии
 
Думает, что помогает
Регистрация
15 Дек 2017
Сообщения
5,068
#17
проблема такая, он подходит по фильтр, но не отображается, не знаю почему, и мне нужны, и фильмы, и сериалы, и аниме
Завтра обновите систему.
Должно работать.
 
Енот
Новичо́к, через «о́»
Регистрация
3 Мар 2018
Сообщения
343
#18

Больше нет необходимости ждать от API, чтобы они привели его к «best practices» виду. Теперь Вы можете исправить любое API и использовать его для модуля Серии.

API (Application programming interface) - программный интерфейс приложения, именно через него работают и взаимодействуют между собой программы. Создавая API, многие не до конца понимают, что с API будут работать программы, а не люди. Поэтому не всегда придерживаются каких-либо стандартов или правил, иногда из-за незнания, а иногда из-за того, что API создаются для собственных проектов и программ, поэтому делают его «абы как».

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

На иллюстрации к посту Вы видите как выглядит удачное API, когда к любому значению программа с лёгкостью попадает, и ей не нужно знать заранее о неизвестных ключах.
Неудачное API выглядит так, когда только зная заранее о том, что ключ называется 2 и затем ключ называется 10, только в таком случае можно пробраться к названию.
  • Обновите Ваш установочный файл: cinemapress upd
  • Обновите Вашу систему: cinemapress update
В этом обновлении, Вы сможете получать серии сериалов из абсолютно любого API, у которого эта информация есть. Теперь даже самые неудачные API, Вы сможете преобразовать в массив и с лёгкостью получать данные о сезоне и серии.

На примере случайного API, давайте сделаем его пригодным для программного использования.

К примеру по адресу: https://example.com/api?imdb_id=[imdb_id]

Открывается JSON:

JSON:
{
    "data": {
        "seasons": {
            "1": {
                "season": 1,
                "episodes": {
                    "1": {
                        "episode": 1,
                        "translation": {
                            "87": {
                                "translation": "Профессиональный многоголосый"
                            }
                        }
                    }
                }
            }
        }
    }
}

В нём никуда невозможно зайти data.seasons.1.episodes.1.translation.87.translation, так как Вы не знаете ключа сезона, эпизода, и перевода.

Поэтому запрос делаете так: https://example.com/api?imdb_id=[imdb_id] <> data.seasons

И теперь JSON преобразовывается и выглядит так:

JSON:
{
    "data": {
        "seasons": [
            {
                "key": "1",
                "value": {
                    "season": 1,
                    "episodes": {
                        "1": {
                            "episode": 1,
                            "translation": {
                                "87": {
                                    "translation": "Профессиональный многоголосый"
                                }
                            }
                        }
                    }
                }
            }
        ]
    }
}

Вы seasons сделали массовом, в key попадает ключ который был раньше у объекта, а в value - весь прежний объект.

Теперь Вы уже имеете возможность пройти дальше data.seasons.0.value.episodes.1.translation.87.translation, но Вы всё еще не знаете ключ эпизода и перевода.

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

https://example.com/api?imdb_id=[imdb_id] <> data.seasons, data.seasons.0.value.episodes, data.seasons.0.value.episodes.0.value.translation

И преобразованный API выглядит так:

JSON:
{
    "data": {
        "seasons": [
            {
                "key": "1",
                "value": {
                    "season": 1,
                    "episodes": [
                        {
                            "key": "1",
                            "value": {
                                "episode": 1,
                                "translation": [
                                    {
                                        "key": "87",
                                        "value": {
                                            "translation": "Профессиональный многоголосый"
                                        }
                                    }
                                ]
                            }
                        }
                    ]
                }
            }
        ]
    }
}

Для программы открыты все пути, например чтобы получить перевод: data.seasons.0.value.episodes.0.value.translation.0.value.translation

Возможно это довольно трудно для понимания, поэтому вот готовые строки с преобразованием для существующих API.

Получение серий сериала на странице сериала по API


  • API Alloha: https://api.alloha.tv/?token=04941a9a3ca3ac16e2b4327347bbc1&kp=[kp_id] <> data.seasons, data.seasons.0.value.episodes, data.seasons.0.value.episodes.0.value.translation ~ data.seasons.0.key ~ data.seasons.0.value.episodes.0.key ~ data.seasons.0.value.episodes.0.value.translation.0.value.translation

  • API Collaps: https://api.bhcesh.me/franchise/details?token=eedefb541aeba871dcfc756e6b31c02e&kinopoisk_id=[kp_id] ~ seasons.0.season ~ seasons.0.episodes.0.episode ~ seasons.0.episodes.0.voiceActing

  • API Bazon: https://bazon.cc/api/search?token=2848f79ca09d4bbbf419bcdb464b4d11&kp=[kp_id] <> results.0.episodes, results.0.episodes.0.value ~ results.0.episodes.0.key ~ results.0.episodes.0.value.0.key ~ results.0.translation

  • API HDVB: https://apivb.info/api/videos.json?token=5e2fe4c70bafd9a7414c4f170ee1b192&id_kp=[kp_id] ~ 0.serial_episodes.0.season_number ~ 0.serial_episodes.0.episodes.0 ~ 0.translator

  • API Kodik: https://kodikapi.com/search?token=b7cc4293ed475c4ad1fd599d114f4435&with_episodes=true&kinopoisk_id=[kp_id] <> results.0.seasons, results.0.seasons.0.value.episodes ~ results.0.seasons.0.key ~ results.0.seasons.0.value.episodes.0.key ~ results.0.translation.title

Получение последних серий сериала на главной по API

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

Результат на сайте (обновляется раз в час):

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

  • API Alloha: https://api.alloha.tv/?token=04941a9a3ca3ac16e2b4327347bbc1&order=date&list=serial <> data.0.seasons, data.0.seasons.0.value.episodes, data.0.seasons.0.value.episodes.0.value.translation ~ data.0.id_kp ~ data.0.seasons.0.key ~ data.0.seasons.0.value.episodes.0.key ~ data.0.seasons.0.value.episodes.0.value.translation.0.value.translation

  • API Collaps: https://api.bhcesh.me/list?token=eedefb541aeba871dcfc756e6b31c02e&type=serials&limit=100 ~ results.0.kinopoisk_id ~ results.0.seasons.0.season ~ results.0.seasons.0.episodes.0.episode

  • API Bazon: https://bazon.cc/api/json/?token=2848f79ca09d4bbbf419bcdb464b4d11&type=serial <> results.0.episodes, results.0.episodes.0.value ~ results.0.kinopoisk_id ~ results.0.episodes.0.key ~ results.0.episodes.0.value.0.key ~ results.0.translation

  • API HDVB: https://apivb.info/api/serials_updates.json?token=5e2fe4c70bafd9a7414c4f170ee1b192 ~ items.0.kinopoisk_id ~ items.0.serial_episodes.0.season_number ~ items.0.serial_episodes.0.episodes.0 ~ items.0.translator

  • API Kodik: https://kodikapi.com/list?token=b7cc4293ed475c4ad1fd599d114f4435&limit=100&with_episodes=true <> results.0.seasons, results.0.seasons.0.value.episodes ~ results.0.kinopoisk_id ~ results.0.seasons.0.key ~ results.0.seasons.0.value.episodes.0.key ~ results.0.translation.title

  • API Videocdn: https://videocdn.tv/api/tv-series?api_token=EnbO9h8pv1VyjbCJhg0WM9nG259n7mtz&ordering=id&direction=desc&limit=100 ~ data.0.kinopoisk_id ~ data.0.episodes.0.season_num ~ data.0.episodes.0.num ~ data.0.episodes.0.media.0.translation.short_title
почему у меня так показывает ?

episodelist.png