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 إلى أنّ استجابة واجهة برمجة التطبيقات يجب أن تحتوي فقط على موارد أنشأتها القناة.

ملاحظة: تقتصر نتائج البحث على 500 فيديو كحد أقصى إذا كان طلبك يحدِّد قيمة المَعلمة channelId ويضبط قيمة مَعلمة type على video، ولكنه لا يضبط أيضًا أحد فلاتر 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 التي تزيد عن 1000 كيلومتر.

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

تشير المَعلمة onBehalfOfContentOwner إلى أنّ بيانات اعتماد التفويض الخاصة بالطلب تحدّد مستخدمًا في "نظام إدارة المحتوى" (CMS) على YouTube يتصرف نيابةً عن مالك المحتوى المحدّد في قيمة المَعلمة. هذه المعلّمة مخصّصة لشركاء المحتوى في YouTube الذين يملكون ويديرون العديد من قنوات YouTube المختلفة. فهي تتيح لمالكي المحتوى المصادقة مرة واحدة والوصول إلى كل بيانات القناة والفيديوهات بدون الحاجة إلى تقديم بيانات اعتماد للمصادقة لكل قناة على حدة. يجب أن يكون حساب CMS الذي يصادق المستخدم عليه مرتبطًا بمالك المحتوى المحدد على 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 عبارة البحث للبحث عنها.

يمكن أن يستخدم طلبك أيضًا عاملَي التشغيل المنطقيَين (-) و(أو) (|) لاستبعاد الفيديوهات أو للعثور على فيديوهات مرتبطة بأحد عبارات البحث المتعددة. على سبيل المثال، للبحث عن الفيديوهات التي تطابق "قارب" أو "إبحار"، اضبط قيمة مَعلمة q على boating|sailing. وبالمثل، للبحث عن فيديوهات تطابق "قارب" أو "إبحار" وليس "صيد الأسماك"، اضبط قيمة المعلَمة q على boating|sailing -fishing. يُرجى العِلم أنّه يجب تخطي حرف عنوان URL في عنوان 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، بدأت المعلَمة 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 حصر البحث على الفيديوهات ذات الدقة العالية أو الدقة العادية فقط. يمكن تشغيل الفيديوهات العالية الدقة بدقة 720p على الأقل، ولكن قد تكون خيارات الدقة العالية، مثل 1080p، متوفّرة أيضًا. وإذا حدَّدت قيمة لهذه المَعلمة، عليك أيضًا ضبط قيمة المَعلمة type على video.

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

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

القيم المقبولة هي:
  • any – عدم فلترة نتائج البحث عن الفيديو بناءً على مدتها هذه هي القيمة الافتراضية.
  • long – تضمين الفيديوهات التي تزيد مدتها عن 20 دقيقة فقط
  • medium – أدرِج فقط الفيديوهات التي تتراوح مدتها بين أربع وعشرين دقيقة (شاملة).
  • 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
السمة 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 يحتوي الطلب على تركيبة غير صالحة من فلاتر البحث و/أو القيود. تجدر الإشارة إلى أنه يجب ضبط المَعلمة type على video في حال ضبط المَعلمتَين forContentOwner أو forMine على true. يجب أيضًا ضبط المَعلمة type على video في حال ضبط قيمة للمَعلمات eventType أو videoCaption أو videoCategoryId أو videoDefinition أو videoDimension أو videoDuration أو videoEmbeddable أو videoLicense أو videoSyndicated أو videoType.

تجربة

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