واجهة برمجة تطبيقات YouTube JS:اكتشاف "تم تعطيل التضمين"
-
21-08-2019 - |
سؤال
استخدام واجهة برمجة تطبيقات youtube javascript (http://code.google.com/apis/youtube/js_api_reference.html)، أحاول السماح للمستخدم بتضمين مقطع فيديو في بعض المحتوى الذي ينشئه في تطبيقي.لقد نجحت في كل شيء، باستثناء القدرة على اكتشاف حالة عدم السماح بالتضمين في الفيديو والتعامل معها.
حاليًا، يقوم المشغل بتحميل وعرض صورة مصغرة للفيديو غير المسموح به، ولا يعطي خطأ إلا عندما يحاول المستخدم تشغيله.وهذا أمر سيء لأن المستخدم لا يجوز له تشغيل الفيديو قبل حفظ/إرسال المحتوى الخاص به.أود أن أكتشف بشكل استباقي أن الفيديو غير مسموح بتضمينه، وأن أعرض رسالة مفيدة للمستخدم.
الحل الوحيد الذي يمكنني رؤيته هو تشغيله فعليًا (برمجيًا) ومعالجة الخطأ الذي يظهر عند تلك النقطة.
الحل البديل الحالي:
- تضمين المشغل (embedSWF)
- onYouTubePlayerReady():أضف مستمعي الأحداث onError onStateChange.
- onStateChange(newState):عند انتهاء تحميل الفيديو، حاول تشغيله.
على سبيل المثالif (newState == 5 /* CUED */) { player.mute();player.playVideo();player.stopVideo();player.unMute();} - خطأ (خطأ):إذا فشل تشغيل الفيديو في onStateChange، فسيتلقى خطأ هنا.
هل هناك طريقة أفضل؟
شكرًا!
-روب
المحلول
يمكنك الحصول على خلاصة JSON لإدخال الفيديو هذا قبل تضمينه ومعرفة ما إذا كان "yt$format":5 موجودًا، وهو ملف SWF المضمن.لن يكون هناك إذا تم تعطيل التضمين.
http://gdata.youtube.com/feeds/api/videos/video_id?v=2&alt=json-in-script
نصائح أخرى
أعلم أن هذا ليس سؤالًا مباشرًا، ولكن في حالة تعثر شخص يستخدم PHP في هذه المشكلة، فهناك طريقة getNoEmbed()
في Zend_Gdata_YouTube_VideoEntry
.
مأخوذ من المستندات:
إذا كانت قيمة الإرجاع هي مثيل لـ
Zend_Gdata_YouTube_Extension_NoEmbed
, ، لا يمكن تضمين هذا الفيديو.
أعتقد أنك ربما تبحث عن videoSyndicated
أو ال videoEmbeddable
معامل.تقول وثائق API:
videoEmbeddable
تتيح لك المعلمة videoEmbeddable تقييد البحث على مقاطع الفيديو التي يمكن تضمينها في صفحة ويب فقط.إذا قمت بتحديد قيمة لهذه المعلمة، فيجب عليك أيضًا تعيين قيمة معلمة النوع للفيديو.
مرجع: https://developers.google.com/youtube/v3/docs/search/list#videoEmbeddable
videoSyndicated
تتيح لك المعلمة videoSyndicated تقييد البحث على مقاطع الفيديو التي يمكن تشغيلها خارج youtube.com فقط.إذا قمت بتحديد قيمة لهذه المعلمة، فيجب عليك أيضًا تعيين قيمة معلمة النوع للفيديو.
مرجع: https://developers.google.com/youtube/v3/docs/search/list#videoSyndicated
مثال نداء
مع كلاهما:
GET https://www.googleapis.com/youtube/v3/search?&part=snippet,statistics&videoSyndicated=true&videoEmbeddable=true&key=${yourKey}