Инструкция по работе с VoD контентом размещенном на Платформа24
...
Получить у владельцев платформы технический доступ к панели администратора. В дальнейшем он будет использоваться и для доступа к описанию методов API. Также необходимо запросить ID библиотеки
Получить у владельцев платформы доступ к файлу с выгрузкой мета-данных контента для последующего импорта.
В панели администратора получить TOKEN оператора. Полученный TOKEN будет использоваться для подписания всех запросов к API при работе интеграции.
ВАЖНО: При повторном получении повторной генерации токена, ранее выданный токен будет инвалидирован (отключён)
Реализовать логику регистрации пользователя в Платформа24
Реализовать управление подписками пользователя в Платформа24 (Назначение/Отключение подписки)
Реализовать получение потока запрашиваемого контента для пользователя оператора
...
Общая документация по методу создания пользователя здесь: https://signaltv$platform_name$.platform24.tv/v2/redoc#tag/users/operation/users_create
Для создания пользователя необходимо использовать метод
...
Обязательными полями являются username и password
Code Block |
---|
{
"username": "string", // Не может содержать точки в имени пользователя
"first_name": "string",
"last_name": "string",
"provider_uid": "string",
"phone": "string",
"email": "user@example.com",
"password": "string",
"device_limit": 0,
"is_active": true
} |
...
Expand |
---|
title | curl запрос для создания пользователя |
---|
|
Code Block |
---|
curl -X 'POST' \
'https://signaltv$platform_name$.platform24.tv/v2/users?token=21de6432fdc13f2d78f28eebdb46960e' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'X-CSRFTOKEN: 9ewDrRwnm4gDhH7rrEl4Q1o5yd4GnouM9weVEnwXlCwb8QcAeJoHWkqDY7qx21eB' \
-d '{
"username": "tele_720",
"provider_uid": "720",
"password": "2472024"
}' |
|
...
Expand |
---|
|
Code Block |
---|
{
"id": 10364,
"username": "tele_720",
"first_name": "",
"last_name": "",
"provider_uid": "720",
"parental_code": "0000",
"parental_status": "notset",
"phone": null,
"email": null,
"timezone": null,
"device_limit": 5,
"provider": {
"id": 4,
"name": "Telatel-PlanB",
"proxy": null,
"landing": {
"logo": null,
"url": "",
"shortname": "Telatel",
"login": {
"title": "Поздравляем!",
"description": "Услуги современного интерактивного телевидения доступны в сети Вашего провайдера! Уточните, пожалуйста, у своего провайдера логин и пароль для доступа к услуге от компании \"signaltv$platform_name$\""
},
"support": {
"email": "",
"phone": "",
"url": ""
}
},
"auto_auth": null,
"is_allow_additional_packets_without_base": false,
"free_channels_count": 100,
"store_sources": [],
"language": null,
"currency": {
"ISO_CODE": "RUB",
"UTF_NAME": "₽",
"ASCII_NAME": "руб.",
"FORMAT": "{amount} {symbol}"
},
"phone_mask": null
},
"is_provider_free": true,
"is_active": true,
"is_testuser": false,
"is_self_deletion_allowed": false,
"is_validated": false,
"is_guest": false,
"last_login": null,
"date_joined": "2023-04-04T10:03:06.257865Z",
"subscriptions": [],
"parental_dialogue": {}
} |
|
...
Expand |
---|
|
Code Block |
---|
curl -X 'GET' \
'https://signaltv$platform_name$.platform24.tv/v2/packets?token=bd21de6432fdc13f2d783ecf28eebdb46960e052' \
-H 'accept: application/json' |
|
...
Expand |
---|
title | Подключение подписки пользователю |
---|
|
Code Block |
---|
curl -X 'POST' \
'https://signaltv$platform_name$.platform24.tv/v2/users/10364/subscriptions?token=bd21de6432fdc13f2d783ecf28eebdb46960e052' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'X-CSRFTOKEN: NYFDQ99YklE3PSI0niBM3DbjXrOJe5dxNgnV3F9yjTUBG1N9anEp9WdRnlaATIXm' \
-d '[{
"packet_id": 9,
"start_at": "2023-04-04T13:49:12.903Z",
"renew": true,
"is_paused": true
}
]' |
|
...
Expand |
---|
title | Получение текущих пользовательских подписок |
---|
|
Code Block |
---|
curl -X 'GET' \
'https://signaltv$platform_name$.platform24.tv/v2/users/10364/subscriptions?token=bd21de6432fdc13f2d783ecf28eebdb46960e052' \
-H 'accept: application/json' |
|
...
Expand |
---|
title | curl запрос для удаления подписки |
---|
|
Code Block |
---|
curl -X 'DELETE' \
'https://signaltv$platform_name$.platform24.tv/v2/users/10364/subscriptions/849505762352128683?token=bd21de6432fdc13f2d783ecf28eebdb46960e052' \
-H 'accept: */*' \
-H 'X-CSRFTOKEN: tUhy3Z7t5LMOVtVsOoIGvadOorFcht5RPZ3vjjntproxIJrW2wFs63fqc7zADuAL' |
|
...
ДОБАВЛЕНИЕ УСТРОЙСТВА ПОЛЬЗОВАТЕЛЯ
Для того что бы пользователь смог получить ссылку на поток, необходимо зарегистрировать устройство пользователя. Необходимо что бы у пользователя был минимум одно зарегистрированное устройство. Для регистрации необязательно указывать реальные данные.
Для регистрации устройства необходимо использовать метод
POST /v2/devices
Expand |
---|
Code Block |
---|
{
"user_id" : 10364,
"name": "Telatel_10364",
"device_type": "pc",
"vendor": "Telatel"
} |
|
Поле device_type должно содержать одно из следующих значений: tv, stb, tablet, phone, pc
АВТОРИЗАЦИЯ ПО device_id
Теперь надо получить пользовательский токен для созданного пользовательского устройства с помощью метода
POST /v2/auth/device
Expand |
---|
Code Block |
---|
curl -X 'POST' \
'https://signaltv.platform24.tv/v2/auth/device' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'X-CSRFTOKEN: B8FOLywf3J5DEqOhXijJfO1oTnDrZjzaXdrL1SMfnpHmrGkLbqgvQH30H3xPlk44' \
-d '{
"device_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
}' |
|
В случае успеха будет JSON ответ
...
В случае успешного выполнения запроса будет JSON из которого нужно будет сохранить для этого пользователя ID созданного устройства. Он содержится в теге ID (e67044b9-70a2-482d-b857-f80369c14187).
Expand |
---|
Code Block |
---|
{
"id": "e67044b9-70a2-482d-b857-f80369c14187",
"name": "Telatel_10364",
"device_type": "pc",
"vendor": "Telatel",
"model": null,
"version": null,
"serial": null,
"os_name": null,
"os_version": null,
"application_type": null,
"profile": null,
"devicestore_source": {
null,
"idsettings": "42a757fe-9126-4809-8ac7-2989f8c555ce"null,
"namenotification": "SHIELD"null,
"device_typeinterfaces": "stb"[],
"vendorcreated_at": "NVIDIA2023-04-13T08:24:47.964052Z",
"modellogin_at": "SHIELD Android TV"null,
"versionuser_id": "3.348 (2022-12-24 19:37:48)",
10364,
"serialparental_settings": "NVIDIA_SHIELD Android TV_74e173f971f0ccc2_74e173f971f0ccc2_00:00:00:00:00:00",
"os_name": "Android",
"os_version": "30",
"application_type": "android-tv",
"profile": null,
"store_source": null,
"settings": {
"adapter"null
} |
|
АВТОРИЗАЦИЯ ПО device_id
Теперь надо получить пользовательский токен для созданного пользовательского устройства с помощью метода
POST /v2/auth/device
Expand |
---|
Code Block |
---|
curl -X 'POST' \
'https://$platform_name$.platform24.tv/v2/auth/device' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'X-CSRFTOKEN: B8FOLywf3J5DEqOhXijJfO1oTnDrZjzaXdrL1SMfnpHmrGkLbqgvQH30H3xPlk44' \
-d '{
"device_id": "e67044b9-70a2-482d-b857-f80369c14187"
}' |
|
В случае успеха будет JSON ответ
Expand |
---|
Code Block |
---|
{
"access_token": "bd999428c6760a0369b299e74d9f98899bc2ed4a",
"expired": null,
"parentalControldevice": false,{
"referrer_urlid": "utm_source=google-play&utm_medium=organic",
42a757fe-9126-4809-8ac7-2989f8c555ce",
"sleepTimername": null"SHIELD",
"startVersiondevice_type": 3348"stb",
"streamAspectvendor": {
"NVIDIA",
"acceptmodel": ["SHIELD Android TV",
"original""version": "3.348 (2022-12-24 19:37:48)",
"serial": "NVIDIA_SHIELD "zoom"Android TV_74e173f971f0ccc2_74e173f971f0ccc2_00:00:00:00:00:00",
"os_name": "Android",
"wideos_version": "30",
"application_type": "android-tv",
"letterboxprofile": null,
"store_source": null,
],
"settings": {
"adapter": null,
"parentalControl": false,
"value": "original"
"referrer_url": "utm_source=google-play&utm_medium=organic",
"sleepTimer": null,
} "startVersion": 3348,
"streamTypestreamAspect": {
"accept": [
"hlsoriginal",
"local_lowzoom",
"localwide",
], "letterbox"
" ],
"adapter": null,
"value": "hlsoriginal"
},
"tvOnlystreamType": false,{
"unique_idaccept": null[
}, "notificationhls":,
{ "notification_type": "androidlocal_stblow",
"token": "cWcaamu0TbCJqBTTA9EmCy:APA91bFBn1NN99ApJ7WwZ45mdH5lkZPK4N0USKfltLsCA8J7WEOvmuQy5A-XUP5D1p6iKMubOaksIHk9VU4xqLaYqioLFvjPobvXGKG3qzTqRuE-9DEOY_Kbu60YiSiRu4ww0JI6mlKI"local"
],
"created_atadapter": "2022-12-24T22:33:41.880885Z"
null,
}, "interfacesvalue": ["hls"
{
},
"nametvOnly": "lo"false,
"macunique_id": "00:00:00:00:00:00" null
},
} "notification": {
], "creatednotification_attype": "2022-12-24T22:33:36.663327Zandroid_stb",
"login_ "token": "cWcaamu0TbCJqBTTA9EmCy:APA91bFBn1NN99ApJ7WwZ45mdH5lkZPK4N0USKfltLsCA8J7WEOvmuQy5A-XUP5D1p6iKMubOaksIHk9VU4xqLaYqioLFvjPobvXGKG3qzTqRuE-9DEOY_Kbu60YiSiRu4ww0JI6mlKI",
"created_at": "20232022-0412-07T1624T22:1033:0841.296208Z"880885Z"
},
"user_idinterfaces": 43, [
{
"parental_settingsname": null"lo",
}, "profile": null
} |
|
Из полученного ответа нужен только значение поля “access_token“. Это значение далее надо будет использовать для получения ссылки на контент запрашиваемый пользователем.
ЗАПРОС ССЫЛКИ НА СТРИМ
Теперь когда все зарегистрировано, подключено, создано и т.п. можно запросить поток.
Для запроса потока надо знать его content_id и токен пользователя, для которого получаем поток и использовать метод
...
mac": "00:00:00:00:00:00"
}
],
"created_at": "2022-12-24T22:33:36.663327Z",
"login_at": "2023-04-07T16:10:08.296208Z",
"user_id": 43,
"parental_settings": null
},
"profile": null
} |
|
Из полученного ответа нужено только значение поля “access_token“. Это значение далее надо будет использовать для получения ссылки на контент запрашиваемый пользователем.
ЗАПРОС ССЫЛКИ НА СТРИМ
Теперь когда все зарегистрировано, подключено, создано и т.п. можно запросить поток.
Для запроса потока надо знать library_id, content_id запрашиваемого контента и токен пользователя, для которого получаем поток.
library_id - неизменный в рамках всей библиотеки и сообщается партнёром
content_id - содержится в файле с выгрузкой метаданных. Доступ к файлу также предоставляется партнёром.
ВНИМАНИЕ: Если JSON файл с мета-данными будет открываться в браузере, то из-за особенностей реализации java-script, ID используемые в файле могут отображаться не корректно.
Для получение непосредственно ссылки на контент надо использовать метод
GET/v2/libraries/{library_id}/contents/{id}/stream
Expand |
---|
Code Block |
---|
curl -X 'GET' \
'https://$platform_name$.platform24.tv/v2/libraries/23/contents/832404576750893135/stream?access_token=37efadb21cf871cfee4d47fe2d0521552dc4be5f' \
-H 'accept: application/json' |
|
В полученном ответе в теге hls будет содержаться ссылка на запрошенный контент, которую надо отдать клиенту на воспроизведение.
Expand |
---|
title | В полученном ответе в теге hls будет содержаться ссылка на запрошенный контент, которую надо отдать клиенту на воспроизведение. |
---|
|
Code Block |
---|
{
"history": null,
"type": "full",
"from": 0,
"to": 0,
"mime_type": "application/vnd.apple.mpegurl",
"hls": "http://195.191.208.9:8060/hls/jwt/eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJwYXRoX21kNSI6IjhlNzQ3MDA2ODQ2YmQzNzQ0ZGNkYTc5NDgyMTIzNDliIiwidCI6IjM3ZWZhZGIyMWNmODcxY2ZlZTRkNDdmZTJkMDUyMTU1MmRjNGJlNWYiLCJ0cyI6MTY4MTM3NzI3MCwiaXQiOmZhbHNlfQ.UyWBryJ_FOvW3M_zdmd8MOuGVJD0P2zaLZOR2YzVBx4/vod/tracks/v1-v2-v3-a1/signaltv/db68a2a1266669a06fee290d5225b18d.mp4/clipFrom/0000/master.m3u8",
"packshots": [],
"stat": {
"id": "4418d851-aab2-4fd4-a9d5-4888e7a484de"
}
} |
|