Перейти до змісту

Покроково: перше відео

У цьому уроці ви з тестовими обліковими даними пройдете весь шлях партнерської інтеграції: зареєструєте передплату для тестового користувача, авторизуєте його, отримаєте потік відео й відтворите його в браузері. Наприкінці ви знатимете, що всі частини вашої інтеграції працюють.

Час: приблизно 30 хвилин.

Перед початком роботи

Переконайтеся, що у вас є:

  • тестові облікові дані від MEGOGO: тестовий ID партнера, публічний і приватний ключі однієї платформи, сіль (salt) та ID послуги тестової передплати (див. Облікові дані);
  • IP-адреса вашого комп'ютера в списку IP-адрес для Billing API (див. Облікові дані);
  • Python 3 і браузер;
  • пройдений урок Початок роботи: ваш підпис правильний.

Усі запити надходять на робочі сервери. Тестовий користувач і тестова передплата — це справжні записи у вашому тестовому партнерському обліковому записі. На кроці 6 передплату буде скасовано.

Крок 1. Підготуйте скрипт

Збережіть цей скрипт як megogo_tutorial.py і впишіть у перші рядки свої тестові значення.

import json
import urllib.parse
import urllib.request
from hashlib import md5

PARTNER_ID = "{partner_id}"       # test partner ID, for example testprod_ua
PUBLIC_KEY = "{public_key}"
PRIVATE_KEY = "{private_key}"
SALT = "{salt}"
SERVICE_ID = "{service_id}"       # the test subscription
USER_ID = "tutorial-user-001"     # any new user identifier

API = "https://api.megogo.net/v1/"
BILLING = f"https://billing.megogo.net/partners/{PARTNER_ID}/"


def content_api(path, **params):
    """Send a signed Content API request. The order of the parameters is kept."""
    joined = "".join(f"{k}={v}" for k, v in params.items())
    sign = md5((joined + PRIVATE_KEY).encode("utf-8")).hexdigest() + PUBLIC_KEY
    query = urllib.parse.urlencode({**params, "sign": sign})
    with urllib.request.urlopen(f"{API}{path}?{query}") as response:
        return json.load(response)


def billing_api(path, **params):
    """Send a Billing API request. It is not signed: MEGOGO checks your IP address."""
    query = urllib.parse.urlencode(params)
    with urllib.request.urlopen(f"{BILLING}{path}?{query}") as response:
        return json.load(response)

Крок 2. Зареєструйте передплату для тестового користувача

Додайте в скрипт ці рядки й запустіть його:

print(billing_api("subscription/subscribe", userId=USER_ID, serviceId=SERVICE_ID))
print(billing_api("user/subscriptions", identifier=USER_ID))

Очікуваний результат:

{'successful': True}
{'identifier': 'tutorial-user-001', 'svod': [{'serviceId': '...', 'serviceName': '...', 'dateFinish': ..., 'dateFinishString': '...'}]}

MEGOGO створив користувача й зареєстрував передплату. У робочому режимі цей запит надсилають після того, як користувач оплатив передплату у вашому білінгу (див. Продаж передплати).

Крок 3. Отримайте токен доступу для користувача

Токен авторизації — це MD5-хеш ідентифікатора користувача, ID партнера й солі:

token = md5((USER_ID + PARTNER_ID + SALT).encode("utf-8")).hexdigest()
auth = content_api("auth/by_partners", isdn=USER_ID, partner_key=PARTNER_ID, token=token)
access_token = auth["data"]["tokens"]["access_token"]
print(auth["result"], access_token[:12] + "...")

Очікуваний результат: ok і початок токена доступу. Докладніше — у розділі Авторизація користувача.

Крок 4. Знайдіть відео, доступне користувачеві

Візьміть зі свого XML-фіду ID фільму з vod="svod" або фільм із тестових даних. Потім переконайтеся, що користувач може його дивитися:

VIDEO_ID = 6680  # replace with a video of your feed
info = content_api("video/info", id=VIDEO_ID, lang="en", access_token=access_token)
print(info["data"]["title"], info["data"]["is_available"], info["data"]["delivery_rules"])

Очікуваний результат: назва фільму, True і ['svod']. Якщо ви отримали False, причину вказано в полі restrictions відповіді. Візьміть інше відео.

Крок 5. Отримайте потік і відтворіть його

Запитайте потік із токеном доступу користувача:

stream = content_api("stream", video_id=VIDEO_ID, lang="en", access_token=access_token)
data = stream["data"]
print(data["stream_type"], repr(data["drm_type"]))
print(data["src"])

Очікуваний результат: hls '' (HLS без DRM) і URL маніфесту. Якщо src порожній, перевірте restrictions (див. Відтворення відео).

Щоб відтворити потік, збережіть цю сторінку як player.html, вставте в неї значення src і відкрийте її в браузері:

<!doctype html>
<video id="video" controls width="640"></video>
<script src="https://cdn.jsdelivr.net/npm/hls.js@1.5.17/dist/hls.min.js"></script>
<script>
  const src = "PUT_THE_SRC_VALUE_HERE";
  const video = document.getElementById("video");
  if (video.canPlayType("application/vnd.apple.mpegurl")) {
    video.src = src;            // Safari plays HLS without a library
  } else {
    const hls = new Hls();      // other browsers: hls.js
    hls.loadSource(src);
    hls.attachMedia(video);
  }
</script>

Відео відтворюється. Якщо ваш ключ видає DASH або DRM (stream_type має значення dash або drm_type не порожній), ця проста сторінка його не відтворить. Див. Відтворення відео і DRM.

УВАГА

URL із src призначений лише для цього користувача й цього сеансу відтворення. Не зберігайте його й не передавайте іншим користувачам. Запитуйте новий src щоразу, коли користувач запускає відтворення.

Крок 6. Скасуйте тестову передплату

print(billing_api("subscription/unsubscribe", userId=USER_ID, serviceId=SERVICE_ID))
print(billing_api("user/subscriptions", identifier=USER_ID))

Очікуваний результат: {'successful': True}, а потім 'svod': [].

Що ви зробили

Крок Інтерфейс Що відбулося
2 Billing API MEGOGO зареєстрував передплату для вашого користувача
3 Content API Ваш сервер отримав токен доступу для користувача
4 Content API Ви знайшли відео, яке користувач може дивитися
5 Content API, CDN Ваш плеєр відтворив потік
6 Billing API Ви припинили передплату

Що далі


Версія посібника 1.4.1, 2026-10-31 · Повідомити про проблему на цій сторінці