تسمح واجهة برمجة التطبيقات لبيانات YouTube للتطبيقات العميلة باسترجاع محتوى YouTube وتحديثه في شكل خلاصات Google Data API. يمكن أن يستخدم تطبيق العميل خلاصات YouTube Data API لجلب مقاطع الفيديو والتعليقات والردود وقوائم التشغيل والملفات الشخصية للمستخدمين وجهات اتصال المستخدمين والبحث فيها وتحديثها، بالإضافة إلى طلب البحث عن مقاطع الفيديو التي تطابق معايير معينة.
إلى جانب توفير بعض المعلومات الأساسية عن إمكانات YouTube Data API، يقدّم هذا المستند أمثلة عن كيفية التفاعل مع واجهة برمجة التطبيقات باستخدام مكتبة برامج Python. لاستخدام مكتبة برامج Python، يجب استخدام وحدات Python 2.0 أو الأحدث ووحدات Element Tree وhttplib وurllib. راجع وحدات التبعية لمزيد من التفاصيل.
وإذا كنت بحاجة إلى مساعدة في إعداد مكتبة برامج Python، يمكنك مراجعة دليل البدء. إذا كنت ترغب في معرفة المزيد عن البروتوكول الأساسي الذي تستخدمه مكتبة برامج Python للتفاعل مع YouTube، فراجع صفحة بروتوكول دليل مطور البرامج.
لمحة عن هذا المستند
الجمهور
هذا المستند مخصّص للمبرمجين الذين يريدون كتابة تطبيقات عميلة يمكنها التفاعل مع YouTube باستخدام مكتبة برامج Python. وتوفر سلسلة من الأمثلة على تفاعلات البيانات الأساسية من خلال واجهة برمجة التطبيقات.
للحصول على معلومات حول مرجع YouTube Data API، يرجى مراجعة الدليل المرجعي.
يفترض هذا المستند أنك تفهم الأفكار العامة وراء بروتوكول واجهات برمجة التطبيقات لبيانات Google ، وأنك تعرف كيفية البرمجة في Python.
للحصول على معلومات مرجعية حول فئات وطرق Python، راجع pyDocs (بالنسبة إلى فئة الخدمة، وفئات البيانات) التي يتم تضمينها في شفرة المصدر.
بنية المستند
يحتوي هذا المستند على الأقسام التالية:
-
يصف قسم المصادقة طريقتي المصادقة المختلفتين المتوفرتين لربط عمليات واجهة برمجة التطبيقات بحساب مستخدم معين. يوضح هذا القسم أيضًا الاختلافات بين المصادقة في YouTube Data API وواجهات برمجة التطبيقات للبيانات في Google. في هذا المستند، ستوضّح التفسيرات لدوال واجهة برمجة تطبيقات محدّدة بوضوح ما إذا كانت الدالة تتطلب مصادقة المستخدم. بشكل عام، يجب مصادقة جميع الطلبات التي تعدّل بيانات الفيديو أو الخلاصة. لا تتطلّب طلبات القراءة فقط للفيديوهات العلنية المصادقة.
-
يوفر القسم فهم خلاصات الفيديو والإدخالات نموذج استجابة لواجهة برمجة التطبيقات ويوضح كيفية استخراج المعلومات حول مقطع فيديو واحد من قائمة مقاطع الفيديو أو مجموعة من نتائج البحث. كما يوضح هذا القسم كيفية الدخول إلى البيانات الوصفية حول إدخال فيديو معين. أخيرًا، يوضح هذا القسم آلية تحديث إدخال فيديو فردي.
-
يوضح القسم استرداد مقاطع الفيديو والبحث عنها كيفية جلب قوائم معينة من مقاطع الفيديو، مثل خلاصة قياسية لمقاطع الفيديو الأكثر شيوعًا على YouTube. تشتمل قوائم مقاطع الفيديو الأخرى على مقاطع الفيديو التي تم تحميلها بواسطة مستخدم معين وقوائم مقاطع الفيديو ذات الصلة بفيديو معين. ويوضح هذا القسم أيضًا كيفية استخدام واجهة برمجة التطبيقات للسماح للمستخدمين بالبحث في مكتبة الفيديو في YouTube بحسب عبارات بحث أو فئات محددة.
-
يوضح قسم تحميل مقاطع الفيديو بإيجاز طريقتين يمكنك من خلالهما السماح للمستخدمين بتحميل مقاطع الفيديو إلى YouTube من تطبيقك. بالإضافة إلى ذلك، يشرح هذا القسم أيضًا كيفية تحميل الفيديوهات كردود على فيديوهات أخرى.
-
يصف القسم تحديث مقاطع الفيديو وحذفها كيفية استخدام واجهة برمجة التطبيقات لتحديث معلومات حول مقطع فيديو YouTube. وهي تشرح أيضًا كيفية إزالة فيديو باستخدام واجهة برمجة التطبيقات.
-
يصف القسم استخدام ميزات المنتدى وظائف واجهة برمجة التطبيقات التي تتيح للمستخدمين التفاعل مع فيديوهات YouTube. توضح هذه الوظائف طلبات نشر تقييم أو تعليق أو شكوى على فيديو حالي. يمكنك أيضًا استخدام واجهة برمجة التطبيقات لاسترداد قوائم تعليقات الفيديو.
-
يوضح القسم حفظ مقاطع الفيديو وجمعها كيفية استخدام واجهة برمجة التطبيقات للدخول إلى مقاطع فيديو وقوائم تشغيل واشتراكات مفضلة في قنوات YouTube وإنشائها وتحديثها. ويوضح أيضًا كيفية تعديل قوائم تشغيل الفيديو والمفضلة عن طريق إضافة مقاطع فيديو وإزالتها.
-
يوضح القسم تمكين تفاعل المستخدم كيفية استخدام واجهة برمجة التطبيقات لاسترداد الملفات الشخصية للمستخدمين وتحديثها. يوضح هذا القسم أيضًا كيفية استرداد جهات اتصال المستخدم وإضافتها وتحديثها وحذفها.
البدء
المتطلّبات
يمكن أن يستخدم تطبيق العميل خلاصات YouTube Data API للبحث عن مقاطع الفيديو والتعليقات والردود وقوائم التشغيل والاشتراكات والملفات الشخصية للمستخدمين واستردادها وتحديثها.إلى جانب توفير بعض المعلومات الأساسية عن إمكانات YouTube Data API، يقدّم هذا المستند أمثلة عن كيفية التفاعل مع واجهة برمجة التطبيقات باستخدام مكتبة برامج Python. لاستخدام مكتبة برامج Python، يجب استخدام وحدات Python 2.2 أو الأحدث ووحدات Element Tree وhttplib وurllib. راجع وحدات التبعية لمزيد من التفاصيل.
اطلع على دليل الخطوات الأولى للحصول على مزيد من المعلومات حول تهيئة بيئتك. إذا كنت ترغب في معرفة المزيد عن البروتوكول الأساسي الذي تستخدمه مكتبة برامج Python للتفاعل مع YouTube، فاطلع على صفحة بروتوكول دليل مطور البرامج.
يمكن نسخ/لصق مقتطفات نموذج الشفرة أدناه في الشفرة وتعديلها لتناسب احتياجاتك.
قبل تنفيذ أي عمليات باستخدام YouTube Data API، يجب إعداد
كائن gdata.youtube.service.YouTubeService
كما هو موضّح أدناه. ستُجري عبارات import
المدرَجة أدناه عمليات استيراد إضافية تلقائيًا من وحدتيّ gdata.media
وgdata.geo
. الرجاء ملاحظة أن جميع الإجراءات باستثناء استرداد المحتوى العام ستتطلب مصادقة.
import gdata.youtube import gdata.youtube.service yt_service = gdata.youtube.service.YouTubeService() # Turn on HTTPS/SSL access. # Note: SSL is not available at this time for uploads. yt_service.ssl = True
تعمل معظم أمثلة الطرق في هذا الدليل على مثال gdata.youtube.service.YouTubeService
. وقد يكون من المفيد اختبار الطلبات التي لم تتم مصادقتها من خلال مترجم python التفاعلي.
ملاحظة: يجب إضافة مكتبة برامج Python بشكلٍ صحيح في مسارك. يُرجى التأكد من تثبيته عن طريق تشغيل النص البرمجي setup.py
المُقدَّم. راجع دليل الخطوات الأولى للحصول على مزيد من المعلومات.
المصادقة
يمكن استخدام مكتبة عميل Python للعمل مع الخلاصات العامة أو الخلاصات الخاصّة. الخلاصات العلنية للقراءة فقط ولا تتطلب أي مصادقة. تتطلب الخلاصات الخاصة المصادقة على خوادم YouTube.
يمكن تنفيذ المصادقة عبر مصادقة ClientLogin (لتطبيقات سطح المكتب)، أو عن طريق مصادقة AuthSub (لتطبيقات الويب).
إعداد مفتاح مطوّر البرامج ومعرف العميل
يحدّد مفتاح مطوّر البرامج مطوّر YouTube الذي يرسل طلب واجهة برمجة التطبيقات. يحدد معرِّف العميل تطبيقك لأغراض التسجيل وتصحيح الأخطاء.
عند تقديم طلب للحصول على واجهة برمجة تطبيقات باستخدام مكتبة عميل Python، يتم استخدام عنوان الطلب X-GData-Key
لتحديد مفتاح مطوّر البرامج الخاص بك واستخدام عنوان X-GData-Client
لتحديد معرِّف العميل. يمكن إعداد مفتاح مطوّر البرامج ورقم تعريف العميل على كائن YouTubeService
، بشكل مستقل عن نظام المصادقة المستخدَم:
yt_service.developer_key = 'ABCxyz123...' yt_service.client_id = 'My-Client_id'
يجب الاشتراك للحصول على مفتاح مطوّر برامج YouTube.
مصادقة AuthSub لتطبيقات الويب
يتم استخدام مصادقة الخادم الوكيل AuthSub بواسطة تطبيقات الويب التي تحتاج إلى مصادقة المستخدمين في حسابات YouTube/Google. لا يحتاج المُشغِّل إلى الوصول إلى اسم المستخدم وكلمة المرور لمستخدم YouTube، بل يجب فقط استخدام رموز AuthSub المميزة.
عندما يزور المستخدم تطبيقك لأول مرة، فإنه لم تتم مصادقته باستخدام خدمات Google حتى الآن. وفي هذه الحالة، يلزمك تزويدهم برابط يوجه المستخدم إلى Google لتفويض طلب تطبيقاتك بالدخول إلى حساب YouTube. توفر مكتبة عميل Python وظيفة لإنشاء عنوان URL هذا. تعمل الشفرة أدناه على إعداد رابط إلى صفحة AuthSubRequest.
def GetAuthSubUrl(): next = 'http://www.example.com/video_upload.pyc' scope = 'http://gdata.youtube.com' secure = False session = True yt_service = gdata.youtube.service.YouTubeService() return yt_service.GenerateAuthSubURL(next, scope, secure, session) authSubUrl = GetAuthSubUrl() print '<a href="%s">Login to your Google account</a>' % authSubUrl
لاحظ المَعلمات التي تم إرسالها إلى طريقة عناصر خدمة GenerateAuthSubURL
:
- next — عنوان URL للصفحة التي يتعيّن على YouTube إعادة توجيه المستخدم إليها بعد أن يفوّض تطبيقك بالدخول إلى حسابه.
- scope: ما يشير إلى أنّ التطبيق سيصل إلى خلاصات YouTube API فقط
- secure — الإشارة إلى أن الرمز المميز المعروض لن يكون رمزًا مميزًا آمنًا.
- session — الإشارة إلى أنه يمكن استبدال هذا الرمز المميز برمز مميز متعدد الاستخدامات (جلسة).
سيبدو عنوان URL المعروض على النحو التالي:
https://www.google.com/accounts/AuthSubRequest?scope=http%3A%2F%2Fgdata.youtube.com&session=1&secure=0&next=http%3A%2F%2Fwww.example.com%2Fvideo_upload.pyc
ويمكن للمستخدم بعد ذلك اتباع الرابط لتسجيل الدخول إلى حسابه في YouTube. بعد أن يفوّض المستخدم تطبيقك بالوصول إلى حسابه، ستتم إعادة توجيهه مرة أخرى إلى عنوان URL لـ next
. سيتضمن عنوان URL قيمة رمز مميز للاستخدام لمرة واحدة ملحقًا به كمعلمة طلب بحث. يظهر عنوان URL على النحو التالي:
http://www.example.com/video_upload.pyc?token=Abc123...
سيوضح القسم التالي كيفية ترقية هذا الرمز المميز. يوضح المقتطف أدناه إحدى طرق استرداد هذا الرمز المميز من عنوان URL:
import cgi parameters = cgi.FieldStorage() authsub_token = parameters[[]'token' ]
الترقية إلى رمز مميز للجلسة
لأسباب تتعلق بالأمان، يكون هذا الرمز المميز صالحًا للاستخدام مرة واحدة فقط، لذا عليك الآن استبدال هذا الرمز المميز صالح للاستخدام مرة واحدة برمز مميز للجلسة. يتم وصف هذه العملية في وثائق AuthSub . يعرض مقتطف الشفرة التالي كيفية ترقية الرمز المميز.
yt_service = gdata.youtube.service.YouTubeService() yt_service.SetAuthSubToken(authsub_token) yt_service.UpgradeToSessionToken()
تمثل قيمة الرمز المميز هذا رمز AuthSub لمرة واحدة. بما أنه تم تحديد session = True
أعلاه، يمكن استبدال هذا الرمز المميز برمز جلسة AuthSub باستخدام طريقة UpgradeToSessionToken
، التي تستدعي خدمة AuthSubSessionToken
.
تم الآن مصادقة العنصر YouTubeService
بالكامل ويمكن استخدامه لتنفيذ جميع الطلبات الإضافية باستخدام واجهة برمجة تطبيقات YouTube. لن تنتهي صلاحية الرموز المميزة لجلسة AuthSub إلا إذا أصدرت طلبًا بإبطالها على وجه التحديد، أو قرر المستخدم إبطال الوصول من خلال الانتقال إلى صفحة المواقع المسموح بها في حسابه على YouTube.
مصادقة ClientLogin للتطبيقات المثبتة
يتم استخدام مصادقة ClientLogin في التطبيقات المثبتة التي يمكنها تخزين أو الاستعلام عن اسم المستخدم وكلمة المرور للمستخدم. لاستخدام هذا النوع من المصادقة، استدعِ طريقة ProgrammaticLogin
من YouTubeService
المكتسَبة من
الفئة gdata.service.GDataService
، مع تحديد رقم التعريف وكلمة المرور للمستخدم الذي يرسل العميل طلب المصادقة إليه نيابةً عنه.
yt_service = gdata.youtube.service.YouTubeService() yt_service.email = 'jo@gmail.com' yt_service.password = 'mypassword' yt_service.source = 'my-example-application' yt_service.ProgrammaticLogin()
بعد إعداد بيانات الاعتماد، يمكن استخدام الكائن YouTubeService
لمعالجة جميع الطلبات الأخرى. لتتمكّن من تنفيذ عمليات التحميل وأي نوع من طلبات "الكتابة" (إضافة تعليقات، إلخ) إلى واجهة برمجة تطبيقات YouTube، تأكّد من إدخال مفتاح مطوّر البرامج ومعرّف العميل أيضًا إلى الكائن yt_service
عند إجراء المصادقة:
# A complete client login request yt_service.email = 'jo@gmail.com' yt_service.password = 'mypassword' yt_service.source = 'my-example-application' yt_service.developer_key = 'ABC123...' yt_service.client_id = 'my-example-application' yt_service.ProgrammaticLogin()
يُحدِّد الكائن YouTubeService
رأسَي X-GData-Key
وX-GData-Client
الصحيحَين تلقائيًا عند ضبط السمتَين developer_key
وclient_id
.
ملاحظة: يُرجى الرجوع إلى مستندات مصادقة Google Data APIs للحصول على معلومات أكثر تفصيلاً عن آليتي AuthSub وClientLogin.
فهم خلاصات الفيديو والإدخالات
توفر واجهة برمجة التطبيقات لبيانات YouTube خلاصات فيديو متعددة تمثل قوائم مقاطع الفيديو، مثل الخلاصات القياسية والتحميلات والاشتراكات والمفضلة. تم توثيق عنوان URL لكل خلاصة في الدليل المرجعي.
عرض خلاصة من مقاطع الفيديو
تتألف العديد من الخلاصات في YouTube API من إدخالات فيديو. يمكن إنشاء نموذج لهذه الخلاصات كعناصر gdata.youtube.YouTubeVideoFeed
، يحتوي كل منها على عدد من gdata.youtube.YouTubeVideoEntry
من العناصر. ويتطابق كل إدخال فيديو مع فيديو واحد على YouTube بالضبط ويحتوي على معلومات حول الفيديو.
تتمثّل التركيبة الأساسية لاسترداد قائمة الفيديوهات في إنشاء عنوان URL لخلاصة فيديو ثم معالجة الإدخالات واحدة تلو الأخرى، على غرار الرمز التالي:
def GetAndPrintVideoFeed(uri): yt_service = gdata.youtube.service.YouTubeService() feed = yt_service.GetYouTubeVideoFeed(uri) for entry in feed.entry: PrintEntryDetails(entry) # full documentation for this function
ويوضح قسم استرداد مقاطع الفيديو والبحث عنها تفاصيل كثيرة حول عناوين URL للخلاصات الشائعة وكيفية استرداد خلاصات فيديو مختلفة.
استرداد إدخال فيديو معين
يمكنك استرداد معلومات إدخال فيديو معين فقط إذا كنت تعرف معرّف الفيديو. يستند عنوان URL للإدخال إلى معرّف الفيديو:
http://gdata.youtube.com/feeds/api/videos/videoID
تسترد الشفرة التالية gdata.youtube.YouTubeVideoEntry
المناظرة لفيديو على YouTube:
entry = yt_service.GetYouTubeVideoEntry(video_id='the0KZLEacs')
محتويات إدخال الفيديو
هناك العديد من البيانات الوصفية التي يمكن استردادها من عنصر gdata.youtube.YouTubeVideoEntry
، مثل الصور المصغّرة وعناوين URL للمشغّل ومدة الفيديو. توضح الشفرة التالية كيفية الحصول على بعض هذه المعلومات. تعمل مكتبة برامج Python على استخلاص معظم هذه الوظائف من خلال تعيين عناصر XML إلى فئات. تتوفّر معظم المعلومات المهمة حول الإدخال YouTubeVideoEntry
من العناصر الثانوية للسمة media
(التي تتضمّن عنصر gdata.media.Group
) ضمن الإدخال (الذي يمثّل العنصر XML media:group
). في ما يلي مثال على كيفية استرداد البيانات الوصفية للفيديو:
def PrintEntryDetails(entry): print 'Video title: %s' % entry.media.title.text print 'Video published on: %s ' % entry.published.text print 'Video description: %s' % entry.media.description.text print 'Video category: %s' % entry.media.category[[]0].text print 'Video tags: %s' % entry.media.keywords.text print 'Video watch page: %s' % entry.media.player.url print 'Video flash player URL: %s' % entry.GetSwfUrl() print 'Video duration: %s' % entry.media.duration.seconds # non entry.media attributes print 'Video geo location: %s' % entry.geo.location() print 'Video view count: %s' % entry.statistics.view_count print 'Video rating: %s' % entry.rating.average # show alternate formats for alternate_format in entry.media.content: if 'isDefault' not in alternate_format.extension_attributes: print 'Alternate format: %s | url: %s ' % (alternate_format.type, alternate_format.url) # show thumbnails for thumbnail in entry.media.thumbnail: print 'Thumbnail url: %s' % thumbnail.url
ملاحظة: للحصول على مزيد من المعلومات حول كيفية إنشاء المعلومات المطلوبة لتضمين فيديو باستخدام مشغل في صفحتك، يرجى الرجوع إلى دليل البروتوكول.
استرداد مقاطع الفيديو والبحث عنها
استرداد الخلاصات القياسية
توفر YouTube Data API خلاصة قياسية لمقاطع الفيديو الأكثر شعبية على YouTube. كانت واجهة برمجة التطبيقات تتيح سابقًا استخدام الخلاصات القياسية الأخرى التي تم إيقافها نهائيًا منذ ذلك الحين. راجع دليل المطوِّر للحصول على مزيد من المعلومات.
يكون عنوان URL لخلاصة الفيديوهات الأكثر شيوعًا على YouTube بالتنسيق التالي:
http://gdata.youtube.com/feeds/api/standardfeeds/most_popular
ملاحظة: يمكنك أيضًا استرداد الخلاصات القياسية الخاصة باللغة من خلال تحديد localeID بالتنسيق: http://gdata.youtube.com/feeds/api/standardfeeds/localeID/feedID
. على سبيل المثال، في ما يلي الفيديوهات الأكثر رواجًا في اليابان: http://gdata.youtube.com/feeds/api/standardfeeds/JP/most_popular
. وللحصول على قائمة كاملة بمعرّفات اللغة المحلية المفترضة، يُرجى الرجوع إلى الدليل المرجعي.
def PrintVideoFeed(feed): for entry in feed.entry: PrintEntryDetails(entry) def GetAndPrintFeedByUrl: yt_service = gdata.youtube.service.YouTubeService() # You can retrieve a YouTubeVideoFeed by passing in the URI uri = 'http://gdata.youtube.com/feeds/api/standardfeeds/JP/most_popular' PrintVideoFeed(yt_service.GetYouTubeVideoFeed(uri))
استرداد مقاطع الفيديو التي تم تحميلها بواسطة مستخدم معين
لدى كل مستخدم في YouTube خلاصة فيديو مرتبطة بهذه الفيديوهات، والتي تم تحميلها إلى http://gdata.youtube.com/feeds/api/users/username/uploads
.
توضح الشفرة التالية كيفية جلب خلاصة تحميلات المستخدمين وعرضها:
def GetAndPrintUserUploads(username): yt_service = gdata.youtube.service.YouTubeService() uri = 'http://gdata.youtube.com/feeds/api/users/%s/uploads' % username PrintVideoFeed(yt_service.GetYouTubeVideoFeed(uri))
ملاحظة: يمكنك أيضًا استخدام السلسلة "افتراضي" بدلاً من username
لاسترداد مقاطع الفيديو للمستخدم الذي تمت مصادقته حاليًا.
استرداد مقاطع الفيديو ذات الصلة
لاسترداد الفيديوهات ذات الصلة، مرِّر معرّف الفيديو للكائن gdata.youtube.YouTubeVideoEntry
إلى طريقة GetYouTubeRelatedVideoFeed
للعنصر gdata.youtube.service.YouTubeService
. يؤدي ذلك إلى استرداد عنصر YouTubeVideoFeed
يحتوي على إدخالات ذات صلة.
related_feed = yt_service.GetYouTubeRelatedVideoFeed(video_id='abc123')
البحث عن الفيديوهات
تتيح لك واجهة برمجة التطبيقات لبيانات YouTube طلب مجموعة من الإدخالات التي تطابق معايير محددة، مثل طلب إدخالات فيديو منشورة بواسطة مؤلف بعينه، أو بتنسيق فيديو أو تحتوي على كلمة رئيسية معينة. لإجراء ذلك، يمكنك إنشاء كائن gdata.service.YouTubeVideoQuery
بمعايير بحث معيّنة الخاصة بك وتمريره إلى طريقة gdata.youtube.service.YouTubeService
YouTubeQuery
.
يوضح المثال أدناه كيفية إجراء طلب بحث، مع ترتيب النتائج بحسب عدد المشاهدات، بما في ذلك مقاطع الفيديو المقيدة (المشار إليها باسم "Racy" بواسطة واجهة برمجة التطبيقات):
def SearchAndPrint(search_terms): yt_service = gdata.youtube.service.YouTubeService() query = gdata.youtube.service.YouTubeVideoQuery() query.vq = search_terms query.orderby = 'viewCount' query.racy = 'include' feed = yt_service.YouTubeQuery(query) PrintVideoFeed(feed)
تُعد الفئة gdata.service.Query
والفئات الفرعية مثل YouTubeVideoQuery
مسؤولة عن إنشاء عناوين URL للخلاصات. وينشئ VideoQuery
المعروض أعلاه عنوان URL مكافئًا لما يلي:
http://gdata.youtube.com/feeds/api/videos?vq=<searchTerms>&racy=include&orderby=viewCount
في ما يلي بعض خصائص YouTubeVideoQuery الأكثر شيوعًا لإعداد معلّمات البحث:
author
- تعيين مؤلف الإدخال. تترادف المؤلف مع اسم مستخدم YouTube.
format
- تحديد تنسيق فيديو يتم قبول المعلمات الرقمية لتحديد واحد من نوعين من عناوين URL لبث بروتوكول RTSP لتشغيل فيديو الجوال أو عنوان URL HTTP إلى مشغل Flash القابل للتضمين.
racy
- يشير هذا الإعداد إلى ما إذا كان يجب تضمين المحتوى المحظور في النتائج أم لا. يتم قبول معلمتين فقط: "تضمين" أو "استبعاد".
max_results
- يضبط هذا الإعداد الحد الأقصى لعدد الإدخالات التي يتم عرضها في المرة الواحدة.
start_index
- يضبط الفهرس المستند إلى 1 للنتيجة الأولى التي سيتم استردادها (للترحيل).
orderby
- يحدد هذا الإعداد ترتيب إدراج الإدخالات، مثل
relevance
أوviewCount
أوpublished
أوrating
. time
- يضبط فترة زمنية لقصر نتائج الخلاصة القياسية على:
today
أوthis_week
أوthis_month
أوall_time
. vq
- يحدد عبارة طلب بحث. للبحث عن السلسلة المحددة في جميع البيانات الوصفية للفيديو، مثل العناوين والعلامات والأوصاف.
ملاحظة: للحصول على مزيد من المعلومات حول معلَمات طلب البحث، يمكنك الاطّلاع على الدليل المرجعي لواجهة برمجة تطبيقات بيانات YouTube والدليل المرجعي لواجهات برمجة تطبيقات البيانات في Google.
البحث باستخدام الفئات والكلمات الرئيسية
يمكنك تقييد نتائج البحث لعرض مقاطع الفيديو التي تتطابق فقط مع مجموعة معينة من الفئات والكلمات الرئيسية. يصف الدليل المرجعي كيفية تحديد كل من فئات YouTube المحدّدة مسبقًا (مثل الموسيقى والأشخاص والمدوّنات وغير ذلك) والكلمات الرئيسية التي يحددها المستخدم (العلامات).
توضح الشفرة التالية كيفية البحث باستخدام الكلمات الرئيسية (العلامات) عن طريق تغيير عبارات البحث إلى أحرف صغيرة. ملاحظة: نظرًا لأن بعض الكلمات (مثل "كوميديا") يمكن أن تكون فئة في YouTube ككلمة رئيسية وطلبات بحث عن كلمة رئيسية وفئة وكلمة رئيسية، فإنها تستخدم الاصطلاح الذي تشير إليه الكلمة الكبيرة ("Comedy") في فئة YouTube، بينما تشير الكلمة الصغيرة ("comedy") إلى الكلمة الرئيسية.
def SearchAndPrintVideosByKeywords(list_of_search_terms): yt_service = gdata.youtube.service.YouTubeService() query = gdata.youtube.service.YouTubeVideoQuery() query.orderby = 'viewCount' query.racy = 'include' for search_term in list_of_search_terms: new_term = search_term.lower() query.categories.append('/%s' % new_term) feed = yt_service.YouTubeQuery(query) PrintVideoFeed(feed)
البحث حسب علامات مطوّر البرامج
علامات مطوّري البرامج هي كلمات رئيسية إضافية ومخفية قد يستخدمها مطوّر البرامج لوضع علامة على المحتوى الذي يحمّله المستخدمون عبر تطبيقه. تتم مطابقة علامات مطوّري البرامج مع مجموعة مفاتيح مطوّري البرامج في العناوين أثناء عملية التحميل. لن تكون هذه الكلمات الرئيسية مرئية للجمهور وربما يتم استخدامها لاسترداد مقاطع الفيديو. للبحث عن فيديوهات باستخدام علامة مطوّر برامج معيّنة، يمكنك إرسال طلب بحث عام إلى YouTube Data API باستخدام مفتاح مطوّر البرامج. تأكد من تحديد مخطط الفئة وعلامة مطور البرامج التي يجب أن تتطابق مقاطع الفيديو معها. يمكنك استرداد خلاصة مقاطع الفيديو المطابقة لعلامة المطوّر الخاصة بك ("your_tag_here" في المثال) من عنوان URL التالي:
developer_tag_uri = 'http://gdata.youtube.com/feeds/videos/-/%7Bhttp%3A%2F%2Fgdata.youtube.com%2Fschemas%2F2007%2Fdevelopertags.cat%7Dyour_tag_here' yt_service = gdata.youtube.service.YouTubeService() PrintVideoFeed(yt_service.GetYouTubeVideoFeed(developer_tag_uri))
تحميل الفيديوهات
يُرجى التأكد من مراجعة الأشكال التوضيحية في دليل البروتوكول للحصول على نظرة عامة عالية المستوى على عملية التحميل. يمكن تحميل مقاطع الفيديو بإحدى الطريقتين التاليتين:
- من خلال تحميل الفيديو مباشرةً من الخوادم من خلال طريقة التحميل المباشر
- أو عن طريق إرسال البيانات الوصفية أولاً، ثم مطالبة المستخدم بتحميل الفيديو مباشرةً إلى YouTube من خلال طريقة التحميل المستندة إلى المتصفح
تحميل مباشر
لتحميل فيديو، عليك أولاً إنشاء كائن gdata.youtube.YouTubeVideoEntry
جديد وتمريره كائن gdata.media.Group
يحتوي على البيانات الوصفية المطلوبة. يوضح المثال التالي تحميل فيديو Quicktime "mytestmovie.mov" إلى YouTube بالخصائص التالية:
الخاصية | القيمة |
---|---|
العنوان | فيلم الاختبار |
Category (الفئة) | تلقائي |
الكلمات الرئيسية | سيارات، مضحك |
الوصف | وصفي |
اسم الملف | mytestmovie.mov |
نوع MIME للملف | فيديو/Quicktime |
هل تم تغيير إعدادات خصوصية الفيديو ليصبح خاصًا؟ | خطأ |
موقع الفيديو | 37,-122 (lat,long) |
علامات مطوّري البرامج | mydevelopertag أو anotherdevelopertag |
يعمل الرمز أدناه على إنشاء YouTubeVideoEntry
فارغ لتحميله. تتطلب طريقة InsertVideoEntry
على YouTubeService
المعلَمات التالية:
video_entry
— الكائنgdata.youtube.VideoEntry
الذي يحتوي على البيانات الوصفيةfilename_or_handle
— كائن يشبه الملف أو اسم الملف الذي ستتم قراءة الفيديو منهyoutube_username
— سلسلة اختيارية تحدد اسم المستخدم الذي سيتم تحميل هذا الفيديو إليه. سيتطلب حسابك الأذونات المناسبة بالطبع. يكون هذا الإعداد الافتراضي هو حساب المستخدم الذي تمت مصادقته حاليًا.content_type
— سلسلة اختيارية تحدد نوع MIME للفيديو الذي سيتم تحميله.
yt_service
يشير إلى كائن YouTubeService
تمت مصادقته بالكامل.
# prepare a media group object to hold our video's meta-data my_media_group = gdata.media.Group( title=gdata.media.Title(text='My Test Movie'), description=gdata.media.Description(description_type='plain', text='My description'), keywords=gdata.media.Keywords(text='cars, funny'), category=[[]gdata.media.Category( text='Autos', scheme='http://gdata.youtube.com/schemas/2007/categories.cat', label='Autos')], player=None ) # prepare a geo.where object to hold the geographical location # of where the video was recorded where = gdata.geo.Where() where.set_location((37.0,-122.0)) # create the gdata.youtube.YouTubeVideoEntry to be uploaded video_entry = gdata.youtube.YouTubeVideoEntry(media=my_media_group, geo=where) # set the path for the video file binary video_file_location = '/path/to/my/file.mov' new_entry = yt_service.InsertVideoEntry(video_entry, video_file_location)
إذا أردنا وضع علامات على الفيديو الخاص بنا باستخدام علامات مطوّري برامج اختيارية (راجِع البحث باستخدام علامات مطوّري البرامج لمزيد من التفاصيل)، كان من الممكن أن نستخدم طريقة AddDeveloperTags
قبل تنفيذ الاستدعاء في InsertVideoEntry
:
developer_tags = [[]'some_tag_01', 'another_tag'] video_entry.AddDeveloperTags(developer_tags)
ملاحظة: لتحميل الفيديوهات كخاصة، يجب تمرير سمة خاصة إلى gdata.media.Group
:
my_media_group = gdata.media.Group( title=gdata.media.Title(text='My Test Movie'), description=gdata.media.Description(description_type='plain', text='My description'), keywords=gdata.media.Keywords(text='cars, funny'), category=[[]gdata.media.Category( text='Autos', scheme='http://gdata.youtube.com/schemas/2007/categories.cat', label='Autos')], player=None, private=gdata.media.Private() ) video_entry = gdata.youtube.YouTubeVideoEntry(media=my_media_group) # assuming that video_file_location points to a valid path new_entry = yt_service.InsertVideoEntry(video_entry, video_file_location)
تحميل مستند إلى المتصفح
يتم إجراء التحميل المستند إلى المتصفح بطريقة مماثلة تقريبًا للتحميل المباشر، باستثناء أنك لا تحمّل الملف الثنائي في الطلب نفسه الذي تستخدمه لإرسال البيانات الوصفية للفيديو. بدلاً من ذلك، يمكنك ببساطة إنشاء YouTubeVideoEntry
يحتوي على بيانات وصفية فقط. ويتم بعد ذلك نشر إدخال الفيديو هذا على رابط خاص على خادم واجهة برمجة تطبيقات YouTube. تحتوي استجابة XML على token
وurl
يمكن استخدامهما بعد ذلك لتحميل الملف الثنائي باستخدام نموذج HTML قياسي.
# create media group as usual my_media_group = gdata.media.Group( title=gdata.media.Title(text='My Test Movie'), description=gdata.media.Description(description_type='plain', text='My description'), keywords=gdata.media.Keywords(text='cars, funny'), category=[[]gdata.media.Category( text='Autos', scheme='http://gdata.youtube.com/schemas/2007/categories.cat', label='Autos')], player=None ) # create video entry as usual video_entry = gdata.youtube.YouTubeVideoEntry(media=my_media_group) # upload meta data only response = yt_service.GetFormUploadToken(video_entry) # parse response tuple and use the variables to build a form (see next code snippet) post_url = response[[]0] youtube_token = response[[]1]
يطبع الرمز أعلاه رابطًا ورمزًا مميزًا يُستخدم لإنشاء نموذج HTML للعرض في متصفح المستخدم. في ما يلي مثال بسيط على النموذج الذي يتضمّن youtube_token
الذي يمثّل محتوى عنصر الرمز المميّز الذي تمّ عرضه، كما هو موضّح عند استرجاع البيانات من YouTubeVideoEntry
أعلاه. لإعادة توجيه المستخدم إلى موقعك الإلكتروني بعد إرسال النموذج، احرص على إلحاق المَعلمة next
بـ post_url
(كما هو موضّح أدناه)، والتي ستعمل بالطريقة نفسها التي تعمل بها المَعلمة next
لرابط AuthSub. ويتمثل الاختلاف الوحيد في أنّه سيتم هنا عرض المتغيّر status
والمتغيّر id
كمعلَمات عناوين URL بدلاً من رمز مميّز يُستخدم لمرة واحدة.
next = 'http://example.com/post_video_upload.pyc' form = """<form action="%s?nexturl=%s" method="post" enctype="multipart/form-data"> <input name="file" type="file"/> <input name="token" type="hidden" value="%s"/> <input value="Upload Video File" type="submit" /> </form>""" % (post_url, next, youtube_token)
عندئذٍ، تظهر الاستجابة لعملية تحميل ناجحة على النحو التالي:
http://example.com/post_video_upload.pyc?status=200&id=ABC123
تعرض المعلمة status
حالة معاملة HTTP لمعاملة التحميل. تعرض المعلمة id
معرّف فيديو YouTube الذي تم تعيينه للفيديو المحمّل.
التحقق من حالة التحميل
بعد تحميل فيديو، سيظهر على الفور في خلاصة تحميلات المستخدم الذي تمت مصادقته. ومع ذلك، فلن يظهر الموقع بشكل عام على الموقع إلا بعد معالجته. مقاطع الفيديو التي تم رفضها أو فشل تحميلها بنجاح ستكون أيضًا في خلاصة تحميلات المستخدم الذي تمت المصادقة عليه فقط. يتحقق الرمز التالي من حالة YouTubeVideoEntry
لمعرفة ما إذا لم يكن قد تم نشره بعد أو ما إذا تم رفضه.
upload_status = yt_service.CheckUploadStatus(new_entry) if upload_status is not None: video_upload_state = upload_status[[]0] detailed_message = upload_status[[]1]
تحديث مقاطع الفيديو وحذفها
تحديث معلومات الفيديو
لتحديث البيانات الوصفية للفيديو، ما عليك سوى تحديث الكائن YouTubeVideoEntry
ثم استخدام طريقة YouTubeService
UpdateVideoEntry
. تستخدم هذه الطريقة كمعلمة YouTubeVideoEntry
تحتوي على بيانات وصفية محدّثة.
# assuming we have a video entry that was just posted in our 'new_entry' variable new_entry.media.title.text = 'My Updated Video Title' new_entry.media.description.text = 'Just updated' updated_entry = yt_service.UpdateVideoEntry(new_entry)
حذف فيديو
إنّ حذف الفيديو أمر بسيط جدًا ولا يتطلّب سوى استدعاء DeleteVideoEntry
لكائن YouTubeService
.
response = yt_service.DeleteVideoEntry(entry_to_be_deleted) if response: print 'Video successfully deleted!'
استخدام ميزات المنتدى
إضافة تقييم
لتقييم فيديو، استخدِم طريقة AddRating
لكائن YouTubeService
. الرجاء ملاحظة أنه لا يمكنك تقييم مقاطع الفيديو الخاصة بك ويجب أن تكون التقييمات بين 1 و5 (بما في ذلك):
video_id_to_rate = 'Ncakifd_16k' video_entry = yt_service.GetYouTubeVideoEntry(video_id=video_id_to_rate) response = yt_service.AddRating(3, video_entry)
التعليقات
استرداد التعليقات لفيديو
باستخدام عنصر YouTubeVideoEntry
أو معرّف فيديو بسيط، يمكنك استرداد خلاصة تتضمّن تعليقات الفيديو وطباعتها باستخدام طريقة GetYouTubeVideoCommentFeed
للعنصر YouTubeService
. الخلاصة الناتجة هي gdata.youtube.YouTubeCommentFeed
، وتتكون من كائنات gdata.youtube.YouTubeCommentEntry
. يمكن تحليل الخلاصة مثل أي خلاصة أخرى:
video_id = 'ABC123...' comment_feed = yt_service.GetYouTubeVideoCommentFeed(video_id=video_id) for comment_entry in comment_feed.entry: print comment_entry.ToString()
إضافة تعليق
لإضافة تعليق جديد، استخدِم طريقة AddComment
لكائن YouTubeService
لإضافة تعليق جديد. تتطلب الطريقة كائن YouTubeVideoEntry
كاملًا للتعليق عليه، بالإضافة إلى سلسلة تمثل التعليق:
my_comment = 'what a boring test video' video_id = '9g6buYJTt_g' video_entry = yt_service.GetYouTubeVideoEntry(video_id=video_id) yt_service.AddComment(comment_text=my_comment, video_entry=video_entry)
الردود على الفيديو
كانت استجابة فيديو YouTube عبارة عن فيديو تم ربطه بفيديو آخر كرد. تمّ إيقاف ميزة الردود على الفيديوهات كما هو موضّح في هذا الإعلان. على الرغم من أن الردود الحالية على الفيديو لا تزال متاحة، لم يعد YouTube يتيح إمكانية استرداد قائمة بالردود على الفيديو لأحد مقاطع الفيديو، أو تحميل ردود جديدة على الفيديو، أو حذف الردود على الفيديو، على الرغم من أنه يمكنك حذف الفيديو الذي تم استخدامه في رد على فيديو. وبالتالي، لم تعد هذه الدوال متاحة في واجهة برمجة التطبيقات.
تعرض طلبات واجهة برمجة التطبيقات لعمليات استجابة الفيديو الآن ما يلي:
- يؤدي طلب استرداد الردود على الفيديو لمقطع فيديو إلى عرض قائمة فارغة.
- يعرض طلب إضافة رد على فيديو رمز استجابة 403 HTTP.
- يعرض طلب حذف استجابة فيديو رمز استجابة 403 HTTP.
الإبلاغ عن فيديو
تتم إضافة شكوى بشأن فيديو باستخدام طريقة AddComplaint
في الكائن YouTubeService
. يجب أن تكون عبارة الشكوى فئة صالحة. يُرجى الرجوع إلى قسم إضافة شكوى في دليل البروتوكول للحصول على مزيد من المعلومات.
video_id_to_flag = 'Ncakifd_16k' complaint_term = 'VIOLENCE' complaint_text = ('Please ignore this complaint. ' 'I\'m testing a YouTube API and needed to issue ' 'a complaint to test the add complaint function. ') response = yt_service.AddComplaint(complaint_text, complaint_term, video_id_to_flag)
حفظ الفيديوهات وتجميعها
الفيديوهات المفضّلة
استرداد مقاطع الفيديو المفضلة للمستخدم
يمكن لمستخدمي YouTube وضع علامة على الفيديوهات التي يشاهدونها كمفضّلة. الموقع العام للخلاصة المفضلة للمستخدم هو عنوان URL التالي.
http://gdata.youtube.com/feeds/api/users/username/favorites
لاسترداد الفيديوهات المفضَّلة لدى مستخدم، استخدِم طريقة GetUserFavoritesFeed
لكائن YouTubeService
. تستخدم الطريقة سلسلة اختيارية كمعلمة تمثّل اسم مستخدم YouTube للمستخدم الذي يتم استرداد خلاصته المفضلة.
favorite_feed = yt_service.GetUserFavoritesFeed(username='gdpython')
الخلاصة المعروضة هي خلاصة فيديو عادية تحتوي على YouTubeVideoEntry
عنصر.
ملاحظة: بدلاً من ذلك، يمكنك تمرير السلسلة default
لاسترداد المفضلات للمستخدم الذي تمت مصادقته حاليًا. هذا هو السلوك التلقائي للطريقة GetUserFavoritesFeed
في حال عدم تقديم اسم مستخدم.
إضافة مفضلة
لإضافة فيديو مفضّل، استخدِم طريقة AddVideoEntryToFavorites
للكائن YouTubeService
. إن المَعلمات هي YouTubeVideoEntry
التي ستتم إضافتها وتكون اختياريًا اسم المستخدم الذي تتم إضافة المُفضَّلة إليه (الإعداد التلقائي هو المستخدم المُصدَّق عليه حاليًا).
video_id = 'Ncakifd_16k' video_entry = yt_service.GetYouTubeVideoEntry(video_id=video_id) response = yt_service.AddVideoEntryToFavorites(video_entry) # The response, if successfully posted is a YouTubeVideoEntry if isinstance(response, gdata.youtube.YouTubeVideoEntry): print 'Video successfully added to favorites'
حذف المفضلة
لحذف عنصر مفضّل، ما عليك سوى استخدام طريقة DeleteVideoEntryFromFavorites
لكائن YouTubeService
.
video_id = 'Ncakifd_16k' response = yt_service.DeleteVideoEntryFromFavorites(video_id) if response is True: print 'Video deleted from favorites'
قوائم التشغيل
لدى كل مستخدم YouTube خلاصة قوائم تشغيل تحتوي على جميع قوائم التشغيل التي أنشأها المستخدم. ولكل قائمة تشغيل خلاصة لجميع مقاطع الفيديو.
استرداد قوائم تشغيل المستخدمين
لجلب قائمة بجميع قوائم تشغيل المستخدم يدويًا، يمكنك استخدام عنوان URL التالي:
http://gdata.youtube.com/feeds/api/users/username/playlists
باستخدام مكتبة عميل Python، يمكنك استخدام طريقة GetYouTubePlaylistFeed
لكائن YouTubeService
:
playlist_feed = yt_service.GetYouTubePlaylistFeed(username='gdpython') # instead of passing in a username, you can also pass the URI to the playlist feed: playlist_feed = yt_service.GetYouTubePlaylistFeed(uri='http://gdata.youtube.com/feeds/api/users/default/playlists')
ملاحظة: بدلاً من تمرير اسم مستخدم محدد (مثل "gdpython" في المثال أعلاه)، يمكنك أيضًا تمرير السلسلة 'default'
للرجوع إلى المستخدم الذي تمت مصادقته حاليًا.
تمثل gdata.youtube.YouTubePlaylistFeed
خلاصة لكائنات gdata.youtube.YouTubePlaylistEntry
. وهي تشير إلى قوائم التشغيل الفردية التي قد يكون لدى المستخدم. يتم تمثيل إدخالات الفيديو في قائمة تشغيل معيّنة ككائنات gdata.youtube.YouTubePlaylistVideoEntry
. هذه الكائنات تشبه إلى حد كبير الكائنات العادية gdata.youtube.YouTubeVideoEntry
مع بعض الاستثناءات. يمكن تطبيق العناوين والأوصاف المخصصة على مقاطع الفيديو، ويشير حقل موضع إلى موضع ظهور الفيديو في قائمة التشغيل.
جارٍ استرداد معلومات قائمة التشغيل
بالنسبة إلى YouTubePlaylistEntry
(التي تمثّل قائمة تشغيل محدّدة)، يمكنك الحصول على YouTubePlaylistVideoFeed
الذي يحتوي على YouTubePlaylistVideoEntry
كائنات. كما هو موضح أعلاه، تمثل هذه الكائنات مقاطع فيديو فردية في قائمة تشغيل (مع عناوين مخصصة وأوصاف اختيارية). يمكنك الحصول على هذه الخلاصة عبر تمرير معرّف الموارد المنتظم (URI) لقائمة التشغيل التابعة لك إلى طريقة GetYouTubePlaylistVideoFeed
لكائن YouTubeService
:
# a typical playlist URI playlist_uri = 'http://gdata.youtube.com/feeds/api/playlists/BCB3BB96DF51B505' playlist_video_feed = yt_service.GetYouTubePlaylistVideoFeed(uri=playlist_uri) # iterate through the feed as you would with any other for playlist_video_entry in playlist_video_feed.entry: print playlist_video_entry.title.text
إضافة قائمة تشغيل
لإضافة قائمة تشغيل جديدة، ما عليك سوى استخدام طريقة AddPlaylist
لكائن YouTubeService
. تستخدم هذه الطريقة المَعلمات التالية: playlist_title وplaylist_description (كلتا السلسلة) والخيار المنطقي الاختياري الذي يمكن ضبطه على True
في حال تم وضع علامة "خاص" على قائمة التشغيل.
new_public_playlistentry = yt_service.AddPlaylist('my new playlist', 'a new playlist') if isinstance(new_public_playlistentry, gdata.youtube.YouTubePlaylistEntry): print 'New playlist added' # adding a private playlist new_private_playlistentry = yt_service.AddPlaylist('new private playlist', 'a new private playlist', True) if isinstance(new_private_playlistentry, gdata.youtube.YouTubePlaylistEntry): print 'New private playlist added'
تحديث قائمة تشغيل
لتعديل قائمة تشغيل، استخدِم طريقة UpdatePlaylist
لكائن YouTubeService
. تستخدم الطريقة المَعلمات التالية: معرّف قائمة التشغيل المطلوب تعديلها وعنوانًا جديدًا ووصفًا جديدًا والخيار المنطقي اختياريًا لوضع علامة على قائمة التشغيل كخاصّة وسلسلة اختيارية تشير إلى اسم المستخدم الذي يملك قائمة التشغيل. سيتم ضبط القيمة التلقائية للسلسلة على المستخدم الذي تمت مصادقته حاليًا.
# here we are updating a public playlist with a new title while also making it private # we assume that playlist_to_be_updated here represents a YouTubePlaylistEntry object playlist_entry_id = playlist_to_be_updated.id.text.split('/')[[]-1] # we want to keep the original description for the playlist so we store it first original_description = playlist_to_be_updated.description.text updated_playlist = yt_service.UpdatePlaylist(playlist_entry_id, 'a new updated title', original_playlist_description, playlist_private=True)
إضافة فيديو إلى قائمة التشغيل
يمكنك إضافة فيديو إلى قائمة تشغيل باستخدام طريقة AddPlaylistVideoEntryToPlaylist
لكائن YouTubeService
. تضيف الشفرة أدناه مقطع فيديو إلى قائمة تشغيل، مع عنوان ووصف مخصصين.
custom_video_title = 'my test video on my test playlist' custom_video_description = 'this is a test video on my test playlist' video_id = 'Ncakifd_16k' playlist_uri = 'http://gdata.youtube.com/feeds/api/playlists/BCB3BB96DF51B505' playlist_video_entry = yt_service.AddPlaylistVideoEntryToPlaylist( playlist_uri, video_id, custom_video_title, custom_video_description) if isinstance(playlist_video_entry, gdata.youtube.YouTubePlaylistVideoEntry): print 'Video added'
ملاحظة: تجدر الإشارة إلى أنّ العنوان المخصص والوصف غير مطلوبين، وإذا لم يتم تحديدهما، فسيتم استخدام عنوان الفيديو ووصفه الفعليين.
تعديل معلومات الفيديو في قائمة التشغيل
استخدِم طريقة UpdatePlaylistVideoEntryMetaData
لكائن YouTubeService
لتغيير البيانات الوصفية في YouTubePlaylistVideoEntry
. في المثال أدناه، قررنا منح الفيديو عنوانًا مخصصًا جديدًا ونقله إلى الموضع الأول (الموضع 1) في قائمة التشغيل.
playlist_uri = 'http://gdata.youtube.com/feeds/api/playlists/BCB3BB96DF51B505' playlist_entry_id = 'B0F29389E537F888' new_video_title = 'a useful video' new_video_description = 'updated video description' updated_playlist_video_entry = yt_service.UpdatePlaylistVideoEntryMetaData( playlist_uri, playlist_entry_id, new_video_title, new_video_description, 1)
ملاحظة: إذا أردت إعادة وصف الفيديو وعنوانه في قائمة تشغيل إلى البيانات الوصفية الأصلية، فما عليك سوى إدخال NULL
لكل من العنوان والوصف.
إزالة الفيديو من قائمة التشغيل
لإزالة فيديو من قائمة تشغيل، استخدِم الطريقة DeletePlaylistVideoEntry
لكائن YouTubeService
. تتطلب الطريقة معرف الموارد المنتظم (URI) لقائمة التشغيل التي تحتوي على الإدخال المراد حذفه بالإضافة إلى معرّف الإدخال:
playlist_uri = 'http://gdata.youtube.com/feeds/api/playlists/BCB3BB96DF51B505' playlist_entry_id = 'B0F29389E537F888' response = yt_service.DeletePlaylistVideoEntry(playlist_uri, playlist_entry_id) if response is True: print 'Entry successfully deleted'
حذف قائمة تشغيل
لحذف قائمة تشغيل، ما عليك سوى استخدام طريقة DeletePlaylist
لكائن YouTubeService
، مع تمرير معرّف الموارد المنتظم (URI) لقائمة التشغيل التي تريد حذفها:
playlist_uri = 'http://gdata.youtube.com/feeds/api/playlists/BCB3BB96DF51B505' response = yt_service.DeletePlaylist(playlist_uri) if response is True: print 'Playlist successfully deleted'
الاشتراكات
لجلب قائمة بالقنوات وعمليات البحث والمفضلة التي اشترك فيها مستخدم معين، استخدم URI التالي:
http://gdata.youtube.com/feeds/api/users/username/subscriptions
ملاحظة: بدلاً من ذلك، يمكنك تمرير السلسلة default
لاسترداد المفضلات للمستخدم الذي تمت مصادقته حاليًا.
استرداد اشتراكات المستخدمين
توضح الشفرة التالية كيفية استرداد قائمة الاشتراكات لمستخدم معين وطباعتها. يتم تمثيل الاشتراكات بصفتها gdata.youtube.YouTubeSubscriptionFeed
وتتألف من عناصر gdata.youtube.YouTubeSubscriptionEntry
. لاسترداد الاشتراكات، استخدِم طريقة GetYouTubeSubscriptionFeed
لكائن YouTubeService
، مع تمرير إما معرّف الموارد المنتظم (URI) لخلاصة الاشتراك أو اسم المستخدم الذي تريد استرداد خلاصة اشتراكاته. الإعداد الافتراضي لمعلمة اسم المستخدم هو المستخدم المصادَق عليه حاليًا.
subscription_feed = yt_service.GetYouTubeSubscriptionFeed(username='gdpython') if isinstance(subscription_feed, gdata.youtube.YouTubeSubscriptionFeed)): # given a YouTubeSubscriptionEntry we can determine it's type (channel, favorite, or query) for entry in subscription_feed.entry: print entry.GetSubscriptionType()
إضافة اشتراك
يمكنك إنشاء اشتراك جديد من خلال إدراج YouTubeSubsciptionEntry
جديد في خلاصة اشتراكات المستخدم الذي تمت مصادقته. يمكننا إنشاء ثلاثة أنواع من الاشتراكات: اشتراك في قناة المستخدم (باستخدام AddSubscriptionToChannel
)، أو اشتراك في المفضلة للمستخدم (باستخدام AddSubscriptionToFavorites
أو اشتراك في كلمة رئيسية محددة (باستخدام AddSubscriptionToQuery
). يؤدي الرمز التالي إلى اشتراك المستخدم الذي تمت مصادقته في قناة "GoogleDevelopers".
new_subscription = yt_service.AddSubscriptionToChannel( username_to_subscribe_to='GoogleDevelopers') if isinstance(new_subscription, gdata.youtube.YouTubeSubscriptionEntry): print 'New subscription added'
يمكنك أيضًا الاشتراك في المفضلة لمستخدم "GoogleDevelopers":
new_subscription = yt_service.AddSubscriptionToFavorites( username='GoogleDevelopers') if isinstance(new_subscription, gdata.youtube.YouTubeSubscriptionEntry): print 'New subscription added'
وأخيرًا، يمكنك أيضًا الاشتراك في عبارات بحث معينة. سنشترك هنا بطلب بحث عن مقاطع فيديو تحمل علامة "python".
new_subscription = yt_service.AddSubscriptionToQuery(query='python') if isinstance(new_subscription, gdata.youtube.YouTubeSubscriptionEntry): print 'New subscription added'
حذف اشتراك
لحذف اشتراك مستخدم، استخدِم طريقة DeleteSubscription
لكائن YouTubeService
.
sample_subscription_uri = ('http://gdata.youtube.com/feeds/api/users/' 'gdpython/subscriptions/c0c77ca6102a7479') response = yt_service.DeleteSubscription(sample_subscription_uri) if response is True: print 'Subscription successfully deleted'
تمكين تفاعل المستخدم
ملفات المستخدمين الشخصية
استرداد الملف الشخصي للمستخدم
لجلب ملف شخصي لمستخدم على YouTube يدويًا، يمكنك استخدام معرّف الموارد المنتظم (URI) التالي:
http://gdata.youtube.com/feeds/api/users/username
يمكنك استرداد gdata.youtube.YouTubeUserEntry
باستخدام طريقة GetYouTubeUserEntry
لكائن YouTubeService
.
user_entry = yt_service.GetYouTubeUserEntry(username='gdpython') # we can then write a helper function to print out the user details def PrintUserEntry(entry): # print required fields where we know there will be information print 'URI: %s\n' % entry.id.text print 'Age: %s\n' % entry.age.text print 'Gender: %s\n' % entry.gender.text print 'Location: %s\n' % entry.location.text # check if there is information in the other fields and if so print it if user.first_name: print 'First Name: %s\n' % user.first_name.text if user.last_name: print 'Last Name: %s\n' % user.last_name.text if user.relationship: print 'Relationship: %s\n' % user.relationship.text if user.description: print 'About me: %s\n' % user.description.text for link in user.link: if link.rel == 'related': print 'Website: %s\n' % link.href if user.company: print 'Company: %s\n' % user.company.text if user.occupation: print 'Occupation: %s\n' % user.occupation.text if user.school: print 'School: %s\n' % user.school.text if user.hobbies: print 'Hobbies: %s\n' % user.hobbies.text if user.movies: print 'Movies: %s\n' % user.movies.text if user.music: print 'Music: %s\n' % user.music.text if user.books: print 'Books: %s\n' % user.books.text if user.hometown: print 'Hometown: %s\n' % user.hometown.text
جهات الاتصال
يمكن استرداد قائمة جهات الاتصال لمستخدم معين من عنوان URL التالي:
http://gdata.youtube.com/feeds/api/users/username/contacts
استرداد جهات اتصال المستخدم
يمكن استخدام طريقة GetYouTubeContactFeed
لكائن YouTubeService
لاسترداد gdata.youtube.YouTubeContactFeed
، ويتألف من gdata.youtube.YouTubeContactEntry
كائنات.
contact_feed = yt_service.GetYouTubeContactFeed(username='GoogleDevelopers') for entry in contact_feed.entry: print entry.title.text # find the apprpriate category element to find out the contact type for category in entry.category: if category.scheme == 'http://gdata.youtube.com/schemas/2007/contact.cat': print category.term
إضافة جهة اتصال
لإضافة جهة اتصال جديدة إلى خلاصة جهات اتصال المستخدمين، استخدم طريقة AddContact
لكائن YouTubeService
.
new_contact = yt_service.AddContact(contact_username='GoogleDevelopers') if isinstance(new_contact, gdata.youtube.YouTubeContactEntry) print 'New contact added'
قبول/رفض جهة اتصال
لتعديل جهة اتصال، استخدِم طريقة UpdateContact
لكائن YouTubeService
. يمكن استخدام هذه الطريقة لقبول/رفض طلبات الاتصال وكذلك لتصنيف جهات الاتصال إما كـ "صديق" أو "عائلي". في المثال أدناه، نقبل جهة اتصال ونعيّن فئتها على "العائلة":
# in this case user 'gdpython' has requested to be our contact #so the original contact status is 'pending' updated_contact = yt_service.UpdateContact('gdpython', 'accepted', 'Family') if isinstance(updated_contact, gdata.youtube.YouTubeContactEntry) print 'New contact added'
حذف جهة اتصال
لحذف جهة اتصال، استخدم طريقة DeleteContact
لكائن YouTubeService
، مع إدخال اسم المستخدم لجهة الاتصال التي تريد حذفها.
response = yt_service.DeleteContact(contact_username='gdpython') if response is True: print 'Contact deleted'