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

mariman

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

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

  • Посещение

Сообщения, опубликованные пользователем mariman

  1. товарищи!!!

    сделайте дополнительный список каналов, в котором будет отображаться текущая а также последующая передача!!!

    также ен хватает в епг у последней передачи время окончания

     

    для показа в списке канала текущей и следующей передачи мне приходится делать запрос и перелопачивать епг на канал, что вечером приводит к тормозам.

    также не могу при просмотре в архиве показать длительность последней передачи дня, тк для этого мне прийдется грузить епг на следующий день только ради того, чтобы узнать, когда начинается первая передача :(

     

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

  2. Нововведения в API

     

    1. Поддержка apple. /login?...device=apple

    2. расширен вывод в /channel_list . Теперь доступна информация о возможных bitrates и timeshift канала.

    3. параметр bitrate в /settings

    4. Видеотека. методы /vod_list /vod_info /vod_get

     

    подробнее см. в дополненом первом топике.

     

    /channel_list --> работает как и было

    /channel_list_ex --> навый формат ответа!

    А где /channel_list_ex вообще описан? В первом сообщении темы о такой комманде вообще никакого упоминания нет.

     

    На сколько я понял, это было пожелание...

    Формат вывода /channel_list не изменился а дополнился. Если разбирать xml стандартными библиотеками, то проблем с разбором не возникнет. Если парсить xml самостоятельно, то возможны ошибки.

  3. Вопрос: зависают фильмы или зависает браузер? Если браузер, то это проблема в "свежести VLC". Есть у него (именно у плагина) проблемы с воспроизведением. Тут порекомендую вернуться на версию помладше. Лучше всего использовать ту, которая ставится автоматически.

    С зависанием вещания рекомендую немного подождать. Вещание ведется с тестового сервера. При официальном запуске услуги вещаться будет с нормального сервера.

     

    Видеотека доступна только учетным записям тестеров и девелоперов.

  4. Что значит "разрешение в плагине" ? Плагин не имеет разрешения! На вывод выдается потоком стандартная tv-картинка 720x576. Далее она АВТОМАТИЧЕСКИ растягивается на возможное доступное разрешение. Естественно, что при растягивании ее на 1080p (FullHD) будут видны "квадраты".

     

    > и как смотреть напрямую в vlc плеере или же это невозможно?

    Возможно. Для этого надо использовать API. Но для постоянного просмотра подобный вариант не совсем удобен.

  5. в версиях VLC начиная с 1.1.0 включительно это отрублено в самом плагине. Почему - науке неизвестно. И вообще, на данный момент самая устойчивая версия - та которая устанавливается автоматическим инсталлятором с http://iptv.kartina.tv/install/

    Рекомендую удалить VLC и установить его со страницы установки.

  6. Хочется смотреть Картину на мобильный девайсах iPhone или iPad. Кто нибудь пользуется?

    Если нет кто нибудь может подсказать характеристики потока? Может попробывать что-нибудь соорудить программку для просмотра на  С или Objective-C. Нашел какой-то майл Картины, сказали мы доставка, иди на ... форум :)

    Пообщаться бы с компетентным спецом от картины....

    А в чем, собственно, проблема? API открыт. Вы вправе делать любых клиентов на чем угодно и под что угодно.

    Характеристики потока скажет вам VLC. (они могут отличаться на разных каналах).

     

  7. ...я так понимаю, что речь идет об использовании защищенного соединения исключительно для авторизации, что нормально...

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

  8. к слову, вот скажите откровенно, храните ли вы в сессии существенно больше биллинг-рилэйтед информации, чем ID аккаунта? вопрос риторический..

    Риторика саркастичная... Таки да. В сессии у нас хранится СУЩЕСТВЕННО больше нежели только биллинг-рилэйтед информация.

     

    ... как на счет альтернативного способа авторизации по хешу (предложенного мной выше в теме)? дешево и сердито.. в перспективе решает ряд вопросов для авторизации с убогих девайсов имеющих проблемы с ssl соединениями.

     

    Предложенный вами вариант практически не отличается от прямого запроса с логином-паролем, т.е. поднимать паровоз на каждый запрос все равно придется. Да и потом, Вы предлагаете заменить пару логин-пароль на логин-хэш (от пароля и части IP клиента). Вопрос: каким таким образом клиент увидит свой реальный IP чтобы соорудить подобный хэш? В 95% случаев клиентский IP будет из диапазона 192.168.х.х а на сервере определиться внешний IP шлюза.

    А насчет убогих девайсов без ssl могу сказать точно - они не потянут декодирование потока в 2 мегабита.

     

    вопрос в том, что "будет ли такая реализация считаться паразитической"? ибо простой shell скрипт открывающий таким образом канал пишется за 3 минуты. а вот скрипт с сохранением промежуточного состояния сесси между получением списка каналов, просмотром программки и переключением тех самых каналов будет писаться дольше.

     

    Лучше дольше да лучше ;)

     

  9. ;)

    расшифрую:

    выборка по ид или паре логин/пароль нагружает сервер БД практически одинаково (при соответветствующих индексах). а проверять состояние аккаунта юзера, по хорошему, все равно надо, вне зависимости от того, залогинен он или нет..

     

    Может все-таки мы, как разработчики, лучше знаем где у нас нагрузка больше... Мы проводили тесты перед тем как определиться с архитектурой API и пришли к выводу что механизм сессии оптимален. Есть много нюансов в авторизации, которые просто невозможно делать каждый раз. Например биллинг...

     

    ... будем объективны, риски малы. скорее всего в ssl особого смысла нет,

     

    Будем объективны. Риски, хоть и малые, но все-таки есть. Мы обязаны предоставить безопасное соединение. Пока сама учетная запись будет объектом купли-продажи, к ней будет интерес злоумышленников.

     

    <br />Как можно сделать ссылку для VLC, то есть плейлист?<br />

    при помощи "паразитической нагрузки" проксировав запрос на канал через простой скриптик который авторизируется и перезапросит ссылку на канал. писать паразита можно на любом языке программирования, вплоть до shell (wget + grep + awk справятся аж бегом)

     

    не в инструментах речь. Да. только через такой проксик только и можно сделать плейлист. Многие не поймут поэтому расшифрую:

     

    НИКОГДА НЕ БУДЕТ ВОЗМОЖНОСТИ НАПРЯМУЮ ПОЛУЧИТЬ ПЛЕЙЛИСТ!

     

    если посмотреть на сам плейлист, то там фигурируют такие вещи как URL. т.е. величины постоянные. Суть в том, что у kartina.tv эти самые URL перегенирируются на каждый запрос. Это необходимое условие для отдачи контента только для одной учетной записи и только в конкретный промежуток времени. Если кто-то попробует воспользоваться этим URL еще раз или через некоторый промежуток времени, вещание прекратится.

    В виду этого создание плейлиста с прямыми урлами невозможно.

     

    НО! Если создать локально некий прокси, который будет авторизоваться и перегонять трафик снаружи (например) на http://localhost/playlist/90 ..., то с такими URL (на локальный хост) создать плейлист уже возможно.

     

  10. нереально сделать запрос на видестрим вместе с логином и также для епг?

     

    типо

     

    /get_url?cid=<ИД канала>&gmt=<дата время позиции архива>&login=<login>&pass=<password>

     

    чтобы можно было формировать свои плейлисты и смотреть на любом плеере/приставке с поддержкой тс потока с кодировкой x.264

     

    Нереально.

    две причины как минимум

    1. доп. нагрузка на сервер (потому как при логине и пароле производится масса проверок);

    2. безопасность. Вообще посылать пароль в открытом виде через УРЛ пока не рекомендуется и, скорее всего, в будущем будет запрещено (если возникнут прецеденты - будем принимать подобные меры).

    Настойчивые рекомендации: для процедуры /login пользоваться SSL соединением и отсылать данные через POST.

     

    По первой причине могу добавить: если будет паразитическая нагрузка в виде "дергания" на каждый чих логина и пароля - мы вынуждены будем ужесточать меры на ограничения.

  11. Все запросы к 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 с соответствующими оптимизированными параметрами

     

    URL генерируется только один раз. Для повторного просмотра канала необходимо получить другой, перегенерированный url. При попытке трансляции url нескольких сгенерированных URL одновременно, будет транслироваться только url полученный последним. Таким образом возможна трансляция только одного потока для одной сессии.

     

    /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

×
×
  • Создать...