Перейти к публикации

mariman

Главные администраторы
  • Публикации

    118
  • Зарегистрирован

  • Посещение

Все публикации пользователя mariman

  1. mariman

    Описание Rest Api

    Будем думать. Спасибо за замечание. Тут уже был подобный вопрос про следующие 3 телепередачи на канал... Думаю сделаем.
  2. mariman

    Описание Rest Api

    Нововведения в API 1. Поддержка apple. /login?...device=apple 2. расширен вывод в /channel_list . Теперь доступна информация о возможных bitrates и timeshift канала. 3. параметр bitrate в /settings 4. Видеотека. методы /vod_list /vod_info /vod_get подробнее см. в дополненом первом топике. А где /channel_list_ex вообще описан? В первом сообщении темы о такой комманде вообще никакого упоминания нет. На сколько я понял, это было пожелание... Формат вывода /channel_list не изменился а дополнился. Если разбирать xml стандартными библиотеками, то проблем с разбором не возникнет. Если парсить xml самостоятельно, то возможны ошибки.
  3. mariman

    Playlist

    нигде. это невозможно.
  4. mariman

    Тестируем видеотеку

    mariman работает. если mariman будет сидеть на форуме, то не скоро запустится полноценная видеотека.
  5. mariman

    Тестируем видеотеку

    Вопрос: зависают фильмы или зависает браузер? Если браузер, то это проблема в "свежести VLC". Есть у него (именно у плагина) проблемы с воспроизведением. Тут порекомендую вернуться на версию помладше. Лучше всего использовать ту, которая ставится автоматически. С зависанием вещания рекомендую немного подождать. Вещание ведется с тестового сервера. При официальном запуске услуги вещаться будет с нормального сервера. Видеотека доступна только учетным записям тестеров и девелоперов.
  6. Что значит "разрешение в плагине" ? Плагин не имеет разрешения! На вывод выдается потоком стандартная tv-картинка 720x576. Далее она АВТОМАТИЧЕСКИ растягивается на возможное доступное разрешение. Естественно, что при растягивании ее на 1080p (FullHD) будут видны "квадраты". > и как смотреть напрямую в vlc плеере или же это невозможно? Возможно. Для этого надо использовать API. Но для постоянного просмотра подобный вариант не совсем удобен.
  7. в версиях VLC начиная с 1.1.0 включительно это отрублено в самом плагине. Почему - науке неизвестно. И вообще, на данный момент самая устойчивая версия - та которая устанавливается автоматическим инсталлятором с http://iptv.kartina.tv/install/ Рекомендую удалить VLC и установить его со страницы установки.
  8. mariman

    Kartina Tv на Iphone и Ipad

    А в чем, собственно, проблема? API открыт. Вы вправе делать любых клиентов на чем угодно и под что угодно. Характеристики потока скажет вам VLC. (они могут отличаться на разных каналах).
  9. mariman

    Описание Rest Api

    Поправлено.
  10. mariman

    Описание Rest Api

    progname = progname + "\n" + pdescr
  11. mariman

    Описание Rest Api

    Именно так. Урлы для вещания генерируются сервером. И они не SSL. Авторизация идет через зашифрованный ticket.
  12. mariman

    Описание Rest Api

    Риторика саркастичная... Таки да. В сессии у нас хранится СУЩЕСТВЕННО больше нежели только биллинг-рилэйтед информация. Предложенный вами вариант практически не отличается от прямого запроса с логином-паролем, т.е. поднимать паровоз на каждый запрос все равно придется. Да и потом, Вы предлагаете заменить пару логин-пароль на логин-хэш (от пароля и части IP клиента). Вопрос: каким таким образом клиент увидит свой реальный IP чтобы соорудить подобный хэш? В 95% случаев клиентский IP будет из диапазона 192.168.х.х а на сервере определиться внешний IP шлюза. А насчет убогих девайсов без ssl могу сказать точно - они не потянут декодирование потока в 2 мегабита. Лучше дольше да лучше
  13. mariman

    Описание Rest Api

    Может все-таки мы, как разработчики, лучше знаем где у нас нагрузка больше... Мы проводили тесты перед тем как определиться с архитектурой API и пришли к выводу что механизм сессии оптимален. Есть много нюансов в авторизации, которые просто невозможно делать каждый раз. Например биллинг... Будем объективны. Риски, хоть и малые, но все-таки есть. Мы обязаны предоставить безопасное соединение. Пока сама учетная запись будет объектом купли-продажи, к ней будет интерес злоумышленников. при помощи "паразитической нагрузки" проксировав запрос на канал через простой скриптик который авторизируется и перезапросит ссылку на канал. писать паразита можно на любом языке программирования, вплоть до shell (wget + grep + awk справятся аж бегом) не в инструментах речь. Да. только через такой проксик только и можно сделать плейлист. Многие не поймут поэтому расшифрую: НИКОГДА НЕ БУДЕТ ВОЗМОЖНОСТИ НАПРЯМУЮ ПОЛУЧИТЬ ПЛЕЙЛИСТ! если посмотреть на сам плейлист, то там фигурируют такие вещи как URL. т.е. величины постоянные. Суть в том, что у kartina.tv эти самые URL перегенирируются на каждый запрос. Это необходимое условие для отдачи контента только для одной учетной записи и только в конкретный промежуток времени. Если кто-то попробует воспользоваться этим URL еще раз или через некоторый промежуток времени, вещание прекратится. В виду этого создание плейлиста с прямыми урлами невозможно. НО! Если создать локально некий прокси, который будет авторизоваться и перегонять трафик снаружи (например) на http://localhost/playlist/90 ..., то с такими URL (на локальный хост) создать плейлист уже возможно.
  14. mariman

    Описание Rest Api

    Нереально. две причины как минимум 1. доп. нагрузка на сервер (потому как при логине и пароле производится масса проверок); 2. безопасность. Вообще посылать пароль в открытом виде через УРЛ пока не рекомендуется и, скорее всего, в будущем будет запрещено (если возникнут прецеденты - будем принимать подобные меры). Настойчивые рекомендации: для процедуры /login пользоваться SSL соединением и отсылать данные через POST. По первой причине могу добавить: если будет паразитическая нагрузка в виде "дергания" на каждый чих логина и пароля - мы вынуждены будем ужесточать меры на ограничения.
  15. mariman

    Описание Rest Api

    Прошу прощения великодушно! параметр не "password" а "pass". т.е. правильно http://iptv.kartina.tv/api/xml/login?login=xxx&pass=xxx
  16. mariman

    Описание Rest Api

    Исправлено. XML валидный. session.use_only_cookies установили в 0 Ждем конструктивных замечаний.
  17. mariman

    Описание Rest Api

    Все запросы к REST API формируются по специально сформированному URL и имеют вид: httр://iptv.kartina.tv/api/<тип запроса>/<имя функции>?param1=value&param2=value... <тип запроса> может быть: xml или json или jsonp имена функций и описания к ним параметров описаны ниже. примеры: httр://iptv.kartina.tv/api/xml/epg?cid=2&day=260610 httр://iptv.kartina.tv/api/jsonp/epg?cid=2&day=260610&callback=process COOKIE Для идентификации и создании сессии было решено использовать стандартный механизм HTTP сессий с поддержкой COOKIE. первый вход - обязательное выполнение login. при корректном входе возвращается состояние, данные по клиенту и COOKIE которую необходимо передавать всегда при запросах. В COOKIE хранится идентификатор сессии и по ней организуется сессия. Далее если запрос не будет содержать COOKIE то это вызовет ошибку. Для корректного завершения сессии необходимо вызвать метод logout. Возможна передача параметров через url. имя cookie при этом необходимо брать из ответа пакета sid_name. НО!!! Подобный метод из соображений безопасности является не желательным, ровно как и передача login методом GET. Введено ограничение на 4 запроса в секунду для одной сессии. Мера вынужденная для защиты системы от избыточных перегрузок. В случае возникновения ситуации возвращается стандарный ответ ошибки с кодом 31 (Query limit exceeded). Все возвращаемые сообщения имеют вид ассоциативного массива. формат пакета формат - JSON или XML, в зависимости от сформированного URL. Если запрос содержит ошибку то это вызывает обязательную посылку следующего пакета: <?xml version="1.0" encoding="UTF-8"?> <response> <error> <message>An error message</message> <cоde>9999</cоde> </error> <servertime>1277893631</servertime> </response> где message и code собственно сообщение об ошибке и его код. Формат времени. Все данные обозначающих дату и время представлены в формате unixtime . /login?login=<login>&pass=<password>&device=<apple|default:all> Входные параметры: login - логин. идентификатор подписки выданный клиенту. pass - числовой пароль. device - параметр указывающий на тип устройства работающего с API. Генерируются соответствующие потоки и ссылки вещания. Влияет на списки возможных для устройств каналов, ссылки вещания и т.п. На данный момент работает с двумя параметрами: apple и all. По умолчанию установлен в all и генерирует ссылки для vlc. (поток TS) service=all - Выводит значения всех текущих настроек клиента Возврат пакета вида: <?xml version="1.0" encoding="UTF-8"?> <response> <sid>[идентификатор сессии]</sid> <sid_name>[имя переменной идентификатора сессии]</sid> <account> <login>[логин]</login> <packet_name>[название пакета]</packet_name> <packet_expire>[дата и время истечения пакета]</packet_expire> </account> <services> // сервисы включенные в пакет пользователя <vod>1</vod> // видеотека <archive>1</archive> // архив </services> <servertime>[дата и время генерации ответа]</servertime> </response> Параметр идентификатора сессии передан на тот случай если клиент не может получить заголовок cookie. /account Возвращает информацию об аккаунте аналогичную что при /login /logout Вызов без параметров (Идентификатор сессии должен передаваться в виде cookie Возврат пакета: <?xml version="1.0" encoding="UTF-8"?> <response> <message>M_LOGOUT_OK</message> <servertime>1277807573</servertime> </response> /channel_list Вызов без параметров (Идентификатор сессии должен передаваться в виде cookie Возврат пакета: <?xml version="1.0" encoding="UTF-8"?> <response> <groups> <item> <id>[идентификатор группы]</id> <name>[название группы]</name> <color>[CSS код цвета группы]</color> <channels> <item> <id>[идентификатор канала]</id> <name>[Название канала]</name> <stream_params> [возможные параметры потоков] <item> <rate>[битрейт] Возможный битрейт канала. Устанавливается в настройках переменной bitrate</rate> <ts>[таймшифт] в часах например: значение 2 - задержка вещания на 2 часа. Получить url вещания возможно установив в настройках переменную timeshift</ts> </item> ... <item> <rate>1500</rate> <ts>11</ts> </item> </stream_params> <is_video>[флаг потокового видео 0/1 1-видео, 0-радио]</is_video> <need_bandwidth>[рекомендуемый битрейт канала]<need_bandwidth> <protected>[флаг закрыт ли канал 0/1]</protected> <have_archive>[флаг имеет ли канал архив 0/1]</have_archive> <icon>[относительный путь к файлу иконки канала]</icon> <epg_progname>[название текущей телепередачи]</epg_progname> <epg_start>[дата и время начала текущей передачи]</epg_start> <epg_end>[дата и время окончания текущей передачи]</epg_end> </item> <item> /* пример */ <id>3</id> <name>Pоссия</name> <stream_params> <item> <rate>1500</rate> <ts>0</ts> </item> <item> <rate>900</rate> <ts>0</ts> </item> <item> <rate>1500</rate> <ts>1</ts> </item> <item> <rate>1500</rate> <ts>2</ts> </item> <item> <rate>1500</rate> <ts>3</ts> </item> <item> <rate>1500</rate> <ts>4</ts> </item> <item> <rate>1500</rate> <ts>8</ts> </item> <item> <rate>1500</rate> <ts>9</ts> </item> <item> <rate>1500</rate> <ts>10</ts> </item> <item> <rate>1500</rate> <ts>11</ts> </item> </stream_params> <is_video>1</is_video> <protected>0</protected> <have_archive>1</have_archive> <icon>/img/ico/3.gif</icon> <epg_progname>ВЕСТИ-МОСКВА</epg_progname> <epg_start>1277807400</epg_start> <epg_end>1277808600</epg_end> </item> ... /* пример */ </channels> </item> <item> <id>2</id> <name>Новости</name> <color>#ef0000</color> <channels> <item> <id>6</id> <name>РТР Вести</name> <is_video>1</is_video> <protected>0</protected> <icon>/img/ico/6.gif</icon> <epg_progname>"Вести. Сейчас. Главные события".</epg_progname> <epg_start>1277807400</epg_start> <epg_end>1277807700</epg_end> </item> ... </channels> </item> </groups> <servertime>1277807687</servertime> </response> /get_url?cid=<ИД канала>&gmt=<дата время позиции архива>&protect_code=<пароль для закрытых каналов> Параметры cid - идентификатор канала полученный из channel_list gmt - дата время позиции архива в формате unixtime protect_code - цифровой пароль для закрытых каналов. если канал закрыт а пароль не передан, либо передан неверный пароль, то в тэге <url> возвращается слово "protected". Возврат пакета вида: <?xml version="1.0" encoding="UTF-8"?> <response> <url>http/ts://217.19.222.34:18046/?ticket=W4z3WFdoSRnMMXHgYFq...md4ZGtVyT6mjgqGZk%3D :http-caching=1500 :no-http-reconnect</url> <servertime>1277808472</servertime> </response> url специально сгенерирован для проигрывания через VLC с соответствующими оптимизированными параметрами /epg?cid=<идентификатор канала>&day=<дата формата DDMMYY> Параметры cid - идентификатор канала полученный из channel_list day - дата вида DDMMYY (Пример: 29 июня 2010г = 290610) <?xml version="1.0" encoding="UTF-8"?> <response> <epg> <item> <ut_start>[дата и время начала передачи]</ut_start> <progname>[название передачи]</progname> </item> <item> <ut_start>1277521800</ut_start> <progname>"Вся Россия".</progname> </item> <item> <ut_start>1277522700</ut_start> <progname>"Диалоги о животных".</progname> </item> ... </epg> <servertime>1277809426</servertime> </response> /epg3?dtime=<Дата и время старта EPG>&period=<на сколько часов вперед> Выдача программы телепередач доступных каналов с времени указанного в dtime на следующие period часов. необходима для организации функции "что идет сейчас" как на http://tv.yahoo.com/listings Программа генерируется с учетом timeshift переменной выставленной пользователем в настройках. Параметры dtime - дата и время (unixtime) начала EPG. По умолчанию выбирается текущий момент (по серверному времени) period - на сколько часов вперед. По умолчанию выдается EPG на ближайшие 3 часа. <?xml version="1.0" encoding="UTF-8"?> <response> <item> <id>2</id> <name>Первый</name> <epg> <item> <ut_start>1278944400</ut_start> <progname>"ХОЧУ ЗНАТЬ" с Михаилом Ширвиндтом</progname> <t_start>17:20</t_start> </item> <item> <ut_start>1278946200</ut_start> <progname>"ОБРУЧАЛЬНОЕ КОЛЬЦО" - многосерийный фильм Сериал.</progname> <t_start>17:50</t_start> </item> </epg> </item> <item> <id>3</id> <name>Pоссия</name> <epg> <item> <ut_start>1278942600</ut_start> <progname>"ТАЙНЫ СЛЕДСТВИЯ" - детективный сериал. В главной роли Анна Ковальчук</progname> <t_start>16:50</t_start> </item> <item> <ut_start>1278948600</ut_start> <progname>"КУЛАГИН И ПАРТНЕРЫ"</progname> <t_start>18:30</t_start> </item> </epg> </item> <item> <id>54</id> <name>Discovery</name> <epg> <item> <ut_start>1278943800</ut_start> <progname>"СМЕРТЕЛЬНЫЙ УЛОВ: ВРЕМЯ РАСПЛАТЫ"</progname> <t_start>17:10</t_start> </item> <item> <ut_start>1278947100</ut_start> <progname>"ДЕРЗКИЕ ПРОЕКТЫ: АРИЗОНСКИЕ "КАРДИНАЛЫ"</progname> <t_start>18:05</t_start> </item> <item> <ut_start>1278950400</ut_start> <progname>"РАЗРУШИТЕЛИ ЛЕГЕНД: СПЕЦВЫПУСК "ДЖЕЙМС БОНД". 1 часть"</progname> <t_start>19:00</t_start> </item> </epg> </item> <servertime>1278944765</servertime> </response> /epg_next?cid=<id канала> Возвращает EPG на текущую и на 3 последующих телепередачи канала с заданным ID <?xml version="1.0" encoding="UTF-8"?> <response> <epg> <item> <ts>1294834800</ts> <progname>ХОЧУ ЗНАТЬ - с Михаилом Ширвиндтом</progname> </item> <item> <ts>1294836600</ts> <progname>"ОБРУЧАЛЬНОЕ КОЛЬЦО" - сериал Сериал.</progname> </item> <item> <ts>1294840200</ts> <progname>ФЕДЕРАЛЬНЫЙ СУДЬЯ</progname> </item> </epg> <servertime>1294835324</servertime> </response> /favorites Любимые каналы. Организовано хранение 12 любимых каналов. Каждая ячейка именуется индексом place. В ней содержится идентификатор канала. Без входных параметров. <?xml version="1.0" encoding="UTF-8"?> <response> <favorites> <item> <place>2</place> <channel_id>2</channel_id> </item> <item> <place>8</place> <channel_id>3</channel_id> </item> </favorites> <servertime>1278944963</servertime> </response> /favorites_set?place=<номер ячейки для хранения>&cid=<идентификатор канала> Устанавливает в заданную ячейку любимый канал. Если установить cid=0 то канал удалится из списка любимых. Возврат: пакет сообщение об успешном выполнении либо пакет ошибки. /settings?var=<http_caching|stream_server|timeshift|timezone|bitrate> Получить значение переменной настройки. http_caching - время буферизации потока в миллисекундах stream_server - IP сервера трансляции. Возможные значения передются в массиве List timeshift - смещение по времени. Возможные значения передются в массиве List timezone - часовой пояс. Возможные значения от -12 до +12 bitrate - Значание bitrate каналов. Возможные значения 1500 и 900. для некоторых типов device (см /login) могут быть указаны специфичные bitrate. Возврат: <?xml version="1.0" encoding="UTF-8"?> <response> <settings> <name>timeshift</name> <value>3</value> <list> <item>0</item> <item>1</item> <item>2</item> <item>3</item> <item>4</item> <item>8</item> <item>9</item> <item>10</item> <item>11</item> </list> </settings> <servertime>1278946045</servertime> </response> Если у переменной есть список возможных значений, то они передаются в массиве с параметром list /settings_set?var=<pcode|http_caching|stream_server|timeshift|timezone|bitrate>&val=<значение> Установка настройки. pcode - установка пароля для закрытых каналов. Необходима передача дополнительных параметров: old_code - старый пароль, new_code - новый парль, confirm_code - подтверждение нового пароля http_caching. Дополнительный параметр val передает возможное значение для установки. stream_server - установить IP сервер трансляции. val передает возможное значение для установки. timeshift - val передает возможное значение для установки. timezone - часовой пояс. Возможные значения от -12 до +12 bitrate - Значание bitrate каналов. Возможные значения 1500 и 900. для некоторых типов device (см /login) могут быть указаны специфичные bitrate. Видеотека Получить список фильмов из базы видеотеки. Фильмы выводятся в порядке заданном параметром type, порциями по 20 фильмов. Параметры для формирования списка фильмов: /vod_list? type = best|last|text page = 1 query = text если type==text genre = id nums = <фильмов на страницу> type = best - лучшие фильмы согласно рейтинга по просмотрам. last - тот же список фильмов но отсортирован по дате добавления в обратном порядке. text - поиск в базе по названию фильма. строка для поиска в query page = N - номер страницы для вывода. По умолчанию установлен 1-й номер страницы. query - строка для поиска. Работает если установлен type=text genre = id - фильтр по жанрам. Показывает фильмы только указанного жанра. Возможно перечисление выводимых жанров через знак `|`. Например: genre=205|206|215 nums = NN количество фильмов на страницу по умолчанию: 20 Ответ <?xml version="1.0" encoding="UTF-8"?> <response> <type>best</type> [текущий тип запроса] <total>60</total> [всего записей удовлетворяющих запросу] <count>20</count> [количество на текущей странице] <page>1</page> [номер страницы] <rows> <item> <id>119</id> [идентификатор фильма (не файла для вещания!!!)] <dt_modify>2010-12-24 14:35:18</dt_modify> [дата последней модификации] <name>Убить Шакала </name> [название фильма] <name_orig></name_orig> [иригинальное название фильма (если англ.)] <description>Ограблен ювелирный магазин. Объявлен всесоюзный розыск бандита по кличке Шакал. А тем временем в поезде, следующем из Киева в Крым, происходит загадочное убийство. Прибывший на место преступления следователь Петров обнаруживает связь между этим убийством и ограблением…</description> [описание] <poster>/img/vod/470616.jpg</poster> [относительная ссылка на картинку постера. Относительно http://iptv.kartina.tv/] <year>1991</year> [год выпуска фильма] <rate_imdb>0.000</rate_imdb> [значение рейтинга IMDB] <rate_kinopoisk>6.500</rate_kinopoisk> [значение рейтинга кинопоиска] <rate_mpaa></rate_mpaa> [значение рейтинга MPAA] <country>СССР</country> [страна производства] <genre_str>детектив</genre_str> [строка жанров (список жанров фильма собранный в строку и разделенные запятыми)] </item> ... <rows> </responce> /vod_info?id=<id фильма> Получить полную информацию о фильме. Параметр: id - идентификатор фильма полученный из списка фильмов. Ответ: <?xml version="1.0" encoding="UTF-8"?> <response> <film> <id>119</id> [идентификатор фильма] <name>Убить Шакала </name> [название фильма] <name_orig></name_orig> [оригинальное название фильма] <description>Ограблен ювелирный магазин. Объявлен всесоюзный розыск бандита по кличке Шакал. А тем временем в поезде, следующем из Киева в Крым, происходит загадочное убийство. Прибывший на место преступления следователь Петров обнаруживает связь между этим убийством и ограблением…</description> [описание фильма] <poster>/img/vod/470616.jpg</poster> [ссылка на файл постера] <lenght>73</lenght> [длина фильма в минутах] <genre_str>детектив</genre_str> [жанры фильма, разделенные запятыми] <year>1991</year> [год выпуска] <director>Григорий Кохан</director> [режиссер] <scenario>Николай Оганесов, Григорий Кохан</scenario> [сценарист] <actors>Евгений Жариков, Олег Масленников, Нина Колчина-Бунь, Давид Бабаев, Римас Моркунас, Евгений Смирнов, Вячеслав Езепов, Бимболат Ватаев, Александр Быструшкин, Степан Олексенко</actors> [в ролях] <rate_imdb>0.000</rate_imdb> [рейтигн IMDB] <rate_kinopoisk>6.500</rate_kinopoisk> [рейтинг кинопоиска] <rate_mpaa></rate_mpaa> [рейтинг MPAA] <country>СССР</country> [страна производства] <studio></studio> [студия] <awards></awards> [награды] <budget>0</budget> [бюджет] <images></images> [скриншоты (если есть)] <videos> [файлы фильма (серии)] <item> <id>161</id> [идентификатор файла] <title></title> [название серии. если фильм односерийный, поле может быть не задано] <format>dvd</format> [качество. tv|dvd|hd|fullhd|etc] <url>KILL_JACKAL.m4v</url> [имя файла (справочное. не используется.)] <size>0</size> [размер файла] <lenght>0</lenght> [длительность фильма в минутах] <codec>h264</codec> [кодек] <width>0</width> [ширина картинки] <height>0</height> [высота картинки] <track1_codec>aac</track1_codec> [тип аудио] <track1_lang></track1_lang> [язык звукового трека1] <track2_codec></track2_codec> [кодек звука] <track2_lang></track2_lang> <track3_codec></track3_codec> <track3_lang></track3_lang> </item> </videos> <genres> [массив жанров фильма] <item> <id>209</id> [идентификатор жанра] <name>детектив</name> [наименование жанра] </item> </genres> </film> <servertime>1294761468</servertime> </response> Получить ссылку для вещания потока видео. /vod_geturl?fileid=<ид файла> Параметр fileid - идентификатор файла полученый из /vod_info Ответ: <?xml version="1.0" encoding="UTF-8"?> <response> <url>http://vod.kartina.tv/Tass_02.m4v?ticket=mkcuTmdjrxyJAOE5Nb6EZNxeNin3IDojbkF0...WQlzY4CMP%2F5%2BIr8Y%3D :http-caching=1500 :no-http-reconnect</url> <servertime>1294826729</servertime> </response> Внимание! Ссылка вещания генерируется динамично. В зависимости от нагрузки на сервер. /vod_genres без параметров. возвращает список жанров. не рекомендуется делать статичную копию справочника, поскольку жанры могут появляться по мере поступления новых фильмов. Ответ: <?xml version="1.0" encoding="UTF-8"?> <response> <genres> <item> <id>205</id> <name>биографический</name> </item> <item> <id>206</id> <name>боевик</name> </item> <item> <id>208</id> <name>военный</name> </item> <item> <id>209</id> <name>детектив</name> </item> <item> <id>210</id> <name>детский</name> </item> <item> <id>213</id> <name>драма</name> </item> <item> <id>215</id> <name>исторический</name> </item> <item> <id>216</id> <name>комедия</name> </item> <item> <id>219</id> <name>криминал</name> </item> <item> <id>220</id> <name>мелодрама</name> </item> <item> <id>221</id> <name>музыка</name> </item> <item> <id>222</id> <name>музыкальный</name> </item> <item> <id>224</id> <name>приключения</name> </item> <item> <id>227</id> <name>семейный</name> </item> <item> <id>230</id> <name>триллер</name> </item> <item> <id>231</id> <name>ужасы</name> </item> <item> <id>232</id> <name>фантастика</name> </item> <item> <id>234</id> <name>фэнтези</name> </item> </genres> <servertime>1294827021</servertime> </response> /vod_favlist список отобраных любимых фильмов[/size] Формат ответа идентичен формату списка /vod_list /vod_favadd?id=<ID фильма> Добавить фильм с идентификатором id в список любимых фильмов /vod_favsub?id=<ID фильма> Удалить фильм с идентификатором id из списка любимых фильмов Дополнительная информация Коды и сообщения об ошибках: define('E_UNKNOW_ERROR', 0); define('E_INCORRECT_REQUEST', 1); define('E_TOO_ENOUGH_DATA', 2); define('E_ACCESS_DENIED', 3); define('E_INCORRECT_LOGIN', 4); define('E_CONTRACT_INACTIVE', 5); define('E_CONTRACT_PAUSED', 6); define('E_NOT_ALLOWED', 7); define('E_GET_URL_INFO', 8); define('E_NEED_DAY', 9); define('E_NEED_CHANNEL_ID', 10); define('E_ANOTHER_CLIENT_IN', 11); define('E_AUTH_ERROR', 12); define('E_PACKET_EXPIRED', 13); define('E_INCORRECT_METHOD', 14); define('E_ARCHIVE_NOT_AVAILABLE', 15); define('E_NEED_PLACE', 16); define('E_NEED_SETTING_VARIABLE', 17); define('E_PASS_BAD_CONFIRM', 18); define('E_CURRENT_PASS_BAD', 19); define('E_NEW_PASS_BAD', 20); define('E_NEED_VALUE', 21); define('E_VALUE_NOT_ALLOWED', 22); define('E_NEED_PARAM', 23); define('E_NEED_PARAM_ID', 24); define('E_NEED_PARAM_FILEID', 25); define('E_NEED_PARAM_TYPE', 26); define('E_NEED_PARAM_QUERY', 27); define('E_BITRATE_NOT_AVAILABLE', 29); define('E_SERVICE_NOT_AVAILABLE', 30); define('E_LIMIT_EXCEEDED', 31); define('M_FAVORITE_SETS', 2); define('M_PASS_CHANGED', 3); define('M_COMPLETED', 4); E_INCORRECT_REQUEST E_INCORRECT_REQUEST E_TOO_ENOUGH_DATA Wrong login or password E_ACCESS_DENIED Access denied E_INCORRECT_LOGIN Login incorrect E_CONTRACT_INACTIVE You contract is inactive E_CONTRACT_PAUSED You contract is paused E_NOT_ALLOWED Channel not found or not allowed E_GET_URL_INFO Error generate URL. Bad parameters E_NEED_DAY Need DAY parameter <DDMMYY> E_NEED_CHANNEL_ID Need ChannelID E_ANOTHER_CLIENT_IN Another client with you login was logged E_AUTH_ERROR Authentification error E_PACKET_EXPIRED You packet was expired E_UNKNOW_ERROR Unknown error E_INCORRECT_METHOD Unknown API function E_ARCHIVE_NOT_AVAILABLE Archive is not available E_NEED_PLACE Need place to set E_NEED_SETTING_VARIABLE Need name of settings variable E_PASS_BAD_CONFIRM Incorrect confirmation code E_CURRENT_PASS_BAD Current code is wrond E_NEW_PASS_BAD New code is wrond E_NEED_VALUE Need value (val) parameter E_VALUE_NOT_ALLOWED This value is not allowed E_NEED_PARAM Need parameter E_NEED_PARAM_ID Need parameter <id> E_NEED_PARAM_FILEID Need parameter <fileid> E_NEED_PARAM_TYPE Need parameter <type> E_NEED_PARAM_QUERY Need parameter <query> E_SERVICE_NOT_AVAILABLE Service is not available E_LIMIT_EXCEEDED Query limit exceeded M_FAVORITE_SETS Favorite channel was set M_PASS_CHANGED Password was changed M_COMPLETED Operation completed successfully
×
×
  • Создать...