admin

Администратор
Команда форума
Регистрация
30.09.2022
Сообщения
462
Реакции
84
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-5700.png


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

firefox_xnxiqydhbz-png-5708.png

firefox_tyx5ecuzbu-png-5707.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-5706.png


Результат на сайте (обновляется раз в час):
firefox_rvshmacan2-png-5705.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
 

Aleksey

Продвинутый пользователь
Регистрация
04.10.2022
Сообщения
165
Реакции
40
Почему то не грузятся новые серии с 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
На главной странице использую:
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

Строки взяты из поста выше.
Аллоха прекрасно работает, но коллапс же.... вручную захожу на страницу запроса все ОК, но автоматом ничего не грузится, что не так?
 
Последнее редактирование:

admin

Администратор
Команда форума
Регистрация
30.09.2022
Сообщения
462
Реакции
84
У меня сайт парсит серии.
 
Верх