Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Инструкция по работе с 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
titlecurl запрос для создания пользователя
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
titleResponse code 200
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
titlecurl /v2/packets
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
titlecurl запрос для удаления подписки
Code Block
curl -X 'DELETE' \
  'https://signaltv$platform_name$.platform24.tv/v2/users/10364/subscriptions/849505762352128683?token=bd21de6432fdc13f2d783ecf28eebdb46960e052' \
  -H 'accept: */*' \
  -H 'X-CSRFTOKEN: tUhy3Z7t5LMOVtVsOoIGvadOorFcht5RPZ3vjjntproxIJrW2wFs63fqc7zADuAL'

...

Работа с этим методом аналогична методу DELETE описанному выше.

ДОБАВЛЕНИЕ УСТРОЙСТВА ПОЛЬЗОВАТЕЛЯ

...

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

Для регистрации устройства необходимо использовать метод

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

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

...

В случае успешного выполнения запроса будет JSON из которого нужно будет сохранить для этого пользователя ID созданного устройства. Он содержится в теге ID (e67044b9-70a2-482d-b857-f80369c14187).

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 ответ

Expand
Code Block
{
  "access_token": "bd999428c6760a0369b299e74d9f98899bc2ed4a",
  "expired "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,
      "parentalControl": false,
      "referrer_url": "utm_source=google-play&utm_medium=organic",
      "sleepTimer": null,
      "startVersion": 3348,
      "streamAspect": {
        "accept": [
          "original",
          "zoom",
          "wide",
          "letterbox"
        ],
 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,
  "device": {
    "id": "42a757fe-9126-4809-8ac7-2989f8c555ce",
    "name": "SHIELD",
    "device_type": "stb",
    "vendor": "NVIDIA",
    "model": "SHIELD Android TV",
    "version": "3.348 (2022-12-24 19:37:48)",
    "serial": "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,
      "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_at": "2022-12-24T22:33:41.880885Z"
 ],
   },     "interfacesadapter": null,
    [    "value": "hls"
 {     },
      "nametvOnly": "lo"false,
        "macunique_id": "00:00:00:00:00:00" null
    },
  }  "notification": {
 ],     "creatednotification_attype": "2022-12-24T22:33:36.663327Zandroid_stb",
      "login_attoken": "2023cWcaamu0TbCJqBTTA9EmCy:APA91bFBn1NN99ApJ7WwZ45mdH5lkZPK4N0USKfltLsCA8J7WEOvmuQy5A-04-07T16:10:08.296208ZXUP5D1p6iKMubOaksIHk9VU4xqLaYqioLFvjPobvXGKG3qzTqRuE-9DEOY_Kbu60YiSiRu4ww0JI6mlKI",
      "user_id": 43created_at": "2022-12-24T22:33:41.880885Z"
    },
    "parental_settingsinterfaces": null [
      {
     },   "profilename": null
}

Из полученного ответа нужен только значение поля “access_token“. Это значение далее надо будет использовать для получения ссылки на контент запрашиваемый пользователем.

ЗАПРОС ССЫЛКИ НА СТРИМ

Теперь когда все зарегистрировано, подключено, создано и т.п. можно запросить поток.

Для запроса потока надо знать его content_id и токен пользователя, для которого получаем поток и использовать метод

...

"lo",
        "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"
  }
}