API — различия между версиями
TVclub (обсуждение | вклад) |
TVclub (обсуждение | вклад) (→Спрайты логотипов) |
||
(не показано 177 промежуточных версий этого же участника) | |||
Строка 1: | Строка 1: | ||
+ | =Изменения= | ||
+ | '''12.10.2017''' | ||
+ | * Для метода '''groups''' добавлен необязательный параметр '''favorites''' для отображения группы "Избранное" в списке. | ||
+ | '''27.09.2017''' | ||
+ | * Изменение в описании спрайтов. | ||
+ | '''10.09.2017''' | ||
+ | * Добавлены спрайты логотипов каналов. | ||
+ | '''21.08.2017''' | ||
+ | * Обновлен метод '''search''', добавлены параметры group_soon, group_now, group_archive. | ||
+ | '''20.08.2017''' | ||
+ | * Добавлен метод '''search''' для поиска по программе передач | ||
+ | '''23.06.2017''' | ||
+ | * Для метода channels добавлен параметр epg, который может принимать единственное значение epg=no и служит для отключения секции epg в выводе. Например, для оптимизации и ускорения вывода списка каналов, когда информация о EPG не требуется. | ||
+ | * В метод account -> info добавлены значения: | ||
+ | :: id - лицевой счет клиента. | ||
+ | :: balance - неиспользованный баланс клиента. | ||
+ | '''01.05.2017''' | ||
+ | * Для метода set_favorites добавлен параметр set. В качестве аргумента могут выступать: | ||
+ | :: a) Список ID каналов через запятую для установки нового списка избранного состоящего из указанных каналов в указанном порядке.<br/> | ||
+ | :: b) 0 - для полной очистки списка избранного.<br/> | ||
+ | |||
+ | '''21.03.2017''' | ||
+ | * Для метода channels параметр gid может быть равным 100 (gid=100) - это позволяет получить список избранного как группы. | ||
+ | |||
+ | '''20.02.2017''' | ||
+ | * Для метода channels добавлен параметр filter_cname - фильтр по названию канала. | ||
+ | * В метод epg -> channels -> epg добавлены значения: | ||
+ | :: recorded - указатель наличия архива передачи. | ||
+ | :: live - 1 если передача идет на текущий момент, отсутствует если иначе. | ||
+ | |||
+ | =Описание= | ||
+ | В данной статье описывается возможное взаимодействие между клиентом и сервером API сервиса TVclub.us. Данное API проходит стадию тестирования, может изменяться и дополняться без предварительного уведомления. По всем вопросам, просьбам и предложениям пишите на почту <span style="color:green">support@tvclub.us</span>. | ||
+ | |||
+ | <div style="color:red">Приглашаем разработчиков для тестирования API</div> | ||
+ | |||
+ | |||
+ | При использовании данного API, сервис TVClub.us оставляет за собой право размещения ссылки и/или архива файлов (плагинов, приложений, виджетов и прочего ПО) использующих данное API с указанием разработчика. | ||
+ | |||
+ | =Требования= | ||
+ | *Поддержка HTTP 1.0 | ||
+ | *Поддержка HTTP redirect (301,302) | ||
+ | *Поддержка [http://ru.wikipedia.org/wiki/XML XML] или [http://ru.wikipedia.org/wiki/JSON JSON] форматов данных | ||
+ | *Поддержка видео-кодека H.264, аудио-кодека AAC, контейнеров mpeg-ts и mp4 | ||
+ | |||
+ | =Договоренности= | ||
+ | * Все временные метки только в формате Unixtime | ||
+ | * Boolean значение имеет следующее обозначение: положительное - 1, отрицательное - 0» | ||
+ | * Кодировка UTF8. | ||
+ | |||
=Общие обозначения= | =Общие обозначения= | ||
*<FORMAT_TYPE> - формат возврата ответа от сервера. Доступны формат XML и JSON. | *<FORMAT_TYPE> - формат возврата ответа от сервера. Доступны формат XML и JSON. | ||
− | *<API_VERSION> - Версия API. Текущая версия | + | *<API_VERSION> - Версия API. Текущая версия 0.8 |
*<SERVERTIME> - Текущее время на сервере. | *<SERVERTIME> - Текущее время на сервере. | ||
− | *<TOKEN_ID> - Уникальный ключ token. | + | *<TOKEN_ID> - Уникальный ключ token полученный в результате авторизации. |
− | *<TOKEN_EXPIRE> - | + | *<TOKEN_EXPIRE> - время до которого ключ token будет актуален. |
+ | |||
+ | =Постраничный вывод= | ||
+ | Возврат некоторых ответов от сервера может иметь постраничный вывод. При этом действуют общие правила манипуляцией вывода с помощью следующих параметров: | ||
+ | ::'''limit''' - лимит количества записей для одной выборки для опорной единицы. Например - количество каналов метода epg. Значение может быть от 1 до 200. | ||
+ | ::'''start''' - номер элемента опорной единицы с которого производится выборка. Параметр не учитывается, если иcпользуется параметр page. | ||
+ | ::'''page''' - номер страницы для постраничного вывода. | ||
+ | |||
+ | ===Пример запроса=== | ||
+ | <pre>http://api.iptv.so/<API_VERSION>/<FORMAT_TYPE>/<API_METHOD>?hash=<HASH>&limit=14&page=3</pre> | ||
+ | |||
+ | ===Формат полученных данных=== | ||
+ | {| class="wikitable" style="float:left; margin-right:20px" | ||
+ | |+XML | ||
+ | |- | ||
+ | |<pre> | ||
+ | <response> | ||
+ | <info> | ||
+ | <limit><ITEMS_LIMIT></limit> | ||
+ | <count><ITEMS_COUNT></count> | ||
+ | <pages><ITEMS_PAGES></pages> | ||
+ | <page><ITEMS_CURRENT_PAGE></page> | ||
+ | </info> | ||
+ | <API_METHOD> | ||
+ | ... | ||
+ | </API_METHOD> | ||
+ | <session> | ||
+ | <token><TOKEN_ID></token> | ||
+ | <expire><TOKEN_EXPIRE></expire> | ||
+ | <now><SERVERTIME></now> | ||
+ | </session> | ||
+ | </response> | ||
+ | </pre> | ||
+ | |} | ||
+ | {| class="wikitable" | ||
+ | |+JSON | ||
+ | |- | ||
+ | |<pre> | ||
+ | { | ||
+ | "info": { | ||
+ | "limit": <ITEMS_LIMIT>, | ||
+ | "count": <ITEMS_COUNT>, | ||
+ | "pages": <ITEMS_PAGES>, | ||
+ | "page": <ITEMS_CURRENT_PAGE> | ||
+ | }, | ||
+ | <API_METHOD>: { | ||
+ | ... | ||
+ | }, | ||
+ | "session": { | ||
+ | "token": <TOKEN_ID>, | ||
+ | "expire": <TOKEN_EXPIRE>, | ||
+ | "now": <SERVERTIME> | ||
+ | } | ||
+ | } | ||
+ | </pre> | ||
+ | |} | ||
+ | <div style="clear:both"></div> | ||
+ | |||
+ | :'''info''' - информация о постраничном выводе | ||
+ | ::'''ITEMS_LIMIT''' - общее количество записей | ||
+ | ::'''ITEMS_COUNT''' - количество единиц на текущей странице | ||
+ | ::'''ITEMS_PAGES''' - общее количество страниц | ||
+ | ::'''ITEMS_CURRENT_PAGE''' - номер текущей страницы | ||
+ | |||
+ | =Логотипы каналов= | ||
+ | |||
+ | Доступны несколько размеров и форматов логотипов. | ||
+ | |||
+ | Получить иконку для канала с ID = CH_ID и в формате LOGO_FORMAT можно с помощью URL: | ||
+ | |||
+ | <pre>http://api.iptv.so/logo/<LOGO_FORMAT>/<CH_ID>.png</pre> | ||
+ | |||
+ | '''Доступные форматы:''' | ||
+ | [[Файл:Logo_original.png|thumb|left|*'''original''' - 490x280 без рамки]] | ||
+ | |||
+ | [[Файл:Logo_490_280_1.png|thumb|left|*'''490_280_1''' - 490x280 c рамкой]] | ||
+ | |||
+ | |||
+ | |||
+ | *'''original''' - 490x280 без рамки | ||
+ | *'''490_280_1''' - 490x280 с рамкой | ||
+ | *'''36_36_0''' - 36x36 без рамки | ||
+ | *'''36_36_1''' - 36x36 с рамкой | ||
+ | |||
+ | *'''48_48_0''' - 48x48 без рамки | ||
+ | *'''48_48_1''' - 48x48 с рамкой | ||
+ | |||
+ | *'''72_72_0''' - 72x72 без рамки | ||
+ | *'''72_72_1''' - 72x72 с рамкой | ||
+ | |||
+ | *'''90_50_0''' - 90x50 без рамки | ||
+ | *'''90_50_1''' - 90x50 с рамкой | ||
+ | |||
+ | *'''96_96_0''' - 96x96 без рамки | ||
+ | *'''96_96_1''' - 96x96 с рамкой | ||
+ | |||
+ | *'''200_115_0''' - 200x115 без рамки | ||
+ | *'''200_115_1''' - 200x115 с рамкой | ||
+ | |||
+ | *'''300_170_0''' - 300x170 без рамки | ||
+ | *'''300_170_1''' - 300x170 с рамкой | ||
+ | |||
+ | |||
+ | <div style="clear:both"></div> | ||
+ | |||
+ | =Спрайты логотипов= | ||
+ | |||
+ | ''<font color="#45678">Sprite Sheet — это одно большое изображение мелких графических элементов, в данном случае - это логотипы каналов. Благодаря CSS можно отображать каждый элемент отдельно не загружая при этом массу мелких изображений. Главным преимуществом использования спрайтов является однократная загрузка клиентом сразу всех элементов в одном файле тем самым значительно сокращая количество HTTP-запросов к серверу.</font>'' | ||
+ | :: | ||
+ | :: | ||
+ | '''Доступные форматы <SPRITE_FORMAT>:''' | ||
+ | *'''90_50_0''' - 90x50 без рамки | ||
+ | *'''90_50_1''' - 90x50 с рамкой | ||
+ | |||
+ | Получить спрайт иконок размером <SPRITE_FORMAT> можно с помощью URL: | ||
+ | <pre>http://api.iptv.so/sprite/<SPRITE_FORMAT>.png</pre> | ||
+ | |||
+ | Позиции иконок в спрайте указаны в файле: | ||
+ | <pre>http://api.iptv.so/sprite/<SPRITE_FORMAT>.json</pre> | ||
+ | Файл представляет собой массив данных в json формате: <br/> | ||
+ | <pre>{"name":"<SPRITE_FORMAT>","size":"<SPRITE_SIZE>","nums":"<SPRITE_ROWS>","hash":"<SPRITE_HASH>","data": {"<CH_ID>": {"x":<CORD_X>,"y":<CORD_Y>,"a":<POS_X>,"b":<POS_Y>}, ...}}</pre><br/> | ||
+ | Где:<br/> | ||
+ | ::'''<SPRITE_SIZE>''' - размер спрайта в пикселях. | ||
+ | ::'''<SPRITE_ROWS>''' - количество логотипов в спрайте по ширине и высоте. | ||
+ | ::'''<SPRITE_HASH>''' - уникальный хеш спрайта, используется для сверки изменений. Если хеш изменился, необходимо загрузить спрайт снова так как он был изменен. | ||
+ | ::'''<CH_ID>''' - ID канала. | ||
+ | ::'''<CORD_X>''' - координаты логотипа по оси X. | ||
+ | ::'''<CORD_Y>''' - координаты логотипа по оси Y. | ||
+ | ::'''<POS_X>''' - позиция от левого верхнего угла в пикселях по оси X. | ||
+ | ::'''<POS_Y>''' - позиция от левого верхнего угла в пикселях по оси Y. | ||
+ | |||
+ | :: | ||
+ | Если по какой-то причине не обнаружены координаты необходимого логотипа, используйте позицию X=0 и Y=0 для установки заглушки "No Image" из спрайта. Такое может случится, например, если были добавлены новые каналы, а спрайты еще не сгенерированы. | ||
=Методы= | =Методы= | ||
+ | |||
== [auth] Авторизация == | == [auth] Авторизация == | ||
+ | '''<span style="color:red">Внимание!</span>'''<br/> | ||
+ | 06.01.2017 были внесены изменения в алгоритм авторизации. Token, ключ, который используется для вызова остальных процедур API, теперь всегда равен MD5(<USER_LOGIN> + MD5(<USER_PASSWORD>)). | ||
+ | '''Таким образом в этапе авторизации теперь нет необходимости и этот шаг можно (нужно) пропустить, так как зная логин и пароль известен и token'''. А для получении информации об аккаунте используется метод '''account'''. | ||
+ | |||
===Описание метода=== | ===Описание метода=== | ||
− | Самым первым запросом на сервер API всегда должен быть запрос на авторизацию клиента. В случае успеха, сервер вернет информацию о аккаунте клиента и информации о созданной сессии в которой содержится уникальный ключ - token, для доступа к остальным методам API. Без этого ключа вызов других методов API невозможен. | + | <span style="color:red">(ДО 06.01.2017!!!)</span> <span style="color:#cccccc">Самым первым запросом на сервер API всегда должен быть запрос на авторизацию клиента. В случае успеха, сервер вернет информацию о аккаунте клиента и информации о созданной сессии в которой содержится уникальный ключ - token, для доступа к остальным методам API. Без этого ключа вызов других методов API невозможен.</span> |
===Формат запроса=== | ===Формат запроса=== | ||
<pre>http://api.iptv.so/<API_VERSION>/<FORMAT_TYPE>/auth?hash=<HASH></pre> | <pre>http://api.iptv.so/<API_VERSION>/<FORMAT_TYPE>/auth?hash=<HASH></pre> | ||
'''HASH''' - это MD5-хеш полученный в результате конкатенации логина пользователя и MD5-хеша пароля пользователя - MD5(<USER_LOGIN> + MD5(<USER_PASSWORD>)) | '''HASH''' - это MD5-хеш полученный в результате конкатенации логина пользователя и MD5-хеша пароля пользователя - MD5(<USER_LOGIN> + MD5(<USER_PASSWORD>)) | ||
− | |||
===Примеры запроса=== | ===Примеры запроса=== | ||
'''PHP''' | '''PHP''' | ||
− | <pre>$data=file_get_contents('http://api.iptv.so/ | + | <pre>$data=file_get_contents('http://api.iptv.so/0.8/xml/auth?hash='.MD5($login.MD5($password)));</pre> |
Строка 32: | Строка 217: | ||
<account> | <account> | ||
<info> | <info> | ||
+ | <id><USER_ID></id> | ||
<login><USER_LOGIN></login> | <login><USER_LOGIN></login> | ||
<mail><USER_EMAIL></mail> | <mail><USER_EMAIL></mail> | ||
<name><USER_NAME></name> | <name><USER_NAME></name> | ||
+ | <balance><USER_BALANCE></balance> | ||
</info> | </info> | ||
<options> | <options> | ||
Строка 66: | Строка 253: | ||
|+JSON | |+JSON | ||
|- | |- | ||
− | |<pre>{ "account": { | + | |<pre>{ |
+ | "account": { | ||
"info": { | "info": { | ||
+ | "id": <USER_ID>, | ||
"login": <USER_LOGIN>, | "login": <USER_LOGIN>, | ||
"mail": <USER_EMAIL>, | "mail": <USER_EMAIL>, | ||
− | "name": <USER_NAME> | + | "name": <USER_NAME>, |
+ | "balance": <USER_BALANCE>, | ||
}, | }, | ||
"options": { | "options": { | ||
− | <OPTION_NAME>: 1|0 | + | <OPTION_NAME>: 1|0, |
+ | ... | ||
}, | }, | ||
"services": [ | "services": [ | ||
Строка 104: | Строка 295: | ||
'''account''' - содержит в себе | '''account''' - содержит в себе | ||
:: '''info''' - информация о аккаунте клиента | :: '''info''' - информация о аккаунте клиента | ||
+ | ::::'''USER_ID''' - лицевой счет клиента | ||
::::'''USER_LOGIN''' - логин клиента | ::::'''USER_LOGIN''' - логин клиента | ||
::::'''USER_EMAIL''' - e-mail клиента | ::::'''USER_EMAIL''' - e-mail клиента | ||
::::'''USER_NAME''' - имя клиента | ::::'''USER_NAME''' - имя клиента | ||
+ | ::::'''USER_BALANCE''' - неиспользованный баланс клиента | ||
:: '''options''' - список доступных | :: '''options''' - список доступных | ||
::::'''OPTION_NAME''' - имя опции, может принимать значение 1 - доступно или 0 - недоступно для клиента. | ::::'''OPTION_NAME''' - имя опции, может принимать значение 1 - доступно или 0 - недоступно для клиента. | ||
Строка 123: | Строка 316: | ||
::::'''TOKEN_EXPIRE''' - время до которого действителен текущий ключ доступа. При каждом успешном запросе срок жизни ключа продлевается до 24-х часов с текущей даты. | ::::'''TOKEN_EXPIRE''' - время до которого действителен текущий ключ доступа. При каждом успешном запросе срок жизни ключа продлевается до 24-х часов с текущей даты. | ||
::::'''SERVERTIME''' - текущее время на сервере | ::::'''SERVERTIME''' - текущее время на сервере | ||
− | |||
− | |||
− | |||
== [account] Аккаунт == | == [account] Аккаунт == | ||
===Описание метода=== | ===Описание метода=== | ||
− | Возвращает ту же информацию, что и метод [http://wiki.tvclub.us/index.php?title=API#.5Bauth.5D_.D0.90.D0.B2.D1.82.D0.BE.D1.80.D0.B8.D0.B7.D0.B0.D1.86.D0.B8.D1.8F auth]. Может использоваться для получения информации об аккаунте без повторной авторизации. | + | Возвращает ту же информацию, что и метод [http://wiki.tvclub.us/index.php?title=API#.5Bauth.5D_.D0.90.D0.B2.D1.82.D0.BE.D1.80.D0.B8.D0.B7.D0.B0.D1.86.D0.B8.D1.8F auth]. Может использоваться для получения текущей информации об аккаунте без повторной авторизации. |
− | |||
===Формат запроса=== | ===Формат запроса=== | ||
Строка 175: | Строка 364: | ||
<div style="clear:both"></div> | <div style="clear:both"></div> | ||
− | |||
− | |||
− | |||
− | http://api.iptv.so/1. | + | == [groups] Список ТВ категорий== |
+ | ===Описание метода=== | ||
+ | Возвращает полный список доступных для клиента ТВ категорий. | ||
+ | |||
+ | |||
+ | ===Формат запроса=== | ||
+ | <pre>http://api.iptv.so/<API_VERSION>/<FORMAT_TYPE>/groups?token=<TOKEN_ID></pre> | ||
+ | :Необязательные параметры: | ||
+ | ::favorites - если параметр присутствует и равен 1, то отображать в списке группу "Избранное". | ||
+ | |||
+ | ===Формат полученных данных=== | ||
+ | {| class="wikitable" style="float:left; margin-right:20px" | ||
+ | |+XML | ||
+ | |- | ||
+ | |<pre> | ||
+ | <response> | ||
+ | <groups> | ||
+ | <item> | ||
+ | <name_ru><GROUP_ID></name_ru> | ||
+ | <name_ru><GROUP_NAME_RU></name_ru> | ||
+ | <name_en><GROUP_NAME_EN></name_en> | ||
+ | <count><GROUP_CHANNELS_COUNT></count> | ||
+ | </item> | ||
+ | ... | ||
+ | </groups> | ||
+ | <session> | ||
+ | <token><TOKEN_ID></token> | ||
+ | <expire><TOKEN_EXPIRE></expire> | ||
+ | <now><SERVERTIME></now> | ||
+ | </session> | ||
+ | </response> | ||
+ | </pre> | ||
+ | |} | ||
+ | {| class="wikitable" | ||
+ | |+JSON | ||
+ | |- | ||
+ | |<pre>{ | ||
+ | "groups": [ | ||
+ | { | ||
+ | "id": <GROUP_ID>, | ||
+ | "name_ru": <GROUP_NAME_RU>, | ||
+ | "name_en": <GROUP_NAME_EN>, | ||
+ | "count": <GROUP_CHANNELS_COUNT> | ||
+ | }, | ||
+ | ... | ||
+ | ], | ||
+ | "session": { | ||
+ | "token": <TOKEN_ID>, | ||
+ | "expire": <TOKEN_EXPIRE>, | ||
+ | "now": <SERVERTIME> | ||
+ | } | ||
+ | } | ||
+ | </pre> | ||
+ | |} | ||
+ | <div style="clear:both"></div> | ||
+ | |||
+ | |||
+ | ===Описание полученных данных=== | ||
+ | '''groups''' - содержит в себе | ||
+ | :: '''GROUP_ID''' - ID группы | ||
+ | :: '''GROUP_NAME_RU''' - Имя группы на русском языке | ||
+ | :: '''GROUP_NAME_EN''' - Имя группы на английском языке | ||
+ | :: '''GROUP_CHANNELS_COUNT''' - Количество каналов доступных для клиента в этой группе | ||
+ | |||
+ | == [channels] Список каналов в группе== | ||
+ | |||
+ | ===Описание метода=== | ||
+ | Возвращает '''постраничный''' список доступных для клиента каналов в определенной категории. | ||
+ | |||
+ | ===Формат запроса=== | ||
+ | <pre>http://api.iptv.so/<API_VERSION>/<FORMAT_TYPE>/channels?token=<TOKEN_ID>&gid=<GROUP_ID>&sort=1&limit=20&page=1</pre> | ||
+ | :Обязательные параметры: | ||
+ | ::gid - ID группы каналов. gid=100 для вывода избранного как группы каналов. | ||
+ | :Необязательные параметры: | ||
+ | ::sort - способ сортировки. Доступные значения: 1 - сортировка по умолчанию, 2 - по ID канала, 3 - по имени канала. | ||
+ | ::filter_cname - фильтр по названию канала. | ||
+ | ::epg - для ускорения обработки запроса при необходимости можно отключить вывод секции epg на каналах указав параметр epg=no. | ||
+ | |||
+ | ===Формат полученных данных=== | ||
+ | {| class="wikitable" style="float:left; margin-right:20px" | ||
+ | |+XML | ||
+ | |- | ||
+ | |<pre> | ||
+ | <response> | ||
+ | <channels> | ||
+ | <item> | ||
+ | <info> | ||
+ | <id><CH_ID></id> | ||
+ | <name><CH_NAME></name> | ||
+ | <groups><CH_GROUPS></groups> | ||
+ | <protected><CH_PROTECTED_FLAG></protected> | ||
+ | <records><CH_REC_HOURS></records> | ||
+ | <favorite><CH_IS_FAVORITE></favorite> | ||
+ | </info> | ||
+ | <epg> | ||
+ | <text><CH_PROG_TEXT></text> | ||
+ | <start><CH_PROG_START></start> | ||
+ | <end><CH_PROG_END></end> | ||
+ | <description><CH_PROG_DESC></description> | ||
+ | </epg> | ||
+ | </item> | ||
+ | ... | ||
+ | </channels> | ||
+ | <session> | ||
+ | <token><TOKEN_ID></token> | ||
+ | <expire><TOKEN_EXPIRE></expire> | ||
+ | <now><SERVERTIME></now> | ||
+ | </session> | ||
+ | </response> | ||
+ | </pre> | ||
+ | |} | ||
+ | {| class="wikitable" | ||
+ | |+JSON | ||
+ | |- | ||
+ | |<pre>{ | ||
+ | "channels": [ | ||
+ | { | ||
+ | "info": { | ||
+ | "id": <CH_ID>, | ||
+ | "name": <CH_NAME>, | ||
+ | "groups": <CH_GROUPS>, | ||
+ | "protected": <CH_PROTECTED_FLAG>, | ||
+ | "records": <CH_REC_HOURS>, | ||
+ | "favorite": <CH_IS_FAVORITE>, | ||
+ | }, | ||
+ | "epg": [ | ||
+ | "text": <CH_PROG_TEXT>, | ||
+ | "start": <CH_PROG_START>, | ||
+ | "end": <CH_PROG_END>, | ||
+ | "description": <CH_PROG_DESC> | ||
+ | ] | ||
+ | }, | ||
+ | ... | ||
+ | ], | ||
+ | "session": { | ||
+ | "token": <TOKEN_ID>, | ||
+ | "expire": <TOKEN_EXPIRE>, | ||
+ | "now": <SERVERTIME> | ||
+ | } | ||
+ | } | ||
+ | </pre> | ||
+ | |} | ||
+ | <div style="clear:both"></div> | ||
+ | |||
+ | ===Описание полученных данных=== | ||
+ | '''channels''' - содержит массив данных | ||
+ | :: '''info''' - общая информация о канале | ||
+ | ::::'''CH_ID''' - ID канала | ||
+ | ::::'''CH_NAME''' - имя канала | ||
+ | ::::'''CH_GROUPS''' - ID категорий канала перечисленных через запятую | ||
+ | ::::'''CH_PROTECTED_FLAG''' - указывает закрыт ли канал кодом доступа, значение 1 или 0. | ||
+ | ::::'''CH_REC_HOURS''' - наличие архива на канале в часах, 0 - архив отсутствует | ||
+ | ::::'''CH_IS_FAVORITE''' - наличие канала в избранном, значение 1 или 0. | ||
+ | :: '''epg''' - информация о текущей программе передач. Пустой элемент, если телепрограмма не доступна. | ||
+ | ::::'''CH_PROG_TEXT''' - название текущей передачи | ||
+ | ::::'''CH_PROG_START''' - время начала передачи | ||
+ | ::::'''CH_PROG_END''' - время окончания передачи | ||
+ | ::::'''CH_PROG_DESC''' - описание передачи. Отсутствует, если описание недоступно. | ||
+ | |||
+ | == [servers] Список доступных серверов == | ||
+ | ===Описание метода=== | ||
+ | Получение списка доступных серверов | ||
+ | |||
+ | ===Формат запроса=== | ||
+ | <pre>http://api.iptv.so/<API_VERSION>/<FORMAT_TYPE>/servers?token=<TOKEN_ID></pre> | ||
+ | |||
+ | ===Формат полученных данных=== | ||
+ | {| class="wikitable" style="float:left; margin-right:20px" | ||
+ | |+XML | ||
+ | |- | ||
+ | |<pre> | ||
+ | <response> | ||
+ | <servers> | ||
+ | <item> | ||
+ | <id><SERVER_ID></id> | ||
+ | <name><SERVER_NAME></name> | ||
+ | <load><SERVER_LOAD></load> | ||
+ | <power><SERVER_POWER></power> | ||
+ | </item> | ||
+ | ... | ||
+ | </servers> | ||
+ | <session> | ||
+ | <token><TOKEN_ID></token> | ||
+ | <expire><TOKEN_EXPIRE></expire> | ||
+ | <now><SERVERTIME></now> | ||
+ | </session> | ||
+ | </response> | ||
+ | </pre> | ||
+ | |} | ||
+ | {| class="wikitable" | ||
+ | |+JSON | ||
+ | |- | ||
+ | |<pre>{ | ||
+ | "servers": [ | ||
+ | { | ||
+ | "id": <SERVER_ID>, | ||
+ | "name": <SERVER_NAME>, | ||
+ | "load": <SERVER_LOAD>, | ||
+ | "power": <SERVER_POWER>, | ||
+ | }, | ||
+ | ... | ||
+ | ], | ||
+ | "session": { | ||
+ | "token": <TOKEN_ID>, | ||
+ | "expire": <TOKEN_EXPIRE>, | ||
+ | "now": <SERVERTIME> | ||
+ | } | ||
+ | } | ||
+ | </pre> | ||
+ | |} | ||
+ | <div style="clear:both"></div> | ||
+ | |||
+ | ===Описание полученных данных=== | ||
+ | '''servers''' - содержит: | ||
+ | ::::'''SERVER_ID''' - ID сервера | ||
+ | ::::'''SERVER_NAME''' - отображаемое имя сервера | ||
+ | ::::'''SERVER_LOAD''' - нагрузка на сервер в процентах | ||
+ | ::::'''SERVER_POWER''' - мощность сервера | ||
+ | |||
− | |||
− | |||
− | == [live] Получение ссылки на трансляцию== | + | == [live] Получение ссылки на прямую трансляцию== |
− | + | ===Описание метода=== | |
+ | Метод возвращает краткую информацию по каналу и ссылку на поток его прямой трансляции. | ||
+ | *Ссылка на поток должна быть использована в течении 5 минут | ||
+ | *Ссылка на поток привязана к IP клиента полученного в результате его запроса на сервер API. | ||
+ | *Ссылка на поток привязана к серверу вещания для которого она была получена. | ||
− | |||
− | == | + | ===Формат запроса=== |
+ | <pre>http://api.iptv.so/<API_VERSION>/<FORMAT_TYPE>/live?token=<TOKEN_ID>&cid=<CH_ID>&protected=<CODE></pre> | ||
+ | :Обязательные параметры: | ||
+ | ::cid - ID телеканала. | ||
+ | :Необязательные параметры: | ||
+ | ::protected - код родительского контроля, высылается в активационном письме. По умолчанию равен 0000 (четыре ноля). | ||
− | http://api.iptv.so/1.0/ | + | ===Формат полученных данных=== |
+ | {| class="wikitable" style="float:left; margin-right:20px" | ||
+ | |+XML | ||
+ | |- | ||
+ | |<pre> | ||
+ | <response> | ||
+ | <live> | ||
+ | <channel> | ||
+ | <id><CH_ID></id> | ||
+ | <name><CH_NAME></name> | ||
+ | <protected><CH_PROTECTED_FLAG></protected> | ||
+ | <records><CH_REC_HOURS></records> | ||
+ | </channel> | ||
+ | <url><LIVE_URL></url> | ||
+ | </live> | ||
+ | <session> | ||
+ | <token><TOKEN_ID></token> | ||
+ | <expire><TOKEN_EXPIRE></expire> | ||
+ | <now><SERVERTIME></now> | ||
+ | </session> | ||
+ | </response> | ||
+ | </pre> | ||
+ | |} | ||
+ | {| class="wikitable" | ||
+ | |+JSON | ||
+ | |- | ||
+ | |<pre>{ | ||
+ | "live": { | ||
+ | "channel": { | ||
+ | "id": <CH_ID>, | ||
+ | "name": <CH_NAME>, | ||
+ | "protected": <CH_PROTECTED_FLAG>, | ||
+ | "records": <CH_REC_HOURS> | ||
+ | }, | ||
+ | "url": <LIVE_URL> | ||
+ | }, | ||
+ | "session": { | ||
+ | "token": <TOKEN_ID>, | ||
+ | "expire": <TOKEN_EXPIRE>, | ||
+ | "now": <SERVERTIME> | ||
+ | } | ||
+ | } | ||
+ | </pre> | ||
+ | |} | ||
+ | <div style="clear:both"></div> | ||
+ | |||
+ | |||
+ | ===Описание полученных данных=== | ||
+ | '''live''' - содержит: | ||
+ | :: '''channel''' - общая информация о канале | ||
+ | ::::'''CH_ID''' - ID канала | ||
+ | ::::'''CH_NAME''' - имя канала | ||
+ | ::::'''CH_PROTECTED_FLAG''' - указывает закрыт ли канал кодом доступа, значение 1 или 0. | ||
+ | ::::'''CH_REC_HOURS''' - наличие архива на канале в часах, 0 - архив отсутствует | ||
+ | :: '''url''' | ||
+ | ::::'''<LIVE_URL>''' - прямая ссылка на прямую трансляцию | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | == [rec] Получение ссылки на запись== | ||
+ | |||
+ | ===Описание метода=== | ||
+ | Метод возвращает краткую информацию по каналу, информацию о текущей программе передач на указанную дату и ссылку на архивную запись. | ||
+ | *Ссылка на поток должна быть использована в течении 5 минут | ||
+ | *Ссылка на поток привязана к IP клиента полученного в результате его запроса на сервер API. | ||
+ | *Ссылка на поток привязана к серверу вещания для которого она была получена. | ||
+ | *Запись начинается с времени указанного в параметре time. | ||
+ | *Параметр time может использоваться как способ перемотки. | ||
+ | *Длинна записи = <CH_PROG_END> - <CH_PROG_START>. | ||
+ | *Начало записи = <REC_START_TIME> | ||
+ | *Конец записи = <CH_PROG_END> | ||
+ | |||
+ | ===Формат запроса=== | ||
+ | <pre>http://api.iptv.so/<API_VERSION>/<FORMAT_TYPE>/rec?token=<TOKEN_ID>&cid=<CH_ID>&time=<REC_START_TIME>&protected=<CODE></pre> | ||
+ | :Обязательные параметры: | ||
+ | ::cid - ID телеканала. | ||
+ | ::time - Время с которого начинается запись. | ||
+ | :Необязательные параметры: | ||
+ | ::protected - код родительского контроля для закрытых каналов, высылается в активационном письме. По умолчанию равен 0000 (четыре ноля). | ||
+ | |||
+ | ===Формат полученных данных=== | ||
+ | {| class="wikitable" style="float:left; margin-right:20px" | ||
+ | |+XML | ||
+ | |- | ||
+ | |<pre> | ||
+ | <response> | ||
+ | <rec> | ||
+ | <channel> | ||
+ | <id><CH_ID></id> | ||
+ | <name><CH_NAME></name> | ||
+ | <protected><CH_PROTECTED_FLAG></protected> | ||
+ | <title><CH_PROG_TEXT></title> | ||
+ | <start><CH_PROG_START></start> | ||
+ | <end><CH_PROG_END></end> | ||
+ | <records><CH_REC_HOURS></records> | ||
+ | </channel> | ||
+ | <url><REC_URL></url> | ||
+ | </rec> | ||
+ | <session> | ||
+ | <token><TOKEN_ID></token> | ||
+ | <expire><TOKEN_EXPIRE></expire> | ||
+ | <now><SERVERTIME></now> | ||
+ | </session> | ||
+ | </response> | ||
+ | </pre> | ||
+ | |} | ||
+ | {| class="wikitable" | ||
+ | |+JSON | ||
+ | |- | ||
+ | |<pre>{ | ||
+ | "rec": { | ||
+ | "channel": { | ||
+ | "id": <CH_ID>, | ||
+ | "name": <CH_NAME>, | ||
+ | "protected": <CH_PROTECTED_FLAG>, | ||
+ | "title": <CH_PROG_TEXT>, | ||
+ | "start": <CH_PROG_START>, | ||
+ | "end": <CH_PROG_END>, | ||
+ | "records": <CH_REC_HOURS> | ||
+ | }, | ||
+ | "url": <REC_URL> | ||
+ | }, | ||
+ | "session": { | ||
+ | "token": <TOKEN_ID>, | ||
+ | "expire": <TOKEN_EXPIRE>, | ||
+ | "now": <SERVERTIME> | ||
+ | } | ||
+ | } | ||
+ | </pre> | ||
+ | |} | ||
+ | <div style="clear:both"></div> | ||
+ | |||
+ | |||
+ | ===Описание полученных данных=== | ||
+ | '''rec''' - содержит: | ||
+ | :: '''channel''' - общая информация о канале | ||
+ | ::::'''CH_ID''' - ID канала | ||
+ | ::::'''CH_NAME''' - имя канала | ||
+ | ::::'''CH_PROTECTED_FLAG''' - указывает закрыт ли канал кодом доступа, значение 1 или 0. | ||
+ | ::::'''CH_PROG_TEXT''' - название текущей передачи | ||
+ | ::::'''CH_PROG_START''' - время начала передачи | ||
+ | ::::'''CH_PROG_END''' - время окончания передачи | ||
+ | ::::'''CH_REC_HOURS''' - наличие архива на канале в часах, 0 - архив отсутствует | ||
+ | :: '''url''' | ||
+ | ::::'''<REC_URL>''' - прямая ссылка архивную запись | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ==[epg] Работа с телепрограммой== | ||
+ | |||
+ | ===Описание метода=== | ||
+ | Возвращает '''постраничный список телеканалов''' с телепрограммой в зависимости от указанных параметров. | ||
+ | |||
+ | ===Формат запроса=== | ||
+ | <pre>http://api.iptv.so/<API_VERSION>/<FORMAT_TYPE>/epg?token=<TOKEN_ID>&gid=<GROUP_ID>&sort=1&limit=20&page=1</pre> | ||
+ | :Обязательные параметры: | ||
+ | Обязательных параметров нет, по умолчанию возвращает постраничный список всех телеканалов имеющих телепрограмму с лимитом в 20 каналов начиная с первой страницы. | ||
+ | :Необязательные параметры | ||
+ | ::'''sort''' - способ сортировки. Доступные значения: 1 - сортировка по умолчанию, 2 - по ID канала, 3 - по имени канала. | ||
+ | ::'''desc_limit''' - лимит на количество символов в описании к телепередачам. 0 - описания выводится не будут. По умолчанию выводится полное описание при его наличии. | ||
+ | <div style="border:1px solid #ccc;"> | ||
+ | ::'''time''' - время начала программ передач. Используется в паре с параметром period. Если period не указан, то параметр time игнорируется, возвращается '''текущая передача''' для каждого канала. | ||
+ | ::'''period''' - получаем телепрограмму с начала времени time на количество часов указанных в этом параметре. Если параметр time не указан, временем начала считается начало текущих суток. | ||
+ | ::::'''или''' | ||
+ | ::'''c_to''' - взаимоисключающий с time и period параметр. Указывает на необходимое количество передач начиная с текущей. Значение от 1 до 20. | ||
+ | </div> | ||
+ | <div style="border:1px solid #ccc; margin-top:2px;"> | ||
+ | ::'''channels''' - список каналов для которых необходимо получить телепередачу, через запятую. | ||
+ | ::::'''или''' | ||
+ | ::'''gid''' - ID категории каналов для которых необходимо получить телепередачу. Взаимоисключающий с channels параметр. | ||
+ | </div> | ||
+ | |||
+ | ===Примеры запросов=== | ||
+ | Получить текущую и три следующих телепередачи для каналов с ID 1 и ID 2 | ||
+ | <pre>http://api.iptv.so/0.8/json/epg?token=<TOKEN_ID>&channels=1,2&c_to=3</pre> | ||
+ | |||
+ | Получить телепередачу для канала с ID 1 на 16 сентября 2016 года | ||
+ | <pre>http://api.iptv.so/0.8/json/epg?token=<TOKEN_ID>&channels=1&time=1473984000&period=24</pre> | ||
+ | |||
+ | Получить текущую программу передач для каналов в группе ID=1 со второй страницы по 12 каналов на страницу c описанием телепередач не более 200-т символов и отсортировать каналы по названию | ||
+ | <pre>http://api.iptv.so/0.8/json/epg?token=<TOKEN_ID>&gid=1&period=0&limit=12&page=2&desc_limit=200&sort=3</pre> | ||
+ | |||
+ | ===Формат полученных данных=== | ||
+ | {| class="wikitable" style="float:left; margin-right:20px" | ||
+ | |+XML | ||
+ | |- | ||
+ | |<pre> | ||
+ | <response> | ||
+ | <info> | ||
+ | <limit><ITEMS_LIMIT></limit> | ||
+ | <count><ITEMS_COUNT></count> | ||
+ | <pages><ITEMS_PAGES></pages> | ||
+ | <page><ITEMS_CURRENT_PAGE></page> | ||
+ | </info> | ||
+ | <epg> | ||
+ | <channels> | ||
+ | <item> | ||
+ | <id><CH_ID></id> | ||
+ | <name><CH_NAME></name> | ||
+ | <epg> | ||
+ | <item> | ||
+ | <text><CH_PROG_TEXT></text> | ||
+ | <start><CH_PROG_START></start> | ||
+ | <end><CH_PROG_END></end> | ||
+ | <description><CH_PROG_DESC></description> | ||
+ | <recorded>1|0</recorded> | ||
+ | <live>1</live> | ||
+ | </item> | ||
+ | ... | ||
+ | </epg> | ||
+ | </item> | ||
+ | ... | ||
+ | </channels> | ||
+ | </epg> | ||
+ | <session> | ||
+ | <token><TOKEN_ID></token> | ||
+ | <expire><TOKEN_EXPIRE></expire> | ||
+ | <now><SERVERTIME></now> | ||
+ | </session> | ||
+ | </response> | ||
+ | </pre> | ||
+ | |} | ||
+ | {| class="wikitable" | ||
+ | |+JSON | ||
+ | |- | ||
+ | |<pre>{ | ||
+ | "info": { | ||
+ | "limit": <ITEMS_LIMIT>, | ||
+ | "count": <ITEMS_COUNT>, | ||
+ | "pages": <ITEMS_PAGES>, | ||
+ | "page": <ITEMS_CURRENT_PAGE> | ||
+ | }, | ||
+ | "epg": { | ||
+ | "channels": [ | ||
+ | { | ||
+ | "id": <CH_ID>, | ||
+ | "name": <CH_NAME>, | ||
+ | "epg": [ | ||
+ | { | ||
+ | "text": <CH_PROG_TEXT>, | ||
+ | "start": <CH_PROG_START>, | ||
+ | "end": <CH_PROG_END>, | ||
+ | "description": <CH_PROG_DESC>, | ||
+ | "recorded": 1|0, | ||
+ | "live": 1 | ||
+ | } | ||
+ | ... | ||
+ | ] | ||
+ | }, | ||
+ | ... | ||
+ | ] | ||
+ | }, | ||
+ | "session": { | ||
+ | "token": <TOKEN_ID>, | ||
+ | "expire": <TOKEN_EXPIRE>, | ||
+ | "now": <SERVERTIME> | ||
+ | } | ||
+ | } | ||
+ | </pre> | ||
+ | |} | ||
+ | <div style="clear:both"></div> | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | == [search] Поиск по программе передач== | ||
+ | |||
+ | ===Описание метода=== | ||
+ | Возвращает список результатов поиска строки по названию передачи и её описанию. | ||
+ | |||
+ | ===Формат запроса=== | ||
+ | |||
+ | <pre>http://api.iptv.so/<API_VERSION>/<FORMAT_TYPE>/search?token=<TOKEN_ID>&text=<SEARCH_TEXT>&limit=20&page=1&group=1&group_now=1&group_archive=1</pre> | ||
+ | :Обязательные параметры: | ||
+ | ::'''text''' - Строка поиска от 3 до 40 символов. | ||
+ | :Необязательные параметры: | ||
+ | ::'''group''' - разбивает результаты поиска на следующие группы: '''soon''' - передачи которые будут скоро, '''now''' - идут сейчас, '''archive''' - доступны в архиве. | ||
+ | ::'''limit'''=no - отключение постраничного вывода. Лимит 200 результатов. | ||
+ | По умолчанию поиск выполняется по всем передачам, указав следующие параметры можно выбрать область поиска: | ||
+ | ::'''group_soon''' - допустимое значение 1 или 0, 1 - выполнять поиск среди передач которые ожидаются скоро. | ||
+ | ::'''group_now''' - допустимое значение 1 или 0, 1 - выполнять поиск среди передач которые идут в эфире на момент поиска. | ||
+ | ::'''group_archive''' - допустимое значение 1 или 0, 1 - выполнять поиск среди передач доступных в архиве. | ||
+ | |||
+ | ===Формат полученных данных=== | ||
+ | {| class="wikitable" style="float:left; margin-right:20px" | ||
+ | |+XML | ||
+ | |- | ||
+ | |<pre> | ||
+ | <response> | ||
+ | <search> | ||
+ | <item> | ||
+ | <ch_id><CH_ID></ch_id> | ||
+ | <name><CH_NAME></name> | ||
+ | <groups><CH_GROUPS></groups> | ||
+ | <protected><CH_PROTECTED_FLAG></protected> | ||
+ | <records><CH_REC_HOURS></records> | ||
+ | <favorite><CH_IS_FAVORITE></favorite> | ||
+ | <text><CH_PROG_TEXT></text> | ||
+ | <start><CH_PROG_START></start> | ||
+ | <end><CH_PROG_END></end> | ||
+ | <description><CH_PROG_DESC></description> | ||
+ | <weight><RANK_WEIGHT></weight> | ||
+ | </item> | ||
+ | ... | ||
+ | </search> | ||
+ | <session> | ||
+ | <token><TOKEN_ID></token> | ||
+ | <expire><TOKEN_EXPIRE></expire> | ||
+ | <now><SERVERTIME></now> | ||
+ | </session> | ||
+ | </response> | ||
+ | </pre> | ||
+ | |} | ||
+ | {| class="wikitable" | ||
+ | |+JSON | ||
+ | |- | ||
+ | |<pre>{ | ||
+ | "search": [ | ||
+ | { | ||
+ | "ch_id": <CH_ID>, | ||
+ | "name": <CH_NAME>, | ||
+ | "groups": <CH_GROUPS>, | ||
+ | "protected": <CH_PROTECTED_FLAG>, | ||
+ | "records": <CH_REC_HOURS>, | ||
+ | "favorite": <CH_IS_FAVORITE>, | ||
+ | "text": <CH_PROG_TEXT>, | ||
+ | "start": <CH_PROG_START>, | ||
+ | "end": <CH_PROG_END>, | ||
+ | "description": <CH_PROG_DESC>, | ||
+ | "weight": <RANK_WEIGHT> | ||
+ | }, | ||
+ | ... | ||
+ | ], | ||
+ | "session": { | ||
+ | "token": <TOKEN_ID>, | ||
+ | "expire": <TOKEN_EXPIRE>, | ||
+ | "now": <SERVERTIME> | ||
+ | } | ||
+ | } | ||
+ | </pre> | ||
+ | |} | ||
+ | <div style="clear:both"></div> | ||
+ | |||
+ | ===Описание полученных данных=== | ||
+ | '''channels''' - содержит массив данных | ||
+ | |||
+ | ::'''CH_ID''' - ID канала | ||
+ | ::'''CH_NAME''' - имя канала | ||
+ | ::'''CH_GROUPS''' - ID категорий канала перечисленных через запятую | ||
+ | ::'''CH_PROTECTED_FLAG''' - указывает закрыт ли канал кодом доступа, значение 1 или 0. | ||
+ | ::'''CH_REC_HOURS''' - наличие архива на канале в часах, 0 - архив отсутствует | ||
+ | ::'''CH_IS_FAVORITE''' - наличие канала в избранном, значение 1 или 0. | ||
+ | ::'''CH_PROG_TEXT''' - название текущей передачи | ||
+ | ::'''CH_PROG_START''' - время начала передачи | ||
+ | ::'''CH_PROG_END''' - время окончания передачи | ||
+ | ::'''CH_PROG_DESC''' - описание передачи. Отсутствует, если описание недоступно. | ||
+ | ::'''RANK_WEIGHT''' - вес результата. | ||
+ | |||
+ | == [settings] Текущие настройки == | ||
+ | ===Описание метода=== | ||
+ | Получение списка текущих настроек клиента | ||
+ | |||
+ | ===Формат запроса=== | ||
+ | <pre>http://api.iptv.so/<API_VERSION>/<FORMAT_TYPE>/settings?token=<TOKEN_ID></pre> | ||
+ | |||
+ | ===Формат полученных данных=== | ||
+ | {| class="wikitable" style="float:left; margin-right:20px" | ||
+ | |+XML | ||
+ | |- | ||
+ | |<pre> | ||
+ | <response> | ||
+ | <settings> | ||
+ | <current> | ||
+ | <server> | ||
+ | <id><SERVER_ID></id> | ||
+ | <name><SERVER_NAME></name> | ||
+ | <load><SERVER_LOAD></load> | ||
+ | <power><SERVER_POWER></power> | ||
+ | </server> | ||
+ | <timezone> | ||
+ | <id><TZ_NAME></id> | ||
+ | <gmt><TZ_GMT></gmt> | ||
+ | <country_code><TZ_CC></country_code> | ||
+ | </timezone> | ||
+ | ... | ||
+ | </current> | ||
+ | <lists> | ||
+ | <servers> | ||
+ | <item> | ||
+ | <id><SERVER_ID></id> | ||
+ | <name><SERVER_NAME></name> | ||
+ | <load><SERVER_LOAD></load> | ||
+ | <power><SERVER_POWER></power> | ||
+ | </item> | ||
+ | ... | ||
+ | </servers> | ||
+ | <timezones> | ||
+ | <item> | ||
+ | <id><TZ_NAME></id> | ||
+ | <gmt><TZ_GMT></gmt> | ||
+ | <country_code><TZ_CC></country_code> | ||
+ | </item> | ||
+ | ... | ||
+ | </timezones> | ||
+ | </lists> | ||
+ | </settings> | ||
+ | <session> | ||
+ | <token><TOKEN_ID></token> | ||
+ | <expire><TOKEN_EXPIRE></expire> | ||
+ | <now><SERVERTIME></now> | ||
+ | </session> | ||
+ | </response> | ||
+ | </pre> | ||
+ | |} | ||
+ | {| class="wikitable" | ||
+ | |+JSON | ||
+ | |- | ||
+ | |<pre>{ | ||
+ | "settings": { | ||
+ | "current": { | ||
+ | "server": { | ||
+ | "id": <SERVER_ID>, | ||
+ | "name": <SERVER_NAME>, | ||
+ | "load": <SERVER_LOAD>, | ||
+ | "power": <SERVER_POWER>, | ||
+ | }, | ||
+ | "timezone": { | ||
+ | "id": <TZ_NAME>, | ||
+ | "gmt": <TZ_GMT>, | ||
+ | "country_code": <TZ_CC> | ||
+ | } | ||
+ | ... | ||
+ | }, | ||
+ | "lists": { | ||
+ | "servers": [ | ||
+ | { | ||
+ | "id": <SERVER_ID>, | ||
+ | "name": <SERVER_NAME>, | ||
+ | "load": <SERVER_LOAD>, | ||
+ | "power": <SERVER_POWER>, | ||
+ | }, | ||
+ | ... | ||
+ | ], | ||
+ | "timezones": [ | ||
+ | { | ||
+ | "id": <TZ_NAME>, | ||
+ | "gmt": <TZ_GMT>, | ||
+ | "country_code": <TZ_CC> | ||
+ | }, | ||
+ | ... | ||
+ | ] | ||
+ | } | ||
+ | }, | ||
+ | "session": { | ||
+ | "token": <TOKEN_ID>, | ||
+ | "expire": <TOKEN_EXPIRE>, | ||
+ | "now": <SERVERTIME> | ||
+ | } | ||
+ | } | ||
+ | </pre> | ||
+ | |} | ||
+ | <div style="clear:both"></div> | ||
+ | |||
+ | ===Описание полученных данных=== | ||
+ | '''settings''' - содержит: | ||
+ | :: '''current''' - список текущих настроек пользователя | ||
+ | ::: '''server''' - текущий сервер | ||
+ | ::::'''SERVER_ID''' - ID сервера | ||
+ | ::::'''SERVER_NAME''' - отображаемое имя сервера | ||
+ | ::::'''SERVER_LOAD''' - нагрузка на сервер в процентах | ||
+ | ::::'''SERVER_POWER''' - мощность сервера | ||
+ | ::: '''timezone''' - текущий часовой пояс | ||
+ | ::::'''TZ_NAME''' - имя временной зоны | ||
+ | ::::'''TZ_GMT''' - смещение временной зоны относительно Гринвича | ||
+ | ::::'''TZ_CC''' - двухбуквенный код страны для часового пояса | ||
+ | :: '''list''' - списки возможных доступных значений | ||
+ | ::: '''servers''' - список доступных серверов | ||
+ | ::: '''timezones''' - список доступных временных зон | ||
+ | |||
+ | == [set] Изменение текущих настроек == | ||
+ | ===Описание метода=== | ||
+ | Изменение текущих настроек клиента | ||
+ | |||
+ | ===Формат запроса=== | ||
+ | <pre>http://api.iptv.so/<API_VERSION>/<FORMAT_TYPE>/set?token=<TOKEN_ID>&timezone=<TZ_NAME>&server=<SERVER_ID>&new_code=<NEW_CODE>&old_code=<OLD_CODE></pre> | ||
+ | |||
+ | ===Пример запроса=== | ||
+ | <pre>http://api.iptv.so/<API_VERSION>/<FORMAT_TYPE>/set?token=<TOKEN_ID>&timezone=Europe/Dublin&server=1&new_code=1111&old_code=0000</pre> | ||
+ | |||
+ | Возможные параметры: | ||
+ | ::timezone - имя временной зоны | ||
+ | ::server - ID сервера вещания | ||
+ | ::new_code - новый код доступа, должен содержать 4 цифры. Используется в паре с параметром old_code | ||
+ | ::old_code - текущий код доступа (код родительского контроля) | ||
+ | |||
+ | ===Формат полученных данных=== | ||
+ | {| class="wikitable" style="float:left; margin-right:20px" | ||
+ | |+XML | ||
+ | |- | ||
+ | |<pre> | ||
+ | <response> | ||
+ | <settings> | ||
+ | <updated>1</updated> | ||
+ | <current> | ||
+ | <timezone> | ||
+ | <id><TZ_NAME></id> | ||
+ | <gmt><TZ_GMT></gmt> | ||
+ | <country_code><TZ_CC></country_code> | ||
+ | </timezone> | ||
+ | <server> | ||
+ | <id><SERVER_ID></id> | ||
+ | <name><SERVER_NAME></name> | ||
+ | <load><SERVER_LOAD></load> | ||
+ | <power><SERVER_POWER></power> | ||
+ | </server> | ||
+ | <code> | ||
+ | <updated>1|0</updated> | ||
+ | </code> | ||
+ | </current> | ||
+ | </settings> | ||
+ | <session> | ||
+ | <token><TOKEN_ID></token> | ||
+ | <expire><TOKEN_EXPIRE></expire> | ||
+ | <now><SERVERTIME></now> | ||
+ | </session> | ||
+ | </response> | ||
+ | </pre> | ||
+ | |} | ||
+ | {| class="wikitable" | ||
+ | |+JSON | ||
+ | |- | ||
+ | |<pre>{ | ||
+ | "settings": { | ||
+ | "updated": 1|0, | ||
+ | "current": { | ||
+ | "timezone": { | ||
+ | "id": <TZ_NAME>, | ||
+ | "gmt": <TZ_GMT>, | ||
+ | "country_code": <TZ_CC> | ||
+ | }, | ||
+ | "server": { | ||
+ | "id": <SERVER_ID>, | ||
+ | "name": <SERVER_NAME> | ||
+ | "load": <SERVER_LOAD> | ||
+ | "power": <SERVER_POWER> | ||
+ | }, | ||
+ | "code": { | ||
+ | "updated": 1|0 | ||
+ | } | ||
+ | } | ||
+ | }, | ||
+ | "session": { | ||
+ | "token": <TOKEN_ID>, | ||
+ | "expire": <TOKEN_EXPIRE>, | ||
+ | "now": <SERVERTIME> | ||
+ | } | ||
+ | } | ||
+ | </pre> | ||
+ | |} | ||
+ | <div style="clear:both"></div> | ||
+ | |||
+ | ===Описание полученных данных=== | ||
+ | '''settings''' - содержит: | ||
+ | :: '''updated'''- 1 в случае успеха изменения настроек или 0 | ||
+ | :: '''current''' - список измененных настроек пользователя | ||
+ | ::: '''server''' - текущий сервер | ||
+ | ::::'''SERVER_ID''' - ID сервера | ||
+ | ::::'''SERVER_NAME''' - отображаемое имя сервера | ||
+ | ::::'''SERVER_LOAD''' - нагрузка на сервер в процентах | ||
+ | ::::'''SERVER_POWER''' - мощность сервера в условных единицах | ||
+ | ::: '''timezone''' - текущий часовой пояс | ||
+ | ::::'''TZ_NAME''' - имя временной зоны | ||
+ | ::::'''TZ_GMT''' - смещение временной зоны относительно Гринвича | ||
+ | ::::'''TZ_CC''' - двухбуквенный код страны для часового пояса | ||
+ | :: '''code''' - код безопасности | ||
+ | ::: '''updated''' - 1 в случае успеха или 0 | ||
+ | |||
+ | == [favorites] Избранное == | ||
+ | ===Описание метода=== | ||
+ | Возвращает массив доступных для клиента ID избранных каналов. | ||
+ | |||
+ | ===Формат запроса=== | ||
+ | <pre>http://api.iptv.so/<API_VERSION>/<FORMAT_TYPE>/favorites?token=<TOKEN_ID></pre> | ||
+ | |||
+ | ===Формат полученных данных=== | ||
+ | {| class="wikitable" style="float:left; margin-right:20px" | ||
+ | |+XML | ||
+ | |- | ||
+ | |<pre> | ||
+ | <response> | ||
+ | <favorites> | ||
+ | <item><CH_ID></item> | ||
+ | <item><CH_ID></item> | ||
+ | ... | ||
+ | <item><CH_ID></item> | ||
+ | </favorites> | ||
+ | <session> | ||
+ | <token><TOKEN_ID></token> | ||
+ | <expire><TOKEN_EXPIRE></expire> | ||
+ | <now><SERVERTIME></now> | ||
+ | </session> | ||
+ | </response> | ||
+ | </pre> | ||
+ | |} | ||
+ | {| class="wikitable" | ||
+ | |+JSON | ||
+ | |- | ||
+ | |<pre>{ | ||
+ | "favorites": [ | ||
+ | <CH_ID>, | ||
+ | <CH_ID>, | ||
+ | ... | ||
+ | <CH_ID> | ||
+ | ], | ||
+ | "session": { | ||
+ | "token": <TOKEN_ID>, | ||
+ | "expire": <TOKEN_EXPIRE>, | ||
+ | "now": <SERVERTIME> | ||
+ | } | ||
+ | } | ||
+ | </pre> | ||
+ | |} | ||
+ | <div style="clear:both"></div> | ||
+ | |||
+ | ===Описание полученных данных=== | ||
+ | '''favorites''' - содержит: | ||
+ | :: '''CH_ID''' - ID канала | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | == [set_favorites] Работа со списком избранного == | ||
+ | ===Описание метода=== | ||
+ | Возвращает массив доступных для клиента ID избранных каналов. | ||
+ | |||
+ | ===Формат запроса=== | ||
+ | <pre>http://api.iptv.so/<API_VERSION>/<FORMAT_TYPE>/set_favorites?token=<TOKEN_ID>&cid=<CH_ID>&pos=<CH_FAV_POS>&show_current</pre> | ||
+ | или | ||
+ | <pre>http://api.iptv.so/<API_VERSION>/<FORMAT_TYPE>/set_favorites?token=<TOKEN_ID>&set=<CH_ID>,<CH_ID>,...<CH_ID>&show_current</pre> | ||
+ | :Обязательные параметры: | ||
+ | ::'''cid''' - ID канала. | ||
+ | :Необязательные параметры: | ||
+ | ::'''set''' - список ID каналов через запятую для установки нового списка избранного из указаных каналов в указанном порядке или 0 для полной очистки списка избранного. | ||
+ | ::'''pos''' - позиция канала в списке избранного. Отсчет начинается от 1. Если параметр не указан или равен 0, то cid удаляется из списка избранного клиента. Может принимать следующие значения: | ||
+ | ::::[0-9]+ - позиция в которую нужно переместить\вставить канал в списке; | ||
+ | ::::0 или del - удалить канал из списка; | ||
+ | ::::first - переместить\вставить канал в начало списка; | ||
+ | ::::last - переместить\вставить канал в конец списка; | ||
+ | ::'''show_curren'''t - показать список избранного после изменений | ||
+ | ''Примечание:'' '''set''' и '''cid''' (+'''pos''') являются взаимоисключающими параметрами. Если указан '''set''', то параметры '''cid''' и '''pos''' будут проигнорированы | ||
+ | |||
+ | ===Формат полученных данных=== | ||
+ | {| class="wikitable" style="float:left; margin-right:20px" | ||
+ | |+XML | ||
+ | |- | ||
+ | |<pre> | ||
+ | <response> | ||
+ | <favorites> | ||
+ | <updated>1|0</updated> | ||
+ | <current> | ||
+ | <item><CH_ID></item> | ||
+ | <item><CH_ID></item> | ||
+ | ... | ||
+ | <item><CH_ID></item> | ||
+ | </current> | ||
+ | </favorites> | ||
+ | <session> | ||
+ | <token><TOKEN_ID></token> | ||
+ | <expire><TOKEN_EXPIRE></expire> | ||
+ | <now><SERVERTIME></now> | ||
+ | </session> | ||
+ | </response> | ||
+ | </pre> | ||
+ | |} | ||
+ | {| class="wikitable" | ||
+ | |+JSON | ||
+ | |- | ||
+ | |<pre> | ||
+ | { | ||
+ | "favorites": { | ||
+ | "updated": 1|0, | ||
+ | "current": [ | ||
+ | <CH_ID>, | ||
+ | <CH_ID>, | ||
+ | ... | ||
+ | <CH_ID> | ||
+ | ] | ||
+ | }, | ||
+ | "session": { | ||
+ | "token": <TOKEN_ID>, | ||
+ | "expire": <TOKEN_EXPIRE>, | ||
+ | "now": <SERVERTIME> | ||
+ | } | ||
+ | } | ||
+ | </pre> | ||
+ | |} | ||
+ | <div style="clear:both"></div> | ||
+ | |||
+ | ===Описание полученных данных=== | ||
+ | '''favorites''' - содержит: | ||
+ | :: '''CH_ID''' - ID канала | ||
+ | |||
+ | == [news] Новости сервиса == | ||
+ | ===Описание метода=== | ||
+ | Возвращает последние 10 новостей сервиса. | ||
+ | |||
+ | ===Формат запроса=== | ||
+ | <pre>http://api.iptv.so/<API_VERSION>/<FORMAT_TYPE>/news?token=<TOKEN_ID>&type=plain</pre> | ||
+ | :Необязательные параметры: | ||
+ | ::type - тип отображения содержимого. По умолчанию возвращает контент в виде html. Доступные значения: plain - отображение контента в виде текста. | ||
+ | ::id - NEWS_ID (ID новости). Отображение одной новости с указанным ID. | ||
+ | |||
+ | ===Формат полученных данных=== | ||
+ | {| class="wikitable" style="float:left; margin-right:20px" | ||
+ | |+XML | ||
+ | |- | ||
+ | |<pre> | ||
+ | <response> | ||
+ | <news> | ||
+ | <item> | ||
+ | <id><NEWS_ID></id> | ||
+ | <date><NEWS_DATE></date> | ||
+ | <title><NEWS_TITLE></title> | ||
+ | <text><NEWS_TEXT></text> | ||
+ | </item> | ||
+ | ... | ||
+ | </news> | ||
+ | <session> | ||
+ | <token><TOKEN_ID></token> | ||
+ | <expire><TOKEN_EXPIRE></expire> | ||
+ | <now><SERVERTIME></now> | ||
+ | </session> | ||
+ | </response> | ||
+ | </pre> | ||
+ | |} | ||
+ | {| class="wikitable" | ||
+ | |+JSON | ||
+ | |- | ||
+ | |<pre> | ||
+ | { | ||
+ | "news": [ | ||
+ | { | ||
+ | "id": <NEWS_ID>, | ||
+ | "date": <NEWS_DATE>, | ||
+ | "title": <NEWS_TITLE>, | ||
+ | "text": <NEWS_TEXT> | ||
+ | }, | ||
+ | ... | ||
+ | ], | ||
+ | "session": { | ||
+ | "token": <TOKEN_ID>, | ||
+ | "expire": <TOKEN_EXPIRE>, | ||
+ | "now": <SERVERTIME> | ||
+ | } | ||
+ | } | ||
+ | </pre> | ||
+ | |} | ||
+ | <div style="clear:both"></div> | ||
+ | |||
+ | : '''NEWS_ID''' - уникальный ID новости | ||
+ | : '''NEWS_DATE''' - дата создания новости | ||
+ | : '''NEWS_TITLE''' - название новости | ||
+ | : '''NEWS_TEXT''' - текст новости | ||
+ | |||
+ | == [error_codes] Коды ошибок == | ||
+ | ===Описание метода=== | ||
+ | Возвращает все доступные коды ошибок. Авторизация и token не требуются. | ||
+ | |||
+ | ===Формат запроса=== | ||
+ | <pre>http://api.iptv.so/<API_VERSION>/<FORMAT_TYPE>/error_codes</pre> | ||
+ | |||
+ | ===Формат полученных данных=== | ||
+ | {| class="wikitable" style="float:left; margin-right:20px" | ||
+ | |+XML | ||
+ | |- | ||
+ | |<pre> | ||
+ | <response> | ||
+ | <error_codes> | ||
+ | <item> | ||
+ | <code><ERROR_CODE_ID></code> | ||
+ | <msg><ERROR_CODE_MSG></msg> | ||
+ | </item> | ||
+ | ... | ||
+ | </error_codes> | ||
+ | <session> | ||
+ | <token><TOKEN_ID></token> | ||
+ | <expire><TOKEN_EXPIRE></expire> | ||
+ | <now><SERVERTIME></now> | ||
+ | </session> | ||
+ | </response> | ||
+ | </pre> | ||
+ | |} | ||
+ | {| class="wikitable" | ||
+ | |+JSON | ||
+ | |- | ||
+ | |<pre> | ||
+ | { | ||
+ | "error_codes": [ | ||
+ | { | ||
+ | "code": <ERROR_CODE_ID>, | ||
+ | "msg": <ERROR_CODE_MSG> | ||
+ | }, | ||
+ | ... | ||
+ | ], | ||
+ | "session": { | ||
+ | "token": <TOKEN_ID>, | ||
+ | "expire": <TOKEN_EXPIRE>, | ||
+ | "now": <SERVERTIME> | ||
+ | } | ||
+ | } | ||
+ | </pre> | ||
+ | |} | ||
+ | <div style="clear:both"></div> | ||
− | + | : '''ERROR_CODE_ID''' - уникальный номер ошибки | |
− | + | : '''ERROR_CODE_MSG''' - текст ошибки | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− |
Текущая версия на 17:20, 17 ноября 2018
Содержание
- 1 Изменения
- 2 Описание
- 3 Требования
- 4 Договоренности
- 5 Общие обозначения
- 6 Постраничный вывод
- 7 Логотипы каналов
- 8 Спрайты логотипов
- 9 Методы
- 9.1 [auth] Авторизация
- 9.2 [account] Аккаунт
- 9.3 [logout] Закрытие сессии
- 9.4 [groups] Список ТВ категорий
- 9.5 [channels] Список каналов в группе
- 9.6 [servers] Список доступных серверов
- 9.7 [live] Получение ссылки на прямую трансляцию
- 9.8 [rec] Получение ссылки на запись
- 9.9 [epg] Работа с телепрограммой
- 9.10 [search] Поиск по программе передач
- 9.11 [settings] Текущие настройки
- 9.12 [set] Изменение текущих настроек
- 9.13 [favorites] Избранное
- 9.14 [set_favorites] Работа со списком избранного
- 9.15 [news] Новости сервиса
- 9.16 [error_codes] Коды ошибок
Изменения
12.10.2017
- Для метода groups добавлен необязательный параметр favorites для отображения группы "Избранное" в списке.
27.09.2017
- Изменение в описании спрайтов.
10.09.2017
- Добавлены спрайты логотипов каналов.
21.08.2017
- Обновлен метод search, добавлены параметры group_soon, group_now, group_archive.
20.08.2017
- Добавлен метод search для поиска по программе передач
23.06.2017
- Для метода channels добавлен параметр epg, который может принимать единственное значение epg=no и служит для отключения секции epg в выводе. Например, для оптимизации и ускорения вывода списка каналов, когда информация о EPG не требуется.
- В метод account -> info добавлены значения:
- id - лицевой счет клиента.
- balance - неиспользованный баланс клиента.
01.05.2017
- Для метода set_favorites добавлен параметр set. В качестве аргумента могут выступать:
- a) Список ID каналов через запятую для установки нового списка избранного состоящего из указанных каналов в указанном порядке.
- b) 0 - для полной очистки списка избранного.
- a) Список ID каналов через запятую для установки нового списка избранного состоящего из указанных каналов в указанном порядке.
21.03.2017
- Для метода channels параметр gid может быть равным 100 (gid=100) - это позволяет получить список избранного как группы.
20.02.2017
- Для метода channels добавлен параметр filter_cname - фильтр по названию канала.
- В метод epg -> channels -> epg добавлены значения:
- recorded - указатель наличия архива передачи.
- live - 1 если передача идет на текущий момент, отсутствует если иначе.
Описание
В данной статье описывается возможное взаимодействие между клиентом и сервером API сервиса TVclub.us. Данное API проходит стадию тестирования, может изменяться и дополняться без предварительного уведомления. По всем вопросам, просьбам и предложениям пишите на почту support@tvclub.us.
При использовании данного API, сервис TVClub.us оставляет за собой право размещения ссылки и/или архива файлов (плагинов, приложений, виджетов и прочего ПО) использующих данное API с указанием разработчика.
Требования
- Поддержка HTTP 1.0
- Поддержка HTTP redirect (301,302)
- Поддержка XML или JSON форматов данных
- Поддержка видео-кодека H.264, аудио-кодека AAC, контейнеров mpeg-ts и mp4
Договоренности
- Все временные метки только в формате Unixtime
- Boolean значение имеет следующее обозначение: положительное - 1, отрицательное - 0»
- Кодировка UTF8.
Общие обозначения
- <FORMAT_TYPE> - формат возврата ответа от сервера. Доступны формат XML и JSON.
- <API_VERSION> - Версия API. Текущая версия 0.8
- <SERVERTIME> - Текущее время на сервере.
- <TOKEN_ID> - Уникальный ключ token полученный в результате авторизации.
- <TOKEN_EXPIRE> - время до которого ключ token будет актуален.
Постраничный вывод
Возврат некоторых ответов от сервера может иметь постраничный вывод. При этом действуют общие правила манипуляцией вывода с помощью следующих параметров:
- limit - лимит количества записей для одной выборки для опорной единицы. Например - количество каналов метода epg. Значение может быть от 1 до 200.
- start - номер элемента опорной единицы с которого производится выборка. Параметр не учитывается, если иcпользуется параметр page.
- page - номер страницы для постраничного вывода.
Пример запроса
http://api.iptv.so/<API_VERSION>/<FORMAT_TYPE>/<API_METHOD>?hash=<HASH>&limit=14&page=3
Формат полученных данных
<response> <info> <limit><ITEMS_LIMIT></limit> <count><ITEMS_COUNT></count> <pages><ITEMS_PAGES></pages> <page><ITEMS_CURRENT_PAGE></page> </info> <API_METHOD> ... </API_METHOD> <session> <token><TOKEN_ID></token> <expire><TOKEN_EXPIRE></expire> <now><SERVERTIME></now> </session> </response> |
{ "info": { "limit": <ITEMS_LIMIT>, "count": <ITEMS_COUNT>, "pages": <ITEMS_PAGES>, "page": <ITEMS_CURRENT_PAGE> }, <API_METHOD>: { ... }, "session": { "token": <TOKEN_ID>, "expire": <TOKEN_EXPIRE>, "now": <SERVERTIME> } } |
- info - информация о постраничном выводе
- ITEMS_LIMIT - общее количество записей
- ITEMS_COUNT - количество единиц на текущей странице
- ITEMS_PAGES - общее количество страниц
- ITEMS_CURRENT_PAGE - номер текущей страницы
Логотипы каналов
Доступны несколько размеров и форматов логотипов.
Получить иконку для канала с ID = CH_ID и в формате LOGO_FORMAT можно с помощью URL:
http://api.iptv.so/logo/<LOGO_FORMAT>/<CH_ID>.png
Доступные форматы:
- original - 490x280 без рамки
- 490_280_1 - 490x280 с рамкой
- 36_36_0 - 36x36 без рамки
- 36_36_1 - 36x36 с рамкой
- 48_48_0 - 48x48 без рамки
- 48_48_1 - 48x48 с рамкой
- 72_72_0 - 72x72 без рамки
- 72_72_1 - 72x72 с рамкой
- 90_50_0 - 90x50 без рамки
- 90_50_1 - 90x50 с рамкой
- 96_96_0 - 96x96 без рамки
- 96_96_1 - 96x96 с рамкой
- 200_115_0 - 200x115 без рамки
- 200_115_1 - 200x115 с рамкой
- 300_170_0 - 300x170 без рамки
- 300_170_1 - 300x170 с рамкой
Спрайты логотипов
Sprite Sheet — это одно большое изображение мелких графических элементов, в данном случае - это логотипы каналов. Благодаря CSS можно отображать каждый элемент отдельно не загружая при этом массу мелких изображений. Главным преимуществом использования спрайтов является однократная загрузка клиентом сразу всех элементов в одном файле тем самым значительно сокращая количество HTTP-запросов к серверу.
Доступные форматы <SPRITE_FORMAT>:
- 90_50_0 - 90x50 без рамки
- 90_50_1 - 90x50 с рамкой
Получить спрайт иконок размером <SPRITE_FORMAT> можно с помощью URL:
http://api.iptv.so/sprite/<SPRITE_FORMAT>.png
Позиции иконок в спрайте указаны в файле:
http://api.iptv.so/sprite/<SPRITE_FORMAT>.json
Файл представляет собой массив данных в json формате:
{"name":"<SPRITE_FORMAT>","size":"<SPRITE_SIZE>","nums":"<SPRITE_ROWS>","hash":"<SPRITE_HASH>","data": {"<CH_ID>": {"x":<CORD_X>,"y":<CORD_Y>,"a":<POS_X>,"b":<POS_Y>}, ...}}
Где:
- <SPRITE_SIZE> - размер спрайта в пикселях.
- <SPRITE_ROWS> - количество логотипов в спрайте по ширине и высоте.
- <SPRITE_HASH> - уникальный хеш спрайта, используется для сверки изменений. Если хеш изменился, необходимо загрузить спрайт снова так как он был изменен.
- <CH_ID> - ID канала.
- <CORD_X> - координаты логотипа по оси X.
- <CORD_Y> - координаты логотипа по оси Y.
- <POS_X> - позиция от левого верхнего угла в пикселях по оси X.
- <POS_Y> - позиция от левого верхнего угла в пикселях по оси Y.
Если по какой-то причине не обнаружены координаты необходимого логотипа, используйте позицию X=0 и Y=0 для установки заглушки "No Image" из спрайта. Такое может случится, например, если были добавлены новые каналы, а спрайты еще не сгенерированы.
Методы
[auth] Авторизация
Внимание!
06.01.2017 были внесены изменения в алгоритм авторизации. Token, ключ, который используется для вызова остальных процедур API, теперь всегда равен MD5(<USER_LOGIN> + MD5(<USER_PASSWORD>)).
Таким образом в этапе авторизации теперь нет необходимости и этот шаг можно (нужно) пропустить, так как зная логин и пароль известен и token. А для получении информации об аккаунте используется метод account.
Описание метода
(ДО 06.01.2017!!!) Самым первым запросом на сервер API всегда должен быть запрос на авторизацию клиента. В случае успеха, сервер вернет информацию о аккаунте клиента и информации о созданной сессии в которой содержится уникальный ключ - token, для доступа к остальным методам API. Без этого ключа вызов других методов API невозможен.
Формат запроса
http://api.iptv.so/<API_VERSION>/<FORMAT_TYPE>/auth?hash=<HASH>
HASH - это MD5-хеш полученный в результате конкатенации логина пользователя и MD5-хеша пароля пользователя - MD5(<USER_LOGIN> + MD5(<USER_PASSWORD>))
Примеры запроса
PHP
$data=file_get_contents('http://api.iptv.so/0.8/xml/auth?hash='.MD5($login.MD5($password)));
Формат полученных данных
<response> <account> <info> <id><USER_ID></id> <login><USER_LOGIN></login> <mail><USER_EMAIL></mail> <name><USER_NAME></name> <balance><USER_BALANCE></balance> </info> <options> <OPTION_NAME>1|0</OPTION_NAME> ... </options> <services> <item> <id><SERVICE_ID></id> <expire><SERVICE_EXPIRE></expire> <name><SERVICE_NAME></name> <type><SERVICE_TYPE></type> </item> ... </services> <settings> <server_id><SERVER_ID></server_id> <server_name><SERVER_NAME></server_name> <tz_name><TZ_NAME></tz_name> <tz_gmt><TZ_GMT></tz_gmt> </settings> </account> <session> <token><TOKEN_ID></token> <expire><TOKEN_EXPIRE></expire> <now><SERVERTIME></now> </session> </response> |
{ "account": { "info": { "id": <USER_ID>, "login": <USER_LOGIN>, "mail": <USER_EMAIL>, "name": <USER_NAME>, "balance": <USER_BALANCE>, }, "options": { <OPTION_NAME>: 1|0, ... }, "services": [ { "id": <SERVICE_ID>, "expire": <SERVICE_EXPIRE>, "name": <SERVICE_NAME>, "type": <SERVICE_TYPE> }, ... ], "settings": { "server_id": <SERVER_ID>, "server_name": <SERVER_NAME>, "tz_name": <TZ_NAME>, "tz_gmt": <TZ_GMT> } }, "session": { "token": <TOKEN_ID>, "expire": <TOKEN_EXPIRE>, "now": <SERVERTIME> } } |
Описание полученных данных
account - содержит в себе
- info - информация о аккаунте клиента
- USER_ID - лицевой счет клиента
- USER_LOGIN - логин клиента
- USER_EMAIL - e-mail клиента
- USER_NAME - имя клиента
- USER_BALANCE - неиспользованный баланс клиента
- options - список доступных
- OPTION_NAME - имя опции, может принимать значение 1 - доступно или 0 - недоступно для клиента.
- services - список доступных для клиента сервисов, может содержать несколько вложенных элементов item удовлетворяющих следующему описанию:
- SERVICE_ID - уникальный ID сервиса
- SERVICE_EXPIRE - срок истечения подписки на сервис
- SERVICE_NAME - имя сервиса
- SERVICE_TYPE - тип сервиса [пакет каналов, опция, плейлист]
- settings - текущие настройки клиента
- SERVER_ID - ID сервера вещания
- SERVER_NAME - отображаемое имя сервера вещания
- TZ_NAME - имя временной зоны
- TZ_GMT - смещение временной зоны относительно Гринвича
- info - информация о аккаунте клиента
session - описание текущей сессии
- TOKEN_ID - ключ доступа который используется для вызова всех остальных методов API
- TOKEN_EXPIRE - время до которого действителен текущий ключ доступа. При каждом успешном запросе срок жизни ключа продлевается до 24-х часов с текущей даты.
- SERVERTIME - текущее время на сервере
[account] Аккаунт
Описание метода
Возвращает ту же информацию, что и метод auth. Может использоваться для получения текущей информации об аккаунте без повторной авторизации.
Формат запроса
http://api.iptv.so/<API_VERSION>/<FORMAT_TYPE>/account?token=<TOKEN_ID>
[logout] Закрытие сессии
Описание метода
Метод уничтожает текущую сессию и все данные хранящиеся в ней.
Формат запроса
http://api.iptv.so/<API_VERSION>/<FORMAT_TYPE>/logout?token=<TOKEN_ID>
Формат полученных данных
<response> <session> <destroyed>1</destroyed> <now><SERVERTIME></now> </session> </response> |
{ "session": { "destroyed": 1, "now": <SERVERTIME> } } |
[groups] Список ТВ категорий
Описание метода
Возвращает полный список доступных для клиента ТВ категорий.
Формат запроса
http://api.iptv.so/<API_VERSION>/<FORMAT_TYPE>/groups?token=<TOKEN_ID>
- Необязательные параметры:
- favorites - если параметр присутствует и равен 1, то отображать в списке группу "Избранное".
Формат полученных данных
<response> <groups> <item> <name_ru><GROUP_ID></name_ru> <name_ru><GROUP_NAME_RU></name_ru> <name_en><GROUP_NAME_EN></name_en> <count><GROUP_CHANNELS_COUNT></count> </item> ... </groups> <session> <token><TOKEN_ID></token> <expire><TOKEN_EXPIRE></expire> <now><SERVERTIME></now> </session> </response> |
{ "groups": [ { "id": <GROUP_ID>, "name_ru": <GROUP_NAME_RU>, "name_en": <GROUP_NAME_EN>, "count": <GROUP_CHANNELS_COUNT> }, ... ], "session": { "token": <TOKEN_ID>, "expire": <TOKEN_EXPIRE>, "now": <SERVERTIME> } } |
Описание полученных данных
groups - содержит в себе
- GROUP_ID - ID группы
- GROUP_NAME_RU - Имя группы на русском языке
- GROUP_NAME_EN - Имя группы на английском языке
- GROUP_CHANNELS_COUNT - Количество каналов доступных для клиента в этой группе
[channels] Список каналов в группе
Описание метода
Возвращает постраничный список доступных для клиента каналов в определенной категории.
Формат запроса
http://api.iptv.so/<API_VERSION>/<FORMAT_TYPE>/channels?token=<TOKEN_ID>&gid=<GROUP_ID>&sort=1&limit=20&page=1
- Обязательные параметры:
- gid - ID группы каналов. gid=100 для вывода избранного как группы каналов.
- Необязательные параметры:
- sort - способ сортировки. Доступные значения: 1 - сортировка по умолчанию, 2 - по ID канала, 3 - по имени канала.
- filter_cname - фильтр по названию канала.
- epg - для ускорения обработки запроса при необходимости можно отключить вывод секции epg на каналах указав параметр epg=no.
Формат полученных данных
<response> <channels> <item> <info> <id><CH_ID></id> <name><CH_NAME></name> <groups><CH_GROUPS></groups> <protected><CH_PROTECTED_FLAG></protected> <records><CH_REC_HOURS></records> <favorite><CH_IS_FAVORITE></favorite> </info> <epg> <text><CH_PROG_TEXT></text> <start><CH_PROG_START></start> <end><CH_PROG_END></end> <description><CH_PROG_DESC></description> </epg> </item> ... </channels> <session> <token><TOKEN_ID></token> <expire><TOKEN_EXPIRE></expire> <now><SERVERTIME></now> </session> </response> |
{ "channels": [ { "info": { "id": <CH_ID>, "name": <CH_NAME>, "groups": <CH_GROUPS>, "protected": <CH_PROTECTED_FLAG>, "records": <CH_REC_HOURS>, "favorite": <CH_IS_FAVORITE>, }, "epg": [ "text": <CH_PROG_TEXT>, "start": <CH_PROG_START>, "end": <CH_PROG_END>, "description": <CH_PROG_DESC> ] }, ... ], "session": { "token": <TOKEN_ID>, "expire": <TOKEN_EXPIRE>, "now": <SERVERTIME> } } |
Описание полученных данных
channels - содержит массив данных
- info - общая информация о канале
- CH_ID - ID канала
- CH_NAME - имя канала
- CH_GROUPS - ID категорий канала перечисленных через запятую
- CH_PROTECTED_FLAG - указывает закрыт ли канал кодом доступа, значение 1 или 0.
- CH_REC_HOURS - наличие архива на канале в часах, 0 - архив отсутствует
- CH_IS_FAVORITE - наличие канала в избранном, значение 1 или 0.
- epg - информация о текущей программе передач. Пустой элемент, если телепрограмма не доступна.
- CH_PROG_TEXT - название текущей передачи
- CH_PROG_START - время начала передачи
- CH_PROG_END - время окончания передачи
- CH_PROG_DESC - описание передачи. Отсутствует, если описание недоступно.
- info - общая информация о канале
[servers] Список доступных серверов
Описание метода
Получение списка доступных серверов
Формат запроса
http://api.iptv.so/<API_VERSION>/<FORMAT_TYPE>/servers?token=<TOKEN_ID>
Формат полученных данных
<response> <servers> <item> <id><SERVER_ID></id> <name><SERVER_NAME></name> <load><SERVER_LOAD></load> <power><SERVER_POWER></power> </item> ... </servers> <session> <token><TOKEN_ID></token> <expire><TOKEN_EXPIRE></expire> <now><SERVERTIME></now> </session> </response> |
{ "servers": [ { "id": <SERVER_ID>, "name": <SERVER_NAME>, "load": <SERVER_LOAD>, "power": <SERVER_POWER>, }, ... ], "session": { "token": <TOKEN_ID>, "expire": <TOKEN_EXPIRE>, "now": <SERVERTIME> } } |
Описание полученных данных
servers - содержит:
- SERVER_ID - ID сервера
- SERVER_NAME - отображаемое имя сервера
- SERVER_LOAD - нагрузка на сервер в процентах
- SERVER_POWER - мощность сервера
[live] Получение ссылки на прямую трансляцию
Описание метода
Метод возвращает краткую информацию по каналу и ссылку на поток его прямой трансляции.
- Ссылка на поток должна быть использована в течении 5 минут
- Ссылка на поток привязана к IP клиента полученного в результате его запроса на сервер API.
- Ссылка на поток привязана к серверу вещания для которого она была получена.
Формат запроса
http://api.iptv.so/<API_VERSION>/<FORMAT_TYPE>/live?token=<TOKEN_ID>&cid=<CH_ID>&protected=<CODE>
- Обязательные параметры:
- cid - ID телеканала.
- Необязательные параметры:
- protected - код родительского контроля, высылается в активационном письме. По умолчанию равен 0000 (четыре ноля).
Формат полученных данных
<response> <live> <channel> <id><CH_ID></id> <name><CH_NAME></name> <protected><CH_PROTECTED_FLAG></protected> <records><CH_REC_HOURS></records> </channel> <url><LIVE_URL></url> </live> <session> <token><TOKEN_ID></token> <expire><TOKEN_EXPIRE></expire> <now><SERVERTIME></now> </session> </response> |
{ "live": { "channel": { "id": <CH_ID>, "name": <CH_NAME>, "protected": <CH_PROTECTED_FLAG>, "records": <CH_REC_HOURS> }, "url": <LIVE_URL> }, "session": { "token": <TOKEN_ID>, "expire": <TOKEN_EXPIRE>, "now": <SERVERTIME> } } |
Описание полученных данных
live - содержит:
- channel - общая информация о канале
- CH_ID - ID канала
- CH_NAME - имя канала
- CH_PROTECTED_FLAG - указывает закрыт ли канал кодом доступа, значение 1 или 0.
- CH_REC_HOURS - наличие архива на канале в часах, 0 - архив отсутствует
- url
- <LIVE_URL> - прямая ссылка на прямую трансляцию
- channel - общая информация о канале
[rec] Получение ссылки на запись
Описание метода
Метод возвращает краткую информацию по каналу, информацию о текущей программе передач на указанную дату и ссылку на архивную запись.
- Ссылка на поток должна быть использована в течении 5 минут
- Ссылка на поток привязана к IP клиента полученного в результате его запроса на сервер API.
- Ссылка на поток привязана к серверу вещания для которого она была получена.
- Запись начинается с времени указанного в параметре time.
- Параметр time может использоваться как способ перемотки.
- Длинна записи = <CH_PROG_END> - <CH_PROG_START>.
- Начало записи = <REC_START_TIME>
- Конец записи = <CH_PROG_END>
Формат запроса
http://api.iptv.so/<API_VERSION>/<FORMAT_TYPE>/rec?token=<TOKEN_ID>&cid=<CH_ID>&time=<REC_START_TIME>&protected=<CODE>
- Обязательные параметры:
- cid - ID телеканала.
- time - Время с которого начинается запись.
- Необязательные параметры:
- protected - код родительского контроля для закрытых каналов, высылается в активационном письме. По умолчанию равен 0000 (четыре ноля).
Формат полученных данных
<response> <rec> <channel> <id><CH_ID></id> <name><CH_NAME></name> <protected><CH_PROTECTED_FLAG></protected> <title><CH_PROG_TEXT></title> <start><CH_PROG_START></start> <end><CH_PROG_END></end> <records><CH_REC_HOURS></records> </channel> <url><REC_URL></url> </rec> <session> <token><TOKEN_ID></token> <expire><TOKEN_EXPIRE></expire> <now><SERVERTIME></now> </session> </response> |
{ "rec": { "channel": { "id": <CH_ID>, "name": <CH_NAME>, "protected": <CH_PROTECTED_FLAG>, "title": <CH_PROG_TEXT>, "start": <CH_PROG_START>, "end": <CH_PROG_END>, "records": <CH_REC_HOURS> }, "url": <REC_URL> }, "session": { "token": <TOKEN_ID>, "expire": <TOKEN_EXPIRE>, "now": <SERVERTIME> } } |
Описание полученных данных
rec - содержит:
- channel - общая информация о канале
- CH_ID - ID канала
- CH_NAME - имя канала
- CH_PROTECTED_FLAG - указывает закрыт ли канал кодом доступа, значение 1 или 0.
- CH_PROG_TEXT - название текущей передачи
- CH_PROG_START - время начала передачи
- CH_PROG_END - время окончания передачи
- CH_REC_HOURS - наличие архива на канале в часах, 0 - архив отсутствует
- url
- <REC_URL> - прямая ссылка архивную запись
- channel - общая информация о канале
[epg] Работа с телепрограммой
Описание метода
Возвращает постраничный список телеканалов с телепрограммой в зависимости от указанных параметров.
Формат запроса
http://api.iptv.so/<API_VERSION>/<FORMAT_TYPE>/epg?token=<TOKEN_ID>&gid=<GROUP_ID>&sort=1&limit=20&page=1
- Обязательные параметры:
Обязательных параметров нет, по умолчанию возвращает постраничный список всех телеканалов имеющих телепрограмму с лимитом в 20 каналов начиная с первой страницы.
- Необязательные параметры
- sort - способ сортировки. Доступные значения: 1 - сортировка по умолчанию, 2 - по ID канала, 3 - по имени канала.
- desc_limit - лимит на количество символов в описании к телепередачам. 0 - описания выводится не будут. По умолчанию выводится полное описание при его наличии.
- time - время начала программ передач. Используется в паре с параметром period. Если period не указан, то параметр time игнорируется, возвращается текущая передача для каждого канала.
- period - получаем телепрограмму с начала времени time на количество часов указанных в этом параметре. Если параметр time не указан, временем начала считается начало текущих суток.
- или
- c_to - взаимоисключающий с time и period параметр. Указывает на необходимое количество передач начиная с текущей. Значение от 1 до 20.
- channels - список каналов для которых необходимо получить телепередачу, через запятую.
- или
- gid - ID категории каналов для которых необходимо получить телепередачу. Взаимоисключающий с channels параметр.
- channels - список каналов для которых необходимо получить телепередачу, через запятую.
Примеры запросов
Получить текущую и три следующих телепередачи для каналов с ID 1 и ID 2
http://api.iptv.so/0.8/json/epg?token=<TOKEN_ID>&channels=1,2&c_to=3
Получить телепередачу для канала с ID 1 на 16 сентября 2016 года
http://api.iptv.so/0.8/json/epg?token=<TOKEN_ID>&channels=1&time=1473984000&period=24
Получить текущую программу передач для каналов в группе ID=1 со второй страницы по 12 каналов на страницу c описанием телепередач не более 200-т символов и отсортировать каналы по названию
http://api.iptv.so/0.8/json/epg?token=<TOKEN_ID>&gid=1&period=0&limit=12&page=2&desc_limit=200&sort=3
Формат полученных данных
<response> <info> <limit><ITEMS_LIMIT></limit> <count><ITEMS_COUNT></count> <pages><ITEMS_PAGES></pages> <page><ITEMS_CURRENT_PAGE></page> </info> <epg> <channels> <item> <id><CH_ID></id> <name><CH_NAME></name> <epg> <item> <text><CH_PROG_TEXT></text> <start><CH_PROG_START></start> <end><CH_PROG_END></end> <description><CH_PROG_DESC></description> <recorded>1|0</recorded> <live>1</live> </item> ... </epg> </item> ... </channels> </epg> <session> <token><TOKEN_ID></token> <expire><TOKEN_EXPIRE></expire> <now><SERVERTIME></now> </session> </response> |
{ "info": { "limit": <ITEMS_LIMIT>, "count": <ITEMS_COUNT>, "pages": <ITEMS_PAGES>, "page": <ITEMS_CURRENT_PAGE> }, "epg": { "channels": [ { "id": <CH_ID>, "name": <CH_NAME>, "epg": [ { "text": <CH_PROG_TEXT>, "start": <CH_PROG_START>, "end": <CH_PROG_END>, "description": <CH_PROG_DESC>, "recorded": 1|0, "live": 1 } ... ] }, ... ] }, "session": { "token": <TOKEN_ID>, "expire": <TOKEN_EXPIRE>, "now": <SERVERTIME> } } |
[search] Поиск по программе передач
Описание метода
Возвращает список результатов поиска строки по названию передачи и её описанию.
Формат запроса
http://api.iptv.so/<API_VERSION>/<FORMAT_TYPE>/search?token=<TOKEN_ID>&text=<SEARCH_TEXT>&limit=20&page=1&group=1&group_now=1&group_archive=1
- Обязательные параметры:
- text - Строка поиска от 3 до 40 символов.
- Необязательные параметры:
- group - разбивает результаты поиска на следующие группы: soon - передачи которые будут скоро, now - идут сейчас, archive - доступны в архиве.
- limit=no - отключение постраничного вывода. Лимит 200 результатов.
По умолчанию поиск выполняется по всем передачам, указав следующие параметры можно выбрать область поиска:
- group_soon - допустимое значение 1 или 0, 1 - выполнять поиск среди передач которые ожидаются скоро.
- group_now - допустимое значение 1 или 0, 1 - выполнять поиск среди передач которые идут в эфире на момент поиска.
- group_archive - допустимое значение 1 или 0, 1 - выполнять поиск среди передач доступных в архиве.
Формат полученных данных
<response> <search> <item> <ch_id><CH_ID></ch_id> <name><CH_NAME></name> <groups><CH_GROUPS></groups> <protected><CH_PROTECTED_FLAG></protected> <records><CH_REC_HOURS></records> <favorite><CH_IS_FAVORITE></favorite> <text><CH_PROG_TEXT></text> <start><CH_PROG_START></start> <end><CH_PROG_END></end> <description><CH_PROG_DESC></description> <weight><RANK_WEIGHT></weight> </item> ... </search> <session> <token><TOKEN_ID></token> <expire><TOKEN_EXPIRE></expire> <now><SERVERTIME></now> </session> </response> |
{ "search": [ { "ch_id": <CH_ID>, "name": <CH_NAME>, "groups": <CH_GROUPS>, "protected": <CH_PROTECTED_FLAG>, "records": <CH_REC_HOURS>, "favorite": <CH_IS_FAVORITE>, "text": <CH_PROG_TEXT>, "start": <CH_PROG_START>, "end": <CH_PROG_END>, "description": <CH_PROG_DESC>, "weight": <RANK_WEIGHT> }, ... ], "session": { "token": <TOKEN_ID>, "expire": <TOKEN_EXPIRE>, "now": <SERVERTIME> } } |
Описание полученных данных
channels - содержит массив данных
- CH_ID - ID канала
- CH_NAME - имя канала
- CH_GROUPS - ID категорий канала перечисленных через запятую
- CH_PROTECTED_FLAG - указывает закрыт ли канал кодом доступа, значение 1 или 0.
- CH_REC_HOURS - наличие архива на канале в часах, 0 - архив отсутствует
- CH_IS_FAVORITE - наличие канала в избранном, значение 1 или 0.
- CH_PROG_TEXT - название текущей передачи
- CH_PROG_START - время начала передачи
- CH_PROG_END - время окончания передачи
- CH_PROG_DESC - описание передачи. Отсутствует, если описание недоступно.
- RANK_WEIGHT - вес результата.
[settings] Текущие настройки
Описание метода
Получение списка текущих настроек клиента
Формат запроса
http://api.iptv.so/<API_VERSION>/<FORMAT_TYPE>/settings?token=<TOKEN_ID>
Формат полученных данных
<response> <settings> <current> <server> <id><SERVER_ID></id> <name><SERVER_NAME></name> <load><SERVER_LOAD></load> <power><SERVER_POWER></power> </server> <timezone> <id><TZ_NAME></id> <gmt><TZ_GMT></gmt> <country_code><TZ_CC></country_code> </timezone> ... </current> <lists> <servers> <item> <id><SERVER_ID></id> <name><SERVER_NAME></name> <load><SERVER_LOAD></load> <power><SERVER_POWER></power> </item> ... </servers> <timezones> <item> <id><TZ_NAME></id> <gmt><TZ_GMT></gmt> <country_code><TZ_CC></country_code> </item> ... </timezones> </lists> </settings> <session> <token><TOKEN_ID></token> <expire><TOKEN_EXPIRE></expire> <now><SERVERTIME></now> </session> </response> |
{ "settings": { "current": { "server": { "id": <SERVER_ID>, "name": <SERVER_NAME>, "load": <SERVER_LOAD>, "power": <SERVER_POWER>, }, "timezone": { "id": <TZ_NAME>, "gmt": <TZ_GMT>, "country_code": <TZ_CC> } ... }, "lists": { "servers": [ { "id": <SERVER_ID>, "name": <SERVER_NAME>, "load": <SERVER_LOAD>, "power": <SERVER_POWER>, }, ... ], "timezones": [ { "id": <TZ_NAME>, "gmt": <TZ_GMT>, "country_code": <TZ_CC> }, ... ] } }, "session": { "token": <TOKEN_ID>, "expire": <TOKEN_EXPIRE>, "now": <SERVERTIME> } } |
Описание полученных данных
settings - содержит:
- current - список текущих настроек пользователя
- server - текущий сервер
- SERVER_ID - ID сервера
- SERVER_NAME - отображаемое имя сервера
- SERVER_LOAD - нагрузка на сервер в процентах
- SERVER_POWER - мощность сервера
- timezone - текущий часовой пояс
- TZ_NAME - имя временной зоны
- TZ_GMT - смещение временной зоны относительно Гринвича
- TZ_CC - двухбуквенный код страны для часового пояса
- server - текущий сервер
- list - списки возможных доступных значений
- servers - список доступных серверов
- timezones - список доступных временных зон
- current - список текущих настроек пользователя
[set] Изменение текущих настроек
Описание метода
Изменение текущих настроек клиента
Формат запроса
http://api.iptv.so/<API_VERSION>/<FORMAT_TYPE>/set?token=<TOKEN_ID>&timezone=<TZ_NAME>&server=<SERVER_ID>&new_code=<NEW_CODE>&old_code=<OLD_CODE>
Пример запроса
http://api.iptv.so/<API_VERSION>/<FORMAT_TYPE>/set?token=<TOKEN_ID>&timezone=Europe/Dublin&server=1&new_code=1111&old_code=0000
Возможные параметры:
- timezone - имя временной зоны
- server - ID сервера вещания
- new_code - новый код доступа, должен содержать 4 цифры. Используется в паре с параметром old_code
- old_code - текущий код доступа (код родительского контроля)
Формат полученных данных
<response> <settings> <updated>1</updated> <current> <timezone> <id><TZ_NAME></id> <gmt><TZ_GMT></gmt> <country_code><TZ_CC></country_code> </timezone> <server> <id><SERVER_ID></id> <name><SERVER_NAME></name> <load><SERVER_LOAD></load> <power><SERVER_POWER></power> </server> <code> <updated>1|0</updated> </code> </current> </settings> <session> <token><TOKEN_ID></token> <expire><TOKEN_EXPIRE></expire> <now><SERVERTIME></now> </session> </response> |
{ "settings": { "updated": 1|0, "current": { "timezone": { "id": <TZ_NAME>, "gmt": <TZ_GMT>, "country_code": <TZ_CC> }, "server": { "id": <SERVER_ID>, "name": <SERVER_NAME> "load": <SERVER_LOAD> "power": <SERVER_POWER> }, "code": { "updated": 1|0 } } }, "session": { "token": <TOKEN_ID>, "expire": <TOKEN_EXPIRE>, "now": <SERVERTIME> } } |
Описание полученных данных
settings - содержит:
- updated- 1 в случае успеха изменения настроек или 0
- current - список измененных настроек пользователя
- server - текущий сервер
- SERVER_ID - ID сервера
- SERVER_NAME - отображаемое имя сервера
- SERVER_LOAD - нагрузка на сервер в процентах
- SERVER_POWER - мощность сервера в условных единицах
- timezone - текущий часовой пояс
- TZ_NAME - имя временной зоны
- TZ_GMT - смещение временной зоны относительно Гринвича
- TZ_CC - двухбуквенный код страны для часового пояса
- server - текущий сервер
- code - код безопасности
- updated - 1 в случае успеха или 0
[favorites] Избранное
Описание метода
Возвращает массив доступных для клиента ID избранных каналов.
Формат запроса
http://api.iptv.so/<API_VERSION>/<FORMAT_TYPE>/favorites?token=<TOKEN_ID>
Формат полученных данных
<response> <favorites> <item><CH_ID></item> <item><CH_ID></item> ... <item><CH_ID></item> </favorites> <session> <token><TOKEN_ID></token> <expire><TOKEN_EXPIRE></expire> <now><SERVERTIME></now> </session> </response> |
{ "favorites": [ <CH_ID>, <CH_ID>, ... <CH_ID> ], "session": { "token": <TOKEN_ID>, "expire": <TOKEN_EXPIRE>, "now": <SERVERTIME> } } |
Описание полученных данных
favorites - содержит:
- CH_ID - ID канала
[set_favorites] Работа со списком избранного
Описание метода
Возвращает массив доступных для клиента ID избранных каналов.
Формат запроса
http://api.iptv.so/<API_VERSION>/<FORMAT_TYPE>/set_favorites?token=<TOKEN_ID>&cid=<CH_ID>&pos=<CH_FAV_POS>&show_current
или
http://api.iptv.so/<API_VERSION>/<FORMAT_TYPE>/set_favorites?token=<TOKEN_ID>&set=<CH_ID>,<CH_ID>,...<CH_ID>&show_current
- Обязательные параметры:
- cid - ID канала.
- Необязательные параметры:
- set - список ID каналов через запятую для установки нового списка избранного из указаных каналов в указанном порядке или 0 для полной очистки списка избранного.
- pos - позиция канала в списке избранного. Отсчет начинается от 1. Если параметр не указан или равен 0, то cid удаляется из списка избранного клиента. Может принимать следующие значения:
- [0-9]+ - позиция в которую нужно переместить\вставить канал в списке;
- 0 или del - удалить канал из списка;
- first - переместить\вставить канал в начало списка;
- last - переместить\вставить канал в конец списка;
- show_current - показать список избранного после изменений
Примечание: set и cid (+pos) являются взаимоисключающими параметрами. Если указан set, то параметры cid и pos будут проигнорированы
Формат полученных данных
<response> <favorites> <updated>1|0</updated> <current> <item><CH_ID></item> <item><CH_ID></item> ... <item><CH_ID></item> </current> </favorites> <session> <token><TOKEN_ID></token> <expire><TOKEN_EXPIRE></expire> <now><SERVERTIME></now> </session> </response> |
{ "favorites": { "updated": 1|0, "current": [ <CH_ID>, <CH_ID>, ... <CH_ID> ] }, "session": { "token": <TOKEN_ID>, "expire": <TOKEN_EXPIRE>, "now": <SERVERTIME> } } |
Описание полученных данных
favorites - содержит:
- CH_ID - ID канала
[news] Новости сервиса
Описание метода
Возвращает последние 10 новостей сервиса.
Формат запроса
http://api.iptv.so/<API_VERSION>/<FORMAT_TYPE>/news?token=<TOKEN_ID>&type=plain
- Необязательные параметры:
- type - тип отображения содержимого. По умолчанию возвращает контент в виде html. Доступные значения: plain - отображение контента в виде текста.
- id - NEWS_ID (ID новости). Отображение одной новости с указанным ID.
Формат полученных данных
<response> <news> <item> <id><NEWS_ID></id> <date><NEWS_DATE></date> <title><NEWS_TITLE></title> <text><NEWS_TEXT></text> </item> ... </news> <session> <token><TOKEN_ID></token> <expire><TOKEN_EXPIRE></expire> <now><SERVERTIME></now> </session> </response> |
{ "news": [ { "id": <NEWS_ID>, "date": <NEWS_DATE>, "title": <NEWS_TITLE>, "text": <NEWS_TEXT> }, ... ], "session": { "token": <TOKEN_ID>, "expire": <TOKEN_EXPIRE>, "now": <SERVERTIME> } } |
- NEWS_ID - уникальный ID новости
- NEWS_DATE - дата создания новости
- NEWS_TITLE - название новости
- NEWS_TEXT - текст новости
[error_codes] Коды ошибок
Описание метода
Возвращает все доступные коды ошибок. Авторизация и token не требуются.
Формат запроса
http://api.iptv.so/<API_VERSION>/<FORMAT_TYPE>/error_codes
Формат полученных данных
<response> <error_codes> <item> <code><ERROR_CODE_ID></code> <msg><ERROR_CODE_MSG></msg> </item> ... </error_codes> <session> <token><TOKEN_ID></token> <expire><TOKEN_EXPIRE></expire> <now><SERVERTIME></now> </session> </response> |
{ "error_codes": [ { "code": <ERROR_CODE_ID>, "msg": <ERROR_CODE_MSG> }, ... ], "session": { "token": <TOKEN_ID>, "expire": <TOKEN_EXPIRE>, "now": <SERVERTIME> } } |
- ERROR_CODE_ID - уникальный номер ошибки
- ERROR_CODE_MSG - текст ошибки