Search: list

عرض مجموعة من نتائج البحث التي تتطابق مع مَعلمات طلب البحث المحدّدة في طلب البيانات من واجهة برمجة التطبيقات. تحدِّد مجموعة نتائج البحث تلقائيًا موارد video وchannel وplaylist المطابقة، ولكن يمكنك أيضًا إعداد طلبات البحث لاسترداد نوع محدّد فقط من الموارد.

تأثير الحصة: تتطلب أي مكالمة إلى هذه الطريقة تكلفة حصة تبلغ 100 وحدة.

حالات الاستخدام الشائعة

الطلب

طلب HTTP

GET https://www.googleapis.com/youtube/v3/search

المَعلمات

يسرد الجدول التالي المعلَمات التي يتيحها طلب البحث هذا. كلّ المَعلمات المدرَجة هي مَعلمات طلب بحث.

المَعلمات
المَعلمات المطلوبة
part string
تحدّد المعلَمة part قائمة مفصولة بفواصل تتضمّن سمة واحدة أو أكثر من سمات موارد search التي ستشملها استجابة واجهة برمجة التطبيقات. اضبط قيمة المعلَمة على snippet.
الفلاتر (حدِّد 0 أو 1 من المَعلمات التالية)
forContentOwner boolean
لا يمكن استخدام هذه المَعلمة إلّا في طلب معتمَد بشكلٍ صحيح، وهي مخصّصة حصريًا لشركاء المحتوى في YouTube.

تحصر مَعلمة forContentOwner عملية البحث باسترداد الفيديوهات التي يملكها مالك المحتوى وتحدّدها المَعلمة onBehalfOfContentOwner فقط. إذا تم ضبط forContentOwner على "صحيح"، يجب أن يستوفي الطلب أيضًا المتطلبات التالية:
  • يجب إدخال معلَمة onBehalfOfContentOwner.
  • يجب أن يستخدم المستخدم الذي يفوّض الطلب حسابًا مرتبطًا بمالك المحتوى المحدّد.
  • يجب ضبط قيمة المعلَمة type على video.
  • لا يمكن ضبط أي من المَعلمات التالية: videoDefinition أو videoDimension أو videoDuration أو videoEmbeddable أو videoLicense أو videoPaidProductPlacement أو videoSyndicated أو videoType.
forDeveloper boolean
لا يمكن استخدام هذه المَعلمة إلا في طلب معتمد بشكل صحيح. تفرض المَعلمة forDeveloper قيودًا على عملية البحث لاسترداد الفيديوهات التي تم تحميلها من خلال تطبيق المطوِّر أو موقعه الإلكتروني فقط. يستخدم خادم واجهة برمجة التطبيقات بيانات اعتماد تفويض الطلب لتحديد مطوّر البرامج. يمكن استخدام مَعلمة forDeveloper مع مَعلمات بحث اختيارية، مثل مَعلمة q.

بالنسبة إلى هذه الميزة، يتم تلقائيًا وضع علامة على كل فيديو يتم تحميله برقم المشروع المرتبط بتطبيق المطوِّر في Google Developers Console.

عندما يضبط طلب بحث بعد ذلك مَعلمة forDeveloper على true، يستخدِم خادم واجهة برمجة التطبيقات بيانات اعتماد التفويض الخاصة بالطلب لتحديد هوية المطوِّر. لذلك، يمكن للمطوّر حصر النتائج بالفيديوهات التي تمّ تحميلها من خلال التطبيق الخاص بالمطوّر أو موقعه الإلكتروني وليس تلك التي تمّ تحميلها من خلال تطبيقات أو مواقع إلكترونية أخرى.
forMine boolean
لا يمكن استخدام هذه المَعلمة إلا في طلب معتمد بشكل صحيح. وتحصر المَعلمة forMine عملية البحث لاسترداد الفيديوهات التي يملكها المستخدم الذي تمت المصادقة عليه فقط. في حال ضبط هذه المَعلمة على true، يجب أيضًا ضبط قيمة المعلَمة type على video. بالإضافة إلى ذلك، لا يمكن ضبط أي من المَعلمات التالية في الطلب نفسه: videoDefinition وvideoDimension وvideoDuration وvideoEmbeddable وvideoLicense وvideoPaidProductPlacement وvideoSyndicated وvideoType.
المَعلمات الاختيارية
channelId string
تشير المَعلمة channelId إلى أنّ استجابة واجهة برمجة التطبيقات يجب أن تحتوي فقط على الموارد التي أنشأتها القناة.

ملاحظة: في حال تحديد قيمة المعلَمة channelId أو ضبط قيمة المعلَمة type على video، يتم أيضًا تقييد نتائج البحث بـ 500 فيديو كحدّ أقصى إذا كان طلبك لا يضبط أحد فلاتر forContentOwner أو forDeveloper أو forMine.
channelType string
تتيح لك المعلَمة channelType حصر عملية البحث بنوع معيّن من القنوات.

القيم المقبولة هي:
  • any – عرض جميع القنوات
  • show – استرداد العروض فقط.
eventType string
تحصر المَعلمة eventType عملية البحث بالأحداث التي يتم بثها. في حال تحديد قيمة لهذه المَعلمة، عليك أيضًا ضبط قيمة المعلَمة type على video.

القيم المقبولة هي:
  • completed – تضمين عمليات البث المكتملة فقط
  • live: تضمين عمليات البث النشطة فقط
  • upcoming: تضمين أحداث البث القادمة فقط
location string
تحدّد المَعلمة location إلى جانب المَعلمة locationRadius منطقة جغرافية دائرية وتحصر عملية البحث على الفيديوهات التي تحدّد في بياناتها الوصفية موقعًا جغرافيًا يقع ضمن تلك المنطقة. قيمة المعلَمة هي سلسلة تحدد إحداثيات خط العرض/خط الطول، مثل (37.42307,-122.08427).

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

ملاحظة: في حال تحديد قيمة لهذه المَعلمة، عليك أيضًا ضبط قيمة المَعلمة type على video.
locationRadius string
تحدّد المَعلمة locationRadius، جنبًا إلى جنب مع المَعلمة location، منطقة جغرافية دائرية.

يجب أن تكون قيمة المَعلمة رقم نقطة عائمة متبوعة بوحدة قياس. وحدات القياس الصالحة هي m وkm وft وmi. على سبيل المثال، تشمل قيم المَعلمات الصالحة 1500m و5km و10000ft و0.75mi. لا تتيح واجهة برمجة التطبيقات استخدام قيم مَعلمة locationRadius التي يزيد حجمها عن 1,000 كيلومتر.

ملاحظة: يُرجى الاطّلاع على تعريف المَعلمة location لمعرفة مزيد من المعلومات.
maxResults unsigned integer
تحدّد المعلَمة maxResults الحدّ الأقصى لعدد العناصر التي يجب عرضها في مجموعة النتائج. تتراوح القيم المقبولة بين 0 و50، بما في ذلك القيم الواقعة بينهما. القيمة التلقائية هي 5.
onBehalfOfContentOwner string
لا يمكن استخدام هذه المَعلمة إلا في طلب معتمد بشكل صحيح. ملاحظة: هذه المَعلمة مخصّصة حصريًا لشركاء المحتوى في YouTube.

تشير المَعلمة onBehalfOfContentOwner إلى أنّ بيانات اعتماد التفويض الخاصة بالطلب تحدِّد مستخدم نظام "إدارة محتوى YouTube" الذي يتصرّف نيابةً عن مالك المحتوى المحدَّد في قيمة المَعلمة. هذه المعلمة مخصصة لشركاء المحتوى في YouTube الذين يملكون العديد من القنوات المختلفة على YouTube ويديرونها. يسمح هذا البرنامج لمالكي المحتوى بالمصادقة مرة واحدة والوصول إلى جميع بيانات القنوات والفيديوهات الخاصة بهم، بدون الحاجة إلى تقديم بيانات اعتماد مصادقة لكل قناة على حدة. يجب أن يكون حساب نظام إدارة المحتوى الذي يصادقه المستخدم مرتبطًا بمالك المحتوى المحدد على YouTube.
order string
تحدّد المعلَمة order الطريقة التي سيتم استخدامها لطلب الموارد في استجابة واجهة برمجة التطبيقات. القيمة التلقائية هي relevance.

القيم المقبولة هي:
  • date – يتم ترتيب الموارد بترتيب زمني عكسي استنادًا إلى تاريخ إنشائها.
  • rating – يتم ترتيب الموارد من الأعلى إلى الأدنى.
  • relevance – يتم ترتيب الموارد حسب مدى صلتها بطلب البحث. هذه هي القيمة التلقائية لهذه المَعلمة.
  • title – يتم ترتيب المراجع أبجديًا حسب العنوان.
  • videoCount: يتم ترتيب القنوات تنازليًا حسب عدد الفيديوهات المحمّلة.
  • viewCount – يتم ترتيب الموارد من الأعلى إلى الأدنى من المشاهدات. في أحداث البث المباشر، يتم ترتيب الفيديوهات حسب عدد المشاهدين المتزامنين عندما تكون عمليات البث مستمرة.
pageToken string
تحدِّد المعلَمة pageToken صفحة معيّنة في مجموعة النتائج يجب عرضها. في استجابة واجهة برمجة التطبيقات، تحدّد السمتان nextPageToken وprevPageToken الصفحات الأخرى التي يمكن استردادها.
publishedAfter datetime
تشير المَعلمة publishedAfter إلى أنّ استجابة واجهة برمجة التطبيقات يجب أن تحتوي فقط على موارد تم إنشاؤها في الوقت المحدَّد أو بعده. وتكون القيمة هي قيمة تاريخ ووقت بتنسيق RFC 3339 (1970-01-01T00:00:00Z).
publishedBefore datetime
تشير المَعلمة publishedBefore إلى أنّ استجابة واجهة برمجة التطبيقات يجب أن تحتوي فقط على موارد تم إنشاؤها قبل الوقت المحدّد أو في وقت محدّد فقط. وتكون القيمة هي قيمة تاريخ ووقت بتنسيق RFC 3339 (1970-01-01T00:00:00Z).
q string
تحدّد المعلَمة q عبارة طلب البحث المطلوب البحث عنها.

ويمكن أن يستخدم طلبك أيضًا عاملَي التشغيل المنطقي NOT (-) وOR (|) لاستبعاد فيديوهات أو للعثور على فيديوهات مرتبطة بإحدى عبارات البحث المتعددة. على سبيل المثال، للبحث عن فيديوهات تتطابق مع كلمة "قارب" أو "إبحار"، اضبط قيمة المعلَمة q على boating|sailing. وبالمثل، للبحث عن فيديوهات تتطابق مع كلمة "قارب" أو "إبحار" ولكن ليس مع "صيد الأسماك"، اضبط قيمة المعلَمة q على boating|sailing -fishing. تجدر الإشارة إلى أنّه يجب تخطي عنوان URL لحرف الممر عند إرساله في طلب البيانات من واجهة برمجة التطبيقات. القيمة التي تم تجاوزها لعنوان URL لحرف الممر هي %7C.
regionCode string
توجّه المَعلمة regionCode واجهة برمجة التطبيقات إلى عرض نتائج البحث عن الفيديوهات التي يمكن عرضها في البلد المحدّد. قيمة المَعلمة هي رمز بلد بمعيار ISO 3166-1 alpha-2.
relevanceLanguage string
توجّه المعلَمة relevanceLanguage واجهة برمجة التطبيقات بعرض نتائج البحث الأكثر صلة باللغة المحدَّدة. تكون قيمة المعلَمة عادةً رمز لغة مؤلفًا من حرفَين وفقًا لمعيار ISO 639-1. ومع ذلك، يجب استخدام القيم zh-Hans للغة الصينية المبسطة وzh-Hant للغة الصينية التقليدية. ويستمر عرض النتائج باللغات الأخرى إذا كانت ذات صلة بعبارة طلب البحث.
safeSearch string
تشير المَعلمة safeSearch إلى ما إذا كان يجب أن تتضمّن نتائج البحث محتوًى محظورًا وكذلك محتوى عاديًا.

القيم المقبولة هي:
  • moderate – ستفلتر منصّة YouTube بعض المحتوى من نتائج البحث وستفلتر المحتوى المحظور في منطقتك على الأقل. استنادًا إلى محتواها، قد تتم إزالة نتائج البحث من نتائج البحث أو خفض ترتيبها في نتائج البحث. وهذه هي قيمة المَعلمة التلقائية.
  • none – لن يفلتر YouTube مجموعة نتائج البحث.
  • strict – سيحاول YouTube استبعاد كل المحتوى المحظور من مجموعة نتائج البحث. استنادًا إلى محتواها، قد تتم إزالة نتائج البحث من نتائج البحث أو خفض ترتيبها في نتائج البحث.
topicId string
تشير المَعلمة topicId إلى أنّ استجابة واجهة برمجة التطبيقات يجب أن تحتوي فقط على الموارد المرتبطة بالموضوع المحدَّد. تحدِّد القيمة رقم تعريف موضوع Freebase.

ملاحظة مهمة: بسبب إيقاف Freebase وواجهة برمجة التطبيقات Freebase API، بدأت المعلّمة topicId في العمل بشكل مختلف اعتبارًا من 27 شباط (فبراير) 2017. آنذاك، بدأت منصة YouTube في إتاحة مجموعة صغيرة من معرّفات المواضيع المنظّمة، ولا يمكنك استخدام سوى تلك المجموعة الأصغر حجمًا من أرقام التعريف كقيم لهذه المَعلمة.

type string
تفرض المَعلمة type قيودًا على طلب البحث لاسترداد نوع معيّن من الموارد فقط. تكون القيمة عبارة عن قائمة مفصولة بفواصل من أنواع الموارد. القيمة التلقائية هي video,channel,playlist.

القيم المقبولة هي:
  • channel
  • playlist
  • video
videoCaption string
تحدّد المعلَمة videoCaption ما إذا كان يجب على واجهة برمجة التطبيقات فلترة نتائج بحث الفيديو استنادًا إلى ما إذا كانت تتضمن ترجمة. في حال تحديد قيمة لهذه المَعلمة، عليك أيضًا ضبط قيمة المعلَمة type على video.

القيم المقبولة هي:
  • any – لا تفلتر النتائج استنادًا إلى مدى توفّر الترجمة.
  • closedCaption – تضمين مقاطع الفيديو التي تحتوي على ترجمة وشرح فقط
  • none – تضمين الفيديوهات التي لا تحتوي على ترجمة وشرح فقط
videoCategoryId string
تعمل المَعلمة videoCategoryId على فلترة نتائج البحث عن الفيديو استنادًا إلى فئتها. إذا حدّدت قيمة لهذه المَعلمة، عليك أيضًا ضبط قيمة المعلَمة type على video.
videoDefinition string
تتيح لك المَعلمة videoDefinition حصر عملية البحث بحيث تتضمّن فقط فيديوهات ذات دقة عالية (HD) أو فيديوهات ذات دقة عادية (SD). يمكن تشغيل الفيديوهات العالية الدقة بدقة 720p على الأقل، وقد تتوفّر أيضًا بدرجات دقة أعلى، مثل 1080p. في حال تحديد قيمة لهذه المَعلمة، عليك أيضًا ضبط قيمة المعلَمة type على video.

القيم المقبولة هي:
  • any: عرض كل الفيديوهات، بغض النظر عن درجة دقتها.
  • high – لاسترداد الفيديوهات بدقة عالية فقط.
  • standard – استرداد الفيديوهات بدقة عادية فقط
videoDimension string
تتيح لك المَعلمة videoDimension حظر عملية البحث لاسترداد فيديوهات ثنائية أو ثلاثية الأبعاد فقط. في حال تحديد قيمة لهذه المَعلمة، عليك أيضًا ضبط قيمة المعلَمة type على video.

القيم المقبولة هي:
  • 2d – يمكنك تقييد نتائج البحث لاستبعاد الفيديوهات الثلاثية الأبعاد.
  • 3d – يمكنك حصر نتائج البحث بحيث تتضمّن فيديوهات ثلاثية الأبعاد فقط.
  • any – تضمين فيديوهات ثلاثية الأبعاد وغير ثلاثية الأبعاد في النتائج المعروضة هذه هي القيمة الافتراضية.
videoDuration string
تعمل المَعلمة videoDuration على فلترة نتائج البحث عن الفيديو استنادًا إلى المدّة. في حال تحديد قيمة لهذه المَعلمة، عليك أيضًا ضبط قيمة المعلَمة type على video.

القيم المقبولة هي:
  • any – عدم فلترة نتائج البحث عن الفيديوهات استنادًا إلى مدتها. هذه هي القيمة الافتراضية.
  • long: تضمين الفيديوهات التي تزيد مدّتها عن 20 دقيقة فقط
  • medium – لا تضمّن سوى الفيديوهات التي تتراوح مدّتها بين 4 و20 دقيقة (شاملة)
  • short – تضمين الفيديوهات التي تقل مدّتها عن أربع دقائق فقط
videoEmbeddable string
تتيح لك المعلَمة videoEmbeddable حصر عملية البحث على الفيديوهات التي يمكن تضمينها في صفحة ويب فقط. في حال تحديد قيمة لهذه المَعلمة، عليك أيضًا ضبط قيمة المعلَمة type على video.

القيم المقبولة هي:
  • any – عرض جميع الفيديوهات سواء كانت قابلة للتضمين أم لا
  • true – لاسترداد الفيديوهات القابلة للتضمين فقط.
videoLicense string
تعمل المَعلمة videoLicense على فلترة نتائج البحث لتضمين فيديوهات بترخيص معيّن فقط. يتيح YouTube للقائمين بالتحميل إمكانية اختيار إرفاق ترخيص المشاع الإبداعي أو ترخيص YouTube القياسي بكل فيديو من مقاطع الفيديو الخاصة بهم. في حال تحديد قيمة لهذه المَعلمة، عليك أيضًا ضبط قيمة المعلَمة type على video.

القيم المقبولة هي:
  • any – عرض جميع الفيديوهات التي تتطابق مع معلَمات طلب البحث، بغض النظر عن الترخيص الذي تملكه
  • creativeCommon: لعرض الفيديوهات التي تحمل رخصة المشاع الإبداعي فقط يمكن للمستخدمين إعادة استخدام الفيديوهات التي تحمل هذا الترخيص في فيديوهات أخرى ينشئونها. مزيد من المعلومات
  • youtube: لعرض الفيديوهات التي تحمل ترخيص YouTube العادي فقط
videoPaidProductPlacement string
تفلتر المَعلمة videoPaidProductPlacement نتائج البحث لتشمل فقط الفيديوهات التي أشار صانع المحتوى إلى أنّها تتضمّن إعلانًا ترويجيًا مدفوعًا. إذا حدّدت قيمة لهذه المَعلمة، عليك أيضًا ضبط قيمة المعلَمة type على video.

القيم المقبولة هي:
  • any – عرض جميع الفيديوهات، بغض النظر عما إذا كانت تتضمن إعلانات ترويجية مدفوعة
  • true – استرداد الفيديوهات التي تتضمّن إعلانات ترويجية مدفوعة فقط
videoSyndicated string
تتيح لك المعلَمة videoSyndicated حصر عملية البحث على الفيديوهات التي يمكن تشغيلها خارج youtube.com فقط. في حال تحديد قيمة لهذه المَعلمة، عليك أيضًا ضبط قيمة المعلَمة type على video.

القيم المقبولة هي:
  • any – عرض كل الفيديوهات، سواء كانت مُقتبَسة أو لا
  • true – استرداد الفيديوهات المقتبسة فقط.
videoType string
تتيح لك المعلَمة videoType حصر عملية البحث بنوع معيّن من الفيديوهات. في حال تحديد قيمة لهذه المَعلمة، عليك أيضًا ضبط قيمة المعلَمة type على video.

القيم المقبولة هي:
  • any – عرض كل الفيديوهات
  • episode – استرداد حلقات العروض فقط
  • movie – لاسترداد الأفلام فقط.

نص الطلب

لا تقدِّم نص طلب عند استدعاء هذه الطريقة.

الإجابة

إذا نجحت هذه الطريقة، ستعرض هذه الطريقة نص استجابة بالبنية التالية:

{
  "kind": "youtube#searchListResponse",
  "etag": etag,
  "nextPageToken": string,
  "prevPageToken": string,
  "regionCode": string,
  "pageInfo": {
    "totalResults": integer,
    "resultsPerPage": integer
  },
  "items": [
    search Resource
  ]
}

أماكن إقامة

يعرّف الجدول التالي السمات التي تظهر في نتيجة بحث:

أماكن إقامة
kind string
يحدّد نوع مورد واجهة برمجة التطبيقات. ستكون القيمة youtube#searchListResponse.
etag etag
علامة هذا المرجع.
nextPageToken string
الرمز المميّز الذي يمكن استخدامه كقيمة للمَعلمة pageToken لاسترداد الصفحة التالية في مجموعة النتائج.
prevPageToken string
الرمز المميّز الذي يمكن استخدامه كقيمة للمَعلمة pageToken لاسترداد الصفحة السابقة في مجموعة النتائج.
regionCode string
تمثّل هذه السمة رمز المنطقة الذي تم استخدامه لطلب البحث. قيمة الخاصية هي رمز بلد مكوّن من حرفين وفقًا لمعيار ISO ويحدد المنطقة. تعرض الطريقة i18nRegions.list قائمة بالمناطق المتاحة. القيمة التلقائية هي US. وإذا تم تحديد منطقة غير متاحة، قد يختار YouTube منطقة أخرى بدلاً من القيمة التلقائية لمعالجة طلب البحث.
pageInfo object
يحتوي الكائن pageInfo على معلومات التقسيم على صفحات لمجموعة النتائج.
pageInfo.totalResults integer
إجمالي عدد النتائج في مجموعة النتائج.يُرجى ملاحظة أن القيمة تقريبية وقد لا تمثّل قيمة دقيقة. بالإضافة إلى ذلك، الحد الأقصى للقيمة هو 1,000,000.

يجب عدم استخدام هذه القيمة لإنشاء روابط التقسيم على صفحات. بدلاً من ذلك، يمكنك استخدام قيمتَي السمتَين nextPageToken وprevPageToken لتحديد ما إذا كان سيتم عرض روابط التقسيم على صفحات أم لا.
pageInfo.resultsPerPage integer
عدد النتائج المضمَّنة في ردّ واجهة برمجة التطبيقات
items[] list
قائمة بالنتائج التي تطابق معايير البحث.

أمثلة

ملاحظة: قد لا تمثل عيّنات التعليمات البرمجية التالية جميع لغات البرمجة المتوافقة. راجِع مستندات مكتبات العملاء للحصول على قائمة باللغات المتوافقة.

برمجة تطبيقات

تقوم هذه الدالة بالبحث عن مقاطع الفيديو المتعلقة بالكلمة الرئيسية "كلاب". ويتم تسجيل معرّفات الفيديوهات وعناوين نتائج البحث في سجلّ "برمجة تطبيقات Google".

يُرجى العلم أنّ هذا العيّنة لا تقتصر على 25 نتيجة. لعرض المزيد من النتائج، اعرض المَعلمات الإضافية كما هو موثق هنا: https://developers.google.com/youtube/v3/docs/search/list
function searchByKeyword() {
  var results = YouTube.Search.list('id,snippet', {q: 'dogs', maxResults: 25});

  for(var i in results.items) {
    var item = results.items[i];
    Logger.log('[%s] Title: %s', item.id.videoId, item.snippet.title);
  }
}

البدء

يستدعي نموذج الرمز هذا طريقة search.list الخاصة بواجهة برمجة التطبيقات لاسترداد نتائج البحث المرتبطة بكلمة رئيسية معيّنة.

يستخدم هذا المثال مكتبة برامج Go.

package main

import (
	"flag"
	"fmt"
	"log"
	"net/http"

	"google.golang.org/api/googleapi/transport"
	"google.golang.org/api/youtube/v3"
)

var (
	query      = flag.String("query", "Google", "Search term")
	maxResults = flag.Int64("max-results", 25, "Max YouTube results")
)

const developerKey = "YOUR DEVELOPER KEY"

func main() {
	flag.Parse()

	client := &http.Client{
		Transport: &transport.APIKey{Key: developerKey},
	}

	service, err := youtube.New(client)
	if err != nil {
		log.Fatalf("Error creating new YouTube client: %v", err)
	}

	// Make the API call to YouTube.
	call := service.Search.List("id,snippet").
		Q(*query).
		MaxResults(*maxResults)
	response, err := call.Do()
	handleError(err, "")

	// Group video, channel, and playlist results in separate lists.
	videos := make(map[string]string)
	channels := make(map[string]string)
	playlists := make(map[string]string)

	// Iterate through each item and add it to the correct list.
	for _, item := range response.Items {
		switch item.Id.Kind {
		case "youtube#video":
			videos[item.Id.VideoId] = item.Snippet.Title
		case "youtube#channel":
			channels[item.Id.ChannelId] = item.Snippet.Title
		case "youtube#playlist":
			playlists[item.Id.PlaylistId] = item.Snippet.Title
		}
	}

	printIDs("Videos", videos)
	printIDs("Channels", channels)
	printIDs("Playlists", playlists)
}

// Print the ID and title of each result in a list as well as a name that
// identifies the list. For example, print the word section name "Videos"
// above a list of video search results, followed by the video ID and title
// of each matching video.
func printIDs(sectionName string, matches map[string]string) {
	fmt.Printf("%v:\n", sectionName)
	for id, title := range matches {
		fmt.Printf("[%v] %v\n", id, title)
	}
	fmt.Printf("\n\n")
}

NET.

يستدعي نموذج الرمز التالي طريقة search.list لواجهة برمجة التطبيقات لاسترداد نتائج البحث المرتبطة بكلمة رئيسية معيّنة.

يستخدم هذا المثال مكتبة برامج.NET.

using System;
using System.Collections.Generic;
using System.IO;
using System.Reflection;
using System.Threading;
using System.Threading.Tasks;

using Google.Apis.Auth.OAuth2;
using Google.Apis.Services;
using Google.Apis.Upload;
using Google.Apis.Util.Store;
using Google.Apis.YouTube.v3;
using Google.Apis.YouTube.v3.Data;

namespace Google.Apis.YouTube.Samples
{
  /// <summary>
  /// YouTube Data API v3 sample: search by keyword.
  /// Relies on the Google APIs Client Library for .NET, v1.7.0 or higher.
  /// See https://developers.google.com/api-client-library/dotnet/get_started
  ///
  /// Set ApiKey to the API key value from the APIs & auth > Registered apps tab of
  ///   https://cloud.google.com/console
  /// Please ensure that you have enabled the YouTube Data API for your project.
  /// </summary>
  internal class Search
  {
    [STAThread]
    static void Main(string[] args)
    {
      Console.WriteLine("YouTube Data API: Search");
      Console.WriteLine("========================");

      try
      {
        new Search().Run().Wait();
      }
      catch (AggregateException ex)
      {
        foreach (var e in ex.InnerExceptions)
        {
          Console.WriteLine("Error: " + e.Message);
        }
      }

      Console.WriteLine("Press any key to continue...");
      Console.ReadKey();
    }

    private async Task Run()
    {
      var youtubeService = new YouTubeService(new BaseClientService.Initializer()
      {
        ApiKey = "REPLACE_ME",
        ApplicationName = this.GetType().ToString()
      });

      var searchListRequest = youtubeService.Search.List("snippet");
      searchListRequest.Q = "Google"; // Replace with your search term.
      searchListRequest.MaxResults = 50;

      // Call the search.list method to retrieve results matching the specified query term.
      var searchListResponse = await searchListRequest.ExecuteAsync();

      List<string> videos = new List<string>();
      List<string> channels = new List<string>();
      List<string> playlists = new List<string>();

      // Add each result to the appropriate list, and then display the lists of
      // matching videos, channels, and playlists.
      foreach (var searchResult in searchListResponse.Items)
      {
        switch (searchResult.Id.Kind)
        {
          case "youtube#video":
            videos.Add(String.Format("{0} ({1})", searchResult.Snippet.Title, searchResult.Id.VideoId));
            break;

          case "youtube#channel":
            channels.Add(String.Format("{0} ({1})", searchResult.Snippet.Title, searchResult.Id.ChannelId));
            break;

          case "youtube#playlist":
            playlists.Add(String.Format("{0} ({1})", searchResult.Snippet.Title, searchResult.Id.PlaylistId));
            break;
        }
      }

      Console.WriteLine(String.Format("Videos:\n{0}\n", string.Join("\n", videos)));
      Console.WriteLine(String.Format("Channels:\n{0}\n", string.Join("\n", channels)));
      Console.WriteLine(String.Format("Playlists:\n{0}\n", string.Join("\n", playlists)));
    }
  }
}

Ruby

يستدعي هذا النموذج طريقة search.list لواجهة برمجة التطبيقات لاسترداد نتائج البحث المرتبطة بكلمة رئيسية معيّنة.

يستخدم هذا المثال مكتبة برامج Ruby.

#!/usr/bin/ruby

require 'rubygems'
gem 'google-api-client', '>0.7'
require 'google/api_client'
require 'trollop'

# Set DEVELOPER_KEY to the API key value from the APIs & auth > Credentials
# tab of
# {{ Google Cloud Console }} <{{ https://cloud.google.com/console }}>
# Please ensure that you have enabled the YouTube Data API for your project.
DEVELOPER_KEY = 'REPLACE_ME'
YOUTUBE_API_SERVICE_NAME = 'youtube'
YOUTUBE_API_VERSION = 'v3'

def get_service
  client = Google::APIClient.new(
    :key => DEVELOPER_KEY,
    :authorization => nil,
    :application_name => $PROGRAM_NAME,
    :application_version => '1.0.0'
  )
  youtube = client.discovered_api(YOUTUBE_API_SERVICE_NAME, YOUTUBE_API_VERSION)

  return client, youtube
end

def main
  opts = Trollop::options do
    opt :q, 'Search term', :type => String, :default => 'Google'
    opt :max_results, 'Max results', :type => :int, :default => 25
  end

  client, youtube = get_service

  begin
    # Call the search.list method to retrieve results matching the specified
    # query term.
    search_response = client.execute!(
      :api_method => youtube.search.list,
      :parameters => {
        :part => 'snippet',
        :q => opts[:q],
        :maxResults => opts[:max_results]
      }
    )

    videos = []
    channels = []
    playlists = []

    # Add each result to the appropriate list, and then display the lists of
    # matching videos, channels, and playlists.
    search_response.data.items.each do |search_result|
      case search_result.id.kind
        when 'youtube#video'
          videos << "#{search_result.snippet.title} (#{search_result.id.videoId})"
        when 'youtube#channel'
          channels << "#{search_result.snippet.title} (#{search_result.id.channelId})"
        when 'youtube#playlist'
          playlists << "#{search_result.snippet.title} (#{search_result.id.playlistId})"
      end
    end

    puts "Videos:\n", videos, "\n"
    puts "Channels:\n", channels, "\n"
    puts "Playlists:\n", playlists, "\n"
  rescue Google::APIClient::TransmissionError => e
    puts e.result.body
  end
end

main

الأخطاء

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

نوع الخطأ تفاصيل الخطأ الوصف
badRequest (400) invalidChannelId حدّدت المعلمة channelId معرّف قناة غير صالح.
badRequest (400) invalidLocation تم تنسيق قيمة المعلَمة location و/أو locationRadius بشكلٍ غير صحيح.
badRequest (400) invalidRelevanceLanguage تم تنسيق قيمة المعلَمة relevanceLanguage بشكلٍ غير صحيح.
badRequest (400) invalidSearchFilter يحتوي الطلب على تركيبة غير صالحة من فلاتر البحث و/أو القيود. في حال ضبط المَعلمة forContentOwner أو forMine على true، يجب ضبط المَعلمة type على video. يجب أيضًا ضبط المَعلمة type على video في حال ضبط قيمة للمَعلمات eventType أو videoCaption أو videoCategoryId أو videoDefinition أو videoDimension أو videoDuration أو videoEmbeddable أو videoLicense أو videoSyndicated أو videoType.

تجربة

يمكنك استخدام APIs Explorer لطلب بيانات من واجهة برمجة التطبيقات هذه والاطّلاع على طلب البيانات من واجهة برمجة التطبيقات والاستجابة لها.