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

تسمح واجهة برمجة التطبيقات YouTube Data API لتطبيقات العملاء باسترداد محتوى YouTube وتعديله في شكل خلاصات Google Data API. يمكن لتطبيق العميل استخدام خلاصات YouTube Data API لاسترداد الفيديوهات والتعليقات والردود وقوائم التشغيل والملفات الشخصية للمستخدمين وجهات اتصالهم والبحث عنها وتعديلها، بالإضافة إلى البحث عن الفيديوهات التي تتطابق مع معايير معيّنة.

بالإضافة إلى تقديم بعض المعلومات الأساسية حول إمكانات YouTube Data API، يقدّم هذا المستند أمثلة على التفاعل مع واجهة برمجة التطبيقات باستخدام مكتبة Python Client Library. لاستخدام مكتبة Python للعميل، ستحتاج إلى Python 2.0 والإصدارات الأحدث ووحدات Element Tree وhttplib وurllib. راجِع وحدات التبعية لمعرفة مزيد من التفاصيل.

إذا كنت بحاجة إلى مساعدة في إعداد مكتبة Python للعملاء، يمكنك الرجوع إلى دليل البدء. إذا أردت التعرّف أكثر على البروتوكول الأساسي الذي تستخدمه مكتبة Python للعملاء للتفاعل مع YouTube، يمكنك الاطّلاع على صفحة البروتوكول في دليل المطوّر.

لمحة عن هذا المستند

الجمهور

هذا المستند مخصّص للمبرمجين الذين يريدون كتابة تطبيقات برمجية متعالِقة يمكنها التفاعل مع YouTube باستخدام مكتبة Python للبرامج المتعلّقة. ويقدّم سلسلة من أمثلة على التفاعلات الأساسية لواجهة برمجة تطبيقات البيانات.

للحصول على معلومات مرجعية حول YouTube Data API، يُرجى الاطّلاع على الدليل المرجعي.

يفترض هذا المستند أنّك تفهم الأفكار العامة وراء بروتوكول Google Data APIs، وأنّك تعرف كيفية البرمجة بلغة Python.

للحصول على معلومات مرجعية عن فئات وطرق Python، اطّلِع على pyDocs (لـ فئة الخدمة وفئات البيانات) المضمّنة في رمز المصدر.

بنية المستند

يحتوي هذا المستند على الأقسام التالية:

  • يوضّح قسم المصادقة طريقتَي المصادقة المختلفة المتاحتَين لربط عمليات واجهة برمجة التطبيقات بحساب مستخدم معيّن. يوضّح هذا القسم أيضًا الاختلافات بين المصادقة في YouTube Data API وواجهات برمجة التطبيقات الأخرى لخدمة Google Data API. في جميع أنحاء هذا المستند، ستوضّح تفسيرات وظائف واجهة برمجة التطبيقات المحدّدة بوضوح ما إذا كانت الوظيفة تتطلّب مصادقة المستخدم. بشكل عام، يجب مصادقة جميع الطلبات التي تعدّل بيانات الفيديو أو الخلاصة. لا تتطلّب طلبات الوصول للقراءة فقط إلى الفيديوهات المتاحة للجميع مصادقة.

  • يقدّم قسم فهم خلاصات الفيديوهات وإدخالاتها نموذجًا لمعلومات تلقّاها من واجهة برمجة التطبيقات ويوضّح كيفية استخراج معلومات عن فيديو واحد من قائمة فيديوهات أو مجموعة من نتائج البحث. ويوضّح هذا القسم أيضًا كيفية الوصول إلى البيانات الوصفية عن إدخال فيديو معيّن. أخيرًا، يوضّح هذا القسم آلية تعديل إدخال فيديو فردي.

  • يشرح قسم استرداد الفيديوهات والبحث عنها كيفية جلب قوائم معيّنة من الفيديوهات، مثل خلاصة عادية للفيديوهات الأكثر رواجًا على YouTube. وتشمل قوائم الفيديوهات الأخرى الفيديوهات التي حمّلها مستخدم معيّن وقوائم الفيديوهات المرتبطة بفيديو معيّن. ويوضّح هذا القسم أيضًا كيفية استخدام واجهة برمجة التطبيقات للسماح للمستخدمين بالبحث في مكتبة الفيديوهات على YouTube حسب عبارات بحث أو فئات معيّنة.

  • يوضّح قسم تحميل الفيديوهات بإيجاز طريقتَين يمكنك من خلالهما السماح للمستخدمين بتحميل الفيديوهات إلى YouTube من تطبيقك. بالإضافة إلى ذلك، يشرح هذا القسم أيضًا كيفية تحميل الفيديوهات كردود على فيديوهات أخرى.

  • يوضّح قسم تعديل الفيديوهات وحذفها كيفية استخدام واجهة برمجة التطبيقات لتعديل معلومات عن فيديو على YouTube. ويوضّح أيضًا كيفية إزالة فيديو باستخدام واجهة برمجة التطبيقات.

  • يوضّح قسم استخدام ميزات المنتدى وظائف واجهة برمجة التطبيقات التي تسمح للمستخدمين بالتفاعل مع فيديوهات YouTube. توضّح هذه الدوالّ طلبات نشر تقييم أو تعليق أو شكوى بشأن فيديو حالي. يمكنك أيضًا استخدام واجهة برمجة التطبيقات لاسترداد قوائم التعليقات على الفيديوهات.

  • يشرح قسم حفظ الفيديوهات وجمعها كيفية استخدام واجهة برمجة التطبيقات للوصول إلى الفيديوهات المفضّلة وقوائم التشغيل والفيديوهات والاشتراكات في قنوات YouTube وإنشائها وتعديلها. ويوضّح أيضًا كيفية تعديل قوائم التشغيل والفيديوهات المفضّلة من خلال إضافة فيديوهات وإزالتها.

  • يوضّح قسم تفعيل تفاعل المستخدم كيفية استخدام واجهة برمجة التطبيقات لاسترداد الملفات الشخصية للمستخدمين وتعديلها. يوضّح هذا القسم أيضًا كيفية استرداد جهات اتصال المستخدمين وإضافتها وتعديلها وحذفها.

الخطوات الأولى

المتطلبات

يمكن لتطبيق العميل استخدام خلاصات YouTube Data API للبحث عن الفيديوهات والتعليقات والردود وقوائم التشغيل والاشتراكات والملفات الشخصية للمستخدمين وغير ذلك واستعادتها وتعديلها.

بالإضافة إلى تقديم بعض المعلومات الأساسية حول إمكانات YouTube Data API، يقدّم هذا المستند أمثلة على التفاعل مع واجهة برمجة التطبيقات باستخدام مكتبة Python Client Library. لاستخدام مكتبة 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 لتطبيقات الويب

تستخدم تطبيقات الويب التي تحتاج إلى مصادقة المستخدمين على حسابات YouTube/Google مصادقة الخادم الوكيل AuthSub. لا يحتاج المشغّل إلى الوصول إلى اسم مستخدم وكلمة مرور مستخدم 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.
  • آمن: يشير ذلك إلى أنّ الرمز المميّز الذي يتم إرجاعه لن يكون رمزًا آمنًا.
  • 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 API. لن تنتهي صلاحية الرموز المميّزة لجلسة 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 API، تأكَّد أيضًا من تمرير مفتاح المطوّر ورقم تعريف العميل إلى عنصر 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 Data API العديد من خلاصات الفيديوهات التي تمثّل قوائم بالفيديوهات، مثل الخلاصات العادية والفيديوهات المحمَّلة والاشتراكات والمفضلة. يتم توثيق عنوان 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

ملاحظة: يمكنك أيضًا استرداد الخلاصات العادية الخاصة باللغة من خلال تحديد معرّف اللغة بالتنسيق: 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))

ملاحظة: يمكنك أيضًا استخدام السلسلة "default" بدلاً من username لاسترداد الفيديوهات للمستخدم الذي تمّت المصادقة عليه حاليًا.

لاسترداد الفيديوهات ذات الصلة، عليك تمرير معرّف الفيديو الخاص بكائن gdata.youtube.YouTubeVideoEntry إلى طريقة GetYouTubeRelatedVideoFeed الخاصة بكائن gdata.youtube.service.YouTubeService. يؤدي ذلك إلى استرداد عنصر YouTubeVideoFeed يحتوي على إدخالات ذات صلة.

related_feed = yt_service.GetYouTubeRelatedVideoFeed(video_id='abc123')

البحث عن الفيديوهات

تتيح لك YouTube Data API طلب مجموعة من الإدخالات التي تتطابق مع معايير محدّدة، مثل طلب إدخالات الفيديوهات التي نشرها مؤلف معيّن أو حسب تنسيق الفيديو أو التي تحتوي على كلمة رئيسية معيّنة. لإجراء ذلك، عليك إنشاء عنصر gdata.service.YouTubeVideoQuery باستخدام معايير البحث المحدّدة ونقله إلى YouTubeQuery في gdata.youtube.service.YouTubeService.

يوضّح المثال أدناه كيفية تنفيذ طلب بحث مع ترتيب النتائج حسب عدد المشاهدات، بما في ذلك الفيديوهات المحظورة (يُشار إليها باسم "محتوى فاضح" في واجهة برمجة التطبيقات):

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 للنتيجة الأولى التي تريد retrieving (لصفحة).
orderby
يُستخدَم لتحديد ترتيب إدراج الإدخالات، مثل relevance أو viewCount أو published أو rating.
time
تُستخدَم لضبط فترة زمنية للحد من نتائج الخلاصة العادية على: today أو this_week أو this_month أو all_time.
vq
تُستخدَم لضبط عبارة طلب بحث. البحث عن السلسلة المحدّدة في جميع البيانات الوصفية للفيديو، مثل العناوين والعلامات والأوصاف

ملاحظة: لمزيد من المعلومات عن مَعلمات طلبات البحث، يُرجى الاطّلاع على دليل مرجعي لـ YouTube Data API ودليل مرجعي لـ Google Data APIs.

البحث باستخدام الفئات والكلمات الرئيسية

يمكنك حصر نتائج البحث لعرض الفيديوهات التي تتطابق فقط مع مجموعة معيّنة من الفئات والكلمات الرئيسية. يوضّح الدليل المرجعي كيفية تحديد كلّ من فئات YouTube المحدّدة مسبقًا (مثل الموسيقى والأشخاص والمدوّنات وما إلى ذلك) والكلمات الرئيسية (العلامات) التي يحدّدها المستخدم.

توضِّح التعليمة البرمجية التالية كيفية البحث باستخدام الكلمات الرئيسية (العلامات) من خلال تغيير عبارات البحث إلى أحرف صغيرة. ملاحظة: بما أنّ بعض الكلمات (مثل "كوميديا") يمكن أن تكون فئة على YouTube وكلمة رئيسية في الوقت نفسه، تستخدِم طلبات البحث عن الفئات والكلمات الرئيسية القاعدة التي تنصّ على أنّ الكلمة المكتوبة بأحرف كبيرة ("كوميديا") تشير إلى فئة على YouTube، في حين تشير الكلمة المكتوبة بأحرف صغيرة ("كوميديا") إلى كلمة رئيسية.

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 للملفvideo/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 API. يحتوي ردّ 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 ثم استخدام طريقة UpdateVideoEntry لعناصر YouTubeService. تأخذ هذه الطريقة 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 تتيح إمكانية استرداد قائمة بالفيديوهات التي تضم ردودًا على فيديو معيّن أو تحميل فيديوهات جديدة تضم ردودًا على فيديوهات أخرى أو حذف هذه الفيديوهات، ولكن يمكنك حذف الفيديو الذي تم استخدامه في فيديو ردّ. وبالتالي، لم تعُد هذه الدوالّ متاحة أيضًا في واجهة برمجة التطبيقات.

تعرض الآن طلبات البيانات من واجهة برمجة التطبيقات لعمليات الردّ على الفيديوهات ما يلي:

  • يؤدي طلب استرداد الفيديوهات التي تضم ردودًا على فيديو معيّن إلى عرض قائمة فارغة.
  • يعرض طلب إضافة ردّ عبر فيديو رمز استجابة HTTP‏ 403.
  • يعرض طلب حذف ردّ على شكل فيديو رمز استجابة HTTP‏ 403.

الإبلاغ عن فيديو

تتم إضافة شكوى بشأن فيديو باستخدام الطريقة 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. كما هو موضّح أعلاه، تمثّل هذه العناصر فيديوهات فردية في قائمة تشغيل (مع عناوين وأوصاف مخصّصة اختيارية). يمكنك الحصول على هذه الخلاصة من خلال تمرير معرّف الموارد المنتظم لقائمة التشغيل إلى طريقة 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. تتطلّب الطريقة معرّف الموارد المنتظم لقائمة التشغيل التي تحتوي على الإدخال المطلوب حذفه بالإضافة إلى معرّف الإدخال:

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، مع إدخال عنوان URL لقائمة التشغيل المطلوب حذفها:

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) لخلاصة اشتراك أو اسم المستخدم المطلوب استرداد خلاصة اشتراكه. يتم ضبط مَعلمة username تلقائيًا على المستخدم الذي تمّت مصادقة هويته حاليًا.

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 يدويًا، يمكنك استخدام معرّف الموارد الموحّد التالي:

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'

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