SAPI

Материал из Smotrite.TV

Описание

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

Договоренности

  • Все временные метки только в формате Unixtime
  • Boolean значение имеет следующее обозначение: положительное - 1, отрицательное - 0»
  • Кодировка UTF8.

Все запросы к API формируются по специально сформированному URL и имеют следующий вид:

httр://sapi.ott.st/v<api_version>/<type>/<method>?param1=value&param2=value&token=<token>
Обозначения
<api_version> Версия API. Текущая версия 2.4
<type> Формат ответа API. Может принимать следующие параметры:
  • json - ответ в формате JSON
  • xml - ответ в формате XML
  • array - сериализованный массив
  • jsonp - Возврат пакета в формате json c callback функцией.
<method> Метод API, описания которых предоставлены ниже.
<token> Уникальный ключ авторизации. Всегда равен md5(strtolower($login) . md5($password)) (пример на PHP)


Пример запроса к API:

httр://sapi.ott.st/v2.4/json/get_url?cid=1&token=sessiontoken

Логотипы каналов

Получить логотип канала можно по следующему URL:

http://ott.st/logos/<channel_id>.png

Где <channel_id> - ID канала.

Методы

[account] Аккаунт

Описание метода

Выводит информацию об аккаунте.

Формат запроса

httр://sapi.ott.st/v2.4/xml/account?token=sessiontoken

Формат ответа

<?xml version="1.0" encoding="utf-8"?>
<response>
 <account>
  <login>[логин]</login>
  <tz>[таймзона]</tz>
  <first_name>[имя]</first_name>
  <last_name>[фамилия]</last_name>
  <city>[имя]</city>
  <country>[имя]</country>
  <packages>
    <item>
      <id>[id слуги]</id>
      <type>[тип услуги]</type>
      <name>[название услуги]</name>
      <expire>[время окончания подписки]</expire>
    </item>
    <item>
      <id>2</id>
      <type>1</type>
      <name>Базовый</name>
      <expire>1673108501</expire>
    </item>
    <item>
      <id>3</id>
      <type>1</type>
      <name>Взрослый</name>
      <expire>1523115026</expire>
    </item>
    ...
  </packages>
 </account>
 <servertime>[время сервера]</servertime>
</response>

[channel_list] Список категорий и каналов

Описание метода

Возвращает список категорий и каналов в формате "категория -> каналы".

Формат запроса

httр://sapi.ott.st/v2.4/xml/channel_list?token=sessiontoken
Параметры запроса
Параметр Обязательный Описание
show_favorites Нет 1 - Отображать категорию Избранное


Формат ответа

<?xml version="1.0" encoding="utf-8"?>
<response>
  <groups>
    <item>
      <id>[идентификатор группы]</id>
      <name>[название группы]</name>
      <channels>
       <item>
         <id>[идентификатор канала]</id>
         <name>[Название канала]</name>
         <protected>[флаг защищенного видео 0/1, 1 - род. контроль]</protected>
         <timeshift>[кол-во часов архива, 0 - без архива]</timeshift>
         <favorite>[флаг наличия канала в избранном 0/1]</favorite>
         <epg>
           <title>[название текущей телепередачи]</title>
           <description>[описание телепередачи]</description>
           <start>[время начала передачи]</start>
           <end>[время окончания передачи]</end>
         </epg>
      </item>
      <item>
        <id>2</id>
        <name>Первый HD</name>
        <protected>0</protected>
        <timeshift>336</timeshift>
        <favorite>1</favorite>
        <epg>
         <title>Наедине со всеми</title>
         <description>
          Взгляд на судьбы людей через призму наиболее известных, серьезных и важных событий их жизни. Очень личный разговор Юлии Меньшовой с людьми, которые всем интересны.
         </description>
         <start>1641595800</start>
         <end>1641598500</end>
        </epg>
       </item>
     ...
    </channels>
  </item>
  ...
</groups>
<servertime>[время сервера]</servertime>
</response>

[channel_list2] Список категорий и каналов

Описание метода

Возвращает список категорий и каналов в формате "категории, каналы".

Формат запроса

httр://sapi.ott.st/v2.4/xml/channel_list2?token=sessiontoken
Параметры запроса
Параметр Обязательный Описание
show_favorites Нет 1 - Отображать категорию Избранное


Формат ответа

<?xml version="1.0" encoding="utf-8"?>
<response>
  <groups>
    <item>
      <id>[идентификатор группы]</id>
      <name>[название группы]</name>
    </item>
    <item>
     <id>1</id>
     <name>Main</name>
    </item>
    ...
  </groups>
  <channels>
   <item>
     <id>[идентификатор канала]</id>
     <name>[Название канала]</name>
     <protected>[флаг защищенного видео 0/1, 1 - род. контроль]</protected>
     <timeshift>[кол-во часов архива, 0 - без архива]</timeshift>
     <favorite>[флаг наличия канала в избранном 0/1]</favorite>
     <epg>
       <title>[название текущей телепередачи]</title>
       <description>[описание телепередачи]</description>
       <start>[время начала передачи]</start>
       <end>[время окончания передачи]</end>
     </epg>
   </item>
   <item>
     <id>2</id>
     <name>Первый HD</name>
     <protected>0</protected>
     <timeshift>336</timeshift>
     <favorite>1</favorite>
     <epg>
       <title>Наедине со всеми</title>
       <description>
          Взгляд на судьбы людей через призму наиболее известных, серьезных и важных событий их жизни. Очень личный разговор Юлии Меньшовой с людьми, которые всем интересны.
       </description>
       <start>1641595800</start>
       <end>1641598500</end>
     </epg>
    </item>
     ...
    </channels>
<servertime>[время сервера]</servertime>
</response>

[channel_list3] Список каналов в категории

Описание метода

Возвращает список каналов в категории.

Формат запроса

httр://sapi.ott.st/v2.4/xml/channel_list3?gid=<group_id>&token=sessiontoken
Параметры запроса
Параметр Обязательный Описание
gid Да ID категории каналов


Формат ответа

<?xml version="1.0" encoding="utf-8"?>
<response>
  <channels>
   <item>
     <id>[идентификатор канала]</id>
     <name>[Название канала]</name>
     <protected>[флаг защищенного видео 0/1, 1 - род. контроль]</protected>
     <timeshift>[кол-во часов архива, 0 - без архива]</timeshift>
     <favorite>[флаг наличия канала в избранном 0/1]</favorite>
     <epg>
       <title>[название текущей телепередачи]</title>
       <description>[описание телепередачи]</description>
       <start>[время начала передачи]</start>
       <end>[время окончания передачи]</end>
     </epg>
   </item>
   <item>
     <id>2</id>
     <name>Первый HD</name>
     <protected>0</protected>
     <timeshift>336</timeshift>
     <favorite>1</favorite>
     <epg>
       <title>Наедине со всеми</title>
       <description>
          Взгляд на судьбы людей через призму наиболее известных, серьезных и важных событий их жизни. Очень личный разговор Юлии Меньшовой с людьми, которые всем интересны.
       </description>
       <start>1641595800</start>
       <end>1641598500</end>
     </epg>
    </item>
     ...
    </channels>
<servertime>[время сервера]</servertime>
</response>

[get_channel] Информация о канале

Описание метода

Возвращает информацию о канале.

Формат запроса

httр://sapi.ott.st/v2.4/xml/get_channel?сid=<channel_id>&token=sessiontoken
Параметры запроса
Параметр Обязательный Описание
cid Да ID канала


Формат ответа

<?xml version="1.0" encoding="utf-8"?>
<response>
  <channel>
     <id>[идентификатор канала]</id>
     <name>[Название канала]</name>
     <protected>[флаг защищенного видео 0/1, 1 - род. контроль]</protected>
     <timeshift>[кол-во часов архива, 0 - без архива]</timeshift>
     <favorite>[флаг наличия канала в избранном 0/1]</favorite>
     <epg>
       <title>[название текущей телепередачи]</title>
       <description>[описание телепередачи]</description>
       <start>[время начала передачи]</start>
       <end>[время окончания передачи]</end>
     </epg>
    </channel>
<servertime>[время сервера]</servertime>
</response>

[epg] EPG для канала на день

Описание метода

Возвращает EPG для канала cid на определенный день day

Формат запроса

http://sapi.ott.st/v2.4/xml/epg?cid=<channel_id>&day=<DDMMYY>&token=sessiontoken
Параметры запроса
Параметр Обязательный Описание
cid Да ID канала
day Да День в формате DDMMYY. Например 080122 для 8 января 2022 г.

Формат ответа

<?xml version="1.0" encoding="utf-8"?>
<response>
  <epg>
   <item>
    <title>[название передачи]</title>
    <description>[описание передачи]</description>
    <start>[время начала передачи]</start>
    <end>[время окончания передачи]</end>
    <have_archive>[флаг наличия архива передачи 1/0]</have_archive>
   </item>
   <item>
    <title>Вечерний Unplugged</title>
    <description>
     Акустический проект "Вечерний Unplugged" станет крупнейшей концертной площадкой в стране на то время, пока мы все сидим дома и попасть на живой концерт невозможно. Гарик Сукачев, Баста, Валерий Сюткин, Uma2rman, Полина Гагарина, Евгений Маргулис, Дима Билан, Пелагея, Петр Налич и другие артисты порадуют зрителей Первого в самоизоляции.
    </description>
    <start>1641593100</start>
    <end>1641595800</end>
    <have_archive>1</have_archive>
   </item>
   ...
  <servertime>[время сервера]</servertime>
</response>

[epg2] EPG для канала на весь доступный период

Описание метода

Возвращает EPG для канала cid на весь доступный период. От -14 до +5 дней от текущей даты.

Формат запроса

http://sapi.ott.st/v2.4/xml/epg2?cid=<channel_id>&token=sessiontoken
Параметры запроса
Параметр Обязательный Описание
cid Да ID канала

Формат ответа

<?xml version="1.0" encoding="utf-8"?>
<response>
  <epg>
   <item>
    <title>[название передачи]</title>
    <description>[описание передачи]</description>
    <start>[время начала передачи]</start>
    <end>[время окончания передачи]</end>
    <have_archive>[флаг наличия архива передачи 1/0]</have_archive>
   </item>
   <item>
    <title>Вечерний Unplugged</title>
    <description>
     Акустический проект "Вечерний Unplugged" станет крупнейшей концертной площадкой в стране на то время, пока мы все сидим дома и попасть на живой концерт невозможно. Гарик Сукачев, Баста, Валерий Сюткин, Uma2rman, Полина Гагарина, Евгений Маргулис, Дима Билан, Пелагея, Петр Налич и другие артисты порадуют зрителей Первого в самоизоляции.
    </description>
    <start>1641593100</start>
    <end>1641595800</end>
    <have_archive>1</have_archive>
   </item>
   ...
  <servertime>[время сервера]</servertime>
</response>


[epg4] EPG для канала на 24 часа

Описание метода

Возвращает EPG для канала cid на 24 часа от указанного времени time.

Формат запроса

http://sapi.ott.st/v2.4/xml/epg4?cid=<channel_id>&time=<start_time>&token=sessiontoken
Параметры запроса
Параметр Обязательный Описание
cid Да ID канала
time Нет Время начала программы передач в формате unixtime. Если параметр не указан, берется текущее время.

Формат ответа

<?xml version="1.0" encoding="utf-8"?>
<response>
  <epg>
   <item>
    <title>[название передачи]</title>
    <description>[описание передачи]</description>
    <start>[время начала передачи]</start>
    <end>[время окончания передачи]</end>
    <have_archive>[флаг наличия архива передачи 1/0]</have_archive>
   </item>
   <item>
    <title>Вечерний Unplugged</title>
    <description>
     Акустический проект "Вечерний Unplugged" станет крупнейшей концертной площадкой в стране на то время, пока мы все сидим дома и попасть на живой концерт невозможно. Гарик Сукачев, Баста, Валерий Сюткин, Uma2rman, Полина Гагарина, Евгений Маргулис, Дима Билан, Пелагея, Петр Налич и другие артисты порадуют зрителей Первого в самоизоляции.
    </description>
    <start>1641593100</start>
    <end>1641595800</end>
    <have_archive>1</have_archive>
   </item>
   ...
  <servertime>[время сервера]</servertime>
</response>

[get_url] Получение URL для прямой трансляции или записи

Описание метода

Возвращает URL для канала cid на прямую трансляцию (live) или архивную запись (timeshift), есть указан параметр time.

Формат запроса

http://sapi.ott.st/v2.4/xml/get_url?cid=<channel_id>&time=<start_time>&aslive&token=sessiontoken
Параметры запроса
Параметр Обязательный Описание
cid Да ID канала
time Нет Если параметр указан, будет возвращен URL для архивной записи с временем начала записи time. Так же используется для перемотки.
aslive Нет Не принимает никакого значения. Если параметр указан, архивная запись будет идти не прерываясь, бесшовно, как эфир. Иначе URL генерируется для одной программы передач по EPG.
code Нет 4 цифры - код родительского контроля. Если канал защищен а код не передан, либо передан неверный код, то в тэге <url> возвращается "protected" вместо ссылки на поток.


Формат ответа

<?xml version="1.0" encoding="utf-8"?>
<response>
  <url>[URL потока]</url>
  <servertime>[время сервера]</servertime>
</response>

[favorites] Список избранного

Описание метода

Возвращает список ID избранных каналов.

Формат запроса

http://sapi.ott.st/v2.4/xml/favorites?token=sessiontoken

Формат ответа

<?xml version="1.0" encoding="utf-8"?>
<response>
 <favorites>
   <item>2</item>
   <item>164</item>
   ...
 </favorites>
 <servertime>[время сервера]</servertime>
</response>

[favorites_set] Работа со списком избранного

Описание метода

Добавляет или удаляет канал cid из списка избранного

Формат запроса

http://sapi.ott.st/v2.4/xml/favorites_set?cid=<channel_id>token=sessiontoken
Параметры запроса
Параметр Обязательный Описание
cid Да ID канала

Формат ответа

<?xml version="1.0" encoding="utf-8"?>
<response>
 <favorites>
   <channel_id>[id канала]</channel_id>
   <set>[1/0, 1-добавлен, 0-удален]</set>
  </favorites>
 <servertime>[время сервера]</servertime>
</response>


[group_list] Список категорий

Описание метода

Возвращает список доступных ТВ категорий

Формат запроса

http://sapi.ott.st/v2.4/xml/group_list?token=sessiontoken

Формат ответа

<?xml version="1.0" encoding="utf-8"?>
<response>
 <groups>
   <item>
     <id>100</id>
     <title>Favorites</title>
   </item>
   <item>
     <id>1</id>
     <title>Main</title>
   </item>
   ...
 </groups>
 <servertime>[время сервера]</servertime>
</response>


[server_list] Список серверов

Описание метода

Возвращает список доступных серверов вещания

Формат запроса

http://sapi.ott.st/v2.4/xml/server_list?token=sessiontoken

Формат ответа

<?xml version="1.0" encoding="utf-8"?>
<response>
 <servers>
   <item>
    <id>1</id>
    <name>Server 1</name>
   </item>
   <item>
    <id>2</id>
    <name>Server 2</name>
   </item>
 <servertime>[время сервера]</servertime>
</response>