پلیر امن XAPlayer با پایتون: جنگو و فلسک
گرفتن توکن پخش با کتابخانهی requests و نمایش پلیر امن XAPlayer در یک view جنگو یا مسیر فلسک.
همهی راهنماها
شروع
شروع سریع: اولین دورهی قفلشده در ۱۰ دقیقهامنیت ویدیو: رمزگذاری، واترمارک و آنچه هیچ پلیری نمیتواندنصب روی سایت شما
قرار دادن پلیر امن در وردپرسفروش دورهی ویدیویی با ووکامرس و پلیر امنپلیر امن XAPlayer در مودلپلیر امن XAPlayer در لاراولپلیر امن XAPlayer با Node.js و Expressپلیر امن XAPlayer در Next.jsپلیر امن XAPlayer با پایتون: جنگو و فلسکسایت HTML، سایتساز یا بدون سروربرای فروشندهها
بارگذاری ویدیو و قفلگذاری خودکارصدور لایسنس، محدودیت دستگاه و صدور گروهیجلوگیری از دانلود ویدیو با IDM: راهنمای کامل برای مدرسهاقفلگذاری ویدیو در وردپرس و ووکامرسبرای دانشجوها
راهنمای دانشجو: تماشای دوره با کد لایسنسپلتفرمها: اندروید، آیفون، ویندوز، مک و لینوکستماشای دوره در اندرویدتماشای دوره در آیفون و آیپدتماشای دوره در ویندوز، مک و لینوکسبرای برنامهنویسها
مرجع API: قرار دادن پلیر امن در هر سایتیک تابع مشترک برای گرفتن توکن مینویسید و آن را در جنگو یا فلسک استفاده میکنید. تنها وابستگی، کتابخانهی requests است.
پیش از شروع#
- در پنل XAPlayer به «تنظیمات» بروید و در بخش «کلید API» یک کلید بسازید. کلید فقط یک بار نمایش داده میشود؛ همان لحظه کپیاش کنید.
- در «سایتهای مجاز برای نمایش پلیر» نشانی کامل سایتتان را اضافه کنید، مثلاً https://academy.example.com. اگر سایت با www هم باز میشود، آن را هم اضافه کنید.
- شناسهی دوره را بردارید: در «تنظیمات»، بخش «راهنمای نمایش پلیر در سایت شما» دوره را انتخاب کنید تا شناسهاش در نمونهکد نوشته شود. همان بخش آخر نشانی صفحهی دوره در پنل هم هست.
# environment (or .env loaded by your settings)
XAPLAYER_API_KEY=xap_sk_...
تابع گرفتن توکن#
# xaplayer.py: shared by the Django and Flask examples (pip install requests)
import os
import requests
XAPLAYER = "https://xaplayer.ir/api/v1"
def player_url(course_id: str, user_id: str, name: str = "") -> str:
res = requests.post(
f"{XAPLAYER}/embed-tokens",
headers={"Authorization": f"Bearer {os.environ['XAPLAYER_API_KEY']}"},
json={"courseId": course_id, "viewer": {"id": user_id, "name": name}},
timeout=10,
)
res.raise_for_status()
return res.json()["url"]
نمایش پلیر#
courses/views.py
# courses/views.py
from django.contrib.auth.decorators import login_required
from django.http import Http404
from django.shortcuts import render
from xaplayer import player_url
@login_required
def watch(request, course_id):
if not user_bought(request.user, course_id): # your own orders check
raise Http404
url = player_url(course_id, str(request.user.pk), request.user.get_full_name())
return render(request, "courses/watch.html", {"player_url": url})
# courses/urls.py
# path("courses/<str:course_id>/watch/", views.watch, name="watch"),
اگر کار نکرد#
| نشانه | علت و راهحل |
|---|---|
| جای پلیر خالی است یا مرورگر میگوید «اجازهی اتصال ندارد» | نشانی سایت در «سایتهای مجاز» نیست یا با www/بدون www فرق دارد. نشانی دقیق صفحه را اضافه کنید. |
| خطای ۴۰۱ (unauthorized) | کلید API اشتباه است یا کلید تازهای ساختهاید و کلید قبلی از کار افتاده. کلید را دوباره کپی کنید. |
| خطای ۴۰۴ (not_found) | شناسهی دوره یا ویدیو اشتباه است یا متعلق به حساب دیگری است. |
| خطای ۴۰۰ (bad_request) | بدنهی درخواست ناقص است: دقیقاً یکی از courseId یا videoId را بفرستید و viewer.id را خالی نگذارید. |
| پلیر بعد از چند ساعت «زمان صفحه تمام شده» میگوید | توکن منقضی شده. هر بار که صفحه باز میشود توکن تازه بگیرید و نشانی پلیر را کش نکنید. |
XAPlayer را ۱۴ روز رایگان، با ۱۰ لایسنس هدیه امتحان کنید.
دورهی خود را رایگان امتحان کنید