Покроково: перше відео¶
У цьому уроці ви з тестовими обліковими даними пройдете весь шлях партнерської інтеграції: зареєструєте передплату для тестового користувача, авторизуєте його, отримаєте потік відео й відтворите його в браузері. Наприкінці ви знатимете, що всі частини вашої інтеграції працюють.
Час: приблизно 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 | Ви припинили передплату |
Що далі¶
- Створення й оновлення каталогу з XML-фіду.
- Відтворення відео з DASH і DRM.
- Чек-лист запуску: перевірки, перш ніж відкрити сервіс користувачам.
Версія посібника 1.4.1, 2026-10-31 · Повідомити про проблему на цій сторінці