Подскажите пожалуйста, начал тут смотреть как устроен сабжевый модуль, он хотя бы ещё пытается продолжать работать. Мои знания php пока стремятся к нулю, но я учусь. Пока в основном опираюсь только на знания нескольких языков программирования для микроконтроллеров PIC и AVR и смысл написанного на php примерно и в общих чертах понятен.
Почти уверен, что не вытяну ремонт модуля, но при разборе скриптов стало понятно, как модуль устроен и как работает. Да и вообще, все модули устроены практически одинаково. Очень интересно, между прочим. Ну да ладно, я к чему. Пока разбирался, понял в каком месте поломалось. Сейчас постараюсь как можно подробнее описать, и надеюсь, что многоуважаемый Virtual, или кто нибудь ещё, кто шарит в вопросе, даст дельные советы, а я попытаюсь эти советы понять
А сломалось в трёх местах.
1.Значит, как я понял, при запуске идёт обращение к адресу
https://www.ivi.ru/mobileapi/countries/
Тут мы получаем список стран с присвоенными им номерами, так как при запросе информации о фильме в описании страна указана не явно, а номером. Вот для этого сопоставления и нужно. При переходе по этой ссылке с компа получаем json список со странами. В этом месте работает.
2. Дальше идём по адресу
https://www.ivi.ru/mobileapi/categories/
Получаем список категорий. Смысл тот же, что и для стран. Тут тоже работает.
3. Если зашли в поиск, то там идёт какая то подготовка данных в нужный вид и переход по ссылке поиска
https://api.ivi.ru/mobileapi/search/v5/?query='.%20urlencode(%20$search%20)
в этом месте тоже работает
4.Список фильмов при запуске подготавливается по ссылке вида
https://api.ivi.ru/mobileapi/catalogue/v5/?category=14&sort=pop&from=0&to=13&fields=id,hru,title,year,years,description,synopsis,thumbnails
(я уже подставил в ссылку переменные) Тут тоже работает, на компе получаем json с 14 фильмами из раздела ФИЛЬМЫ (category=14) с описаниями, ну а на приставке получаем список с картинками и кратким описанием. Можно листать страницы, выбирать нужные категории. Всё работает.
5. Дальше, как я понял, при нажатии на пульте OK вызывается функция
- Code: Select all
static function getInfos( $id )
В теле этой функции практически сразу вызывается функция
- Code: Select all
static function getVideos( $id )
и вот тут начинаются поломки. В этой функции идёт обращение по адресу
https://api.ivi.ru/mobileapi/videofromcompilation/v5/?id=109230&from=0&to=9999&fields=id,title,season,episode
(я уже подставил переменные в ссылку, id=109230 это фильм Ёлки, from-to не понял для чего, но в скрипте жёстко указано от 0 до 9999), видимо чтобы получить json с разделами fields=id,title,season,episode, но в ответ приходит пустой ответ
- Code: Select all
{"result":[]}
Видимо, ivi или поменяли структуру запроса, или адрес. По этой ссылке, как я понял, можно узнать есть ли в фильме несколько серий, или одна. Наверно, можно что то закоментить, чтоб попробовать запустить заведомо фильм с 1 серией, особо ещё не смотрел. Но всё равно не заработает, потому что дальше тоже поломано.
6.Дальше переход по ссылке
https://api.ivi.ru/mobileapi/videoinfo/v5/?id=109230
(id=109230 это Ёлки) или по ссылке
https://api.ivi.ru/mobileapi/compilationinfo/v5/?hru=ironia_sudby
если у фильма есть название, а не просто id. Вот при переходе по этим ссылкам с компа, ответ приходит, всё хорошо. Но при вызове их на приставке, как я понял, появляется ошибка в функции
- Code: Select all
static function request( $u )
так как в COM порт процессор выдаёт
- Code: Select all
urlPath = http://127.0.0.1?page=ivi_rss_info&id=109230
Если перейти по этой ссылке с компа, то получим
- Code: Select all
ivi::request: Can't load https://api.ivi.ru/mobileapi/videoinfo/v5/?id=109230
(я убрал ключ /n из подготовки сообщения чтоб увидеть полную ссылку, которая не работает). Пробовал менять с https на http, результат тот же. Вот тут я не знаю, почему на компе работает, а на приставке нет, ведь эта же функция вызывается для запроса по всем ссылкам, и на других ссылках ведь работает.
7.Дальше переход по ссылке
https://www.ivi.ru/ajax/info/109230?type=json
для получения списка актёров? особо не понял зачем. Тут вообще печально, возвращается 404 ошибка.
8. Ещё, как я понял, для Украины приделан костыль получения видео из ссылки вида
- Code: Select all
http://files.iconbit.com/file/ivi/player.php?uid={$uid}&id=109230&q=MP4-hi
Если перейти с компа, то в ответ приходит целый php скрипт, в котором есть строка video_url = и ссылка. Так вот если эту ссылку скормить PlayLink, то показывает. Наверно этот костыль ещё работает и его можно использовать не только для Украины.
Вот собственно и всё, написал дофига. Есть какие нибудь идеи по ремонту? Может известны альтернативные адреса API, которые тут перестали работать? Или может что то вырезать можно? Буду рад любой подсказке. Заранее спасибо!