Пошагово: первое видео¶
В этом руководстве вы пройдете весь путь партнерской интеграции с тестовыми учетными данными: зарегистрируете подписку тестового пользователя, авторизуете его, получите поток видео и воспроизведете его в браузере. В итоге вы будете знать, что все части вашей интеграции работают.
Время: около 30 минут.
Перед началом работы¶
Убедитесь, что:
- у вас есть тестовые учетные данные от MEGOGO: тестовый ID партнера, публичный и приватный ключ одной платформы, соль и 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 · Сообщить о проблеме на этой странице