دليل مطوّري البرامج: Python

تسمح واجهة برمجة التطبيقات لبيانات 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'

الرجوع إلى الأعلى