Search: list

مجموعه ای از نتایج جستجو را برمی گرداند که با پارامترهای پرس و جو مشخص شده در درخواست API مطابقت دارند. به‌طور پیش‌فرض، مجموعه نتایج جستجو منابع video ، channel و playlist منطبق را شناسایی می‌کند، اما همچنین می‌توانید جستارها را طوری پیکربندی کنید که نوع خاصی از منبع را بازیابی کنید.

تاثیر سهمیه ای: فراخوانی به این روش هزینه سهمیه ای 100 واحدی دارد.

موارد استفاده رایج

درخواست

درخواست HTTP

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

مولفه های

جدول زیر پارامترهایی را که این کوئری پشتیبانی می کند فهرست می کند. تمام پارامترهای لیست شده پارامترهای پرس و جو هستند.

مولفه های
پارامترهای مورد نیاز
part string
پارامتر part یک لیست جدا شده با کاما از یک یا چند ویژگی منبع search را مشخص می کند که پاسخ API شامل می شود. مقدار پارامتر را روی snippet تنظیم کنید.
فیلترها (0 یا 1 مورد از پارامترهای زیر را مشخص کنید)
forContentOwner boolean
این پارامتر فقط در یک درخواست مجاز به درستی قابل استفاده است و منحصراً برای شرکای محتوای YouTube در نظر گرفته شده است.

پارامتر forContentOwner جستجو را محدود می کند تا فقط ویدیوهای متعلق به مالک محتوا را که توسط پارامتر onBehalfOfContentOwner شناسایی شده است بازیابی کند. اگر forContentOwner روی true تنظیم شده باشد، درخواست باید این شرایط را نیز داشته باشد:
  • پارامتر onBehalfOfContentOwner مورد نیاز است.
  • کاربری که درخواست را تأیید می کند باید از یک حساب مرتبط با مالک محتوای مشخص شده استفاده کند.
  • مقدار پارامتر type باید روی video تنظیم شود.
  • هیچ یک از پارامترهای دیگر زیر را نمی توان تنظیم کرد: videoDefinition ، videoDimension ، videoDuration ، videoEmbeddable ، videoLicense ، videoPaidProductPlacement ، videoSyndicated ، videoType .
forDeveloper boolean
این پارامتر فقط در یک درخواست مجاز به درستی قابل استفاده است. پارامتر forDeveloper جستجو را محدود می کند تا فقط ویدیوهای آپلود شده از طریق برنامه یا وب سایت توسعه دهنده را بازیابی کند. سرور API از اعتبارنامه های مجوز درخواست برای شناسایی توسعه دهنده استفاده می کند. پارامتر forDeveloper را می توان همراه با پارامترهای جستجوی اختیاری مانند پارامتر q استفاده کرد.

برای این ویژگی، هر ویدیوی آپلود شده به‌طور خودکار با شماره پروژه مرتبط با برنامه برنامه‌نویس در Google Developers Console برچسب‌گذاری می‌شود.

هنگامی که یک درخواست جستجو متعاقباً پارامتر forDeveloper را روی true تنظیم می‌کند، سرور API از اعتبارنامه‌های مجوز درخواست برای شناسایی توسعه‌دهنده استفاده می‌کند. بنابراین، یک برنامه‌نویس می‌تواند نتایج را به ویدیوهای آپلود شده از طریق برنامه یا وب‌سایت خود برنامه‌نویس محدود کند، اما نه به ویدیوهای آپلود شده از طریق برنامه‌ها یا سایت‌های دیگر.
forMine boolean
این پارامتر فقط در یک درخواست مجاز به درستی قابل استفاده است. پارامتر forMine جستجو را محدود می کند تا فقط ویدیوهای متعلق به کاربر تأیید شده را بازیابی کند. اگر این پارامتر را روی true تنظیم کنید، مقدار پارامتر type نیز باید روی video تنظیم شود. علاوه بر این، هیچ یک از پارامترهای دیگر زیر را نمی‌توان در همان درخواست تنظیم کرد: videoDefinition , videoDimension , videoDuration , videoEmbeddable , videoLicense , videoPaidProductPlacement , videoSyndicated , videoType .
پارامترهای اختیاری
channelId string
پارامتر channelId نشان می دهد که پاسخ API فقط باید حاوی منابع ایجاد شده توسط کانال باشد.

توجه: اگر درخواست شما مقداری را برای پارامتر 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 نیز مشخص نکرده باشد، API یک خطا برمی‌گرداند.

توجه: اگر مقداری برای این پارامتر تعیین می‌کنید، باید مقدار پارامتر type را نیز روی video تنظیم کنید.
locationRadius string
پارامتر locationRadius ، در ارتباط با پارامتر location ، یک منطقه جغرافیایی دایره ای را تعریف می کند.

مقدار پارامتر باید یک عدد ممیز شناور و سپس یک واحد اندازه گیری باشد. واحدهای اندازه گیری معتبر m , km , ft , mi هستند . برای مثال، مقادیر پارامتر معتبر شامل 1500m ، 5km ، 10000ft و 0.75mi . API از مقادیر پارامتر locationRadius بزرگتر از 1000 کیلومتر پشتیبانی نمی کند.

توجه: برای اطلاعات بیشتر به تعریف پارامتر location مراجعه کنید.
maxResults unsigned integer
پارامتر maxResults حداکثر تعداد مواردی را که باید در مجموعه نتایج برگردانده شوند را مشخص می کند. مقادیر قابل قبول شامل 0 تا 50 است. مقدار پیش فرض 5 است.
onBehalfOfContentOwner string
این پارامتر فقط در یک درخواست مجاز به درستی قابل استفاده است. توجه: این پارامتر منحصراً برای شرکای محتوای YouTube در نظر گرفته شده است.

پارامتر onBehalfOfContentOwner نشان می دهد که اعتبارنامه مجوز درخواست، کاربر YouTube CMS را شناسایی می کند که از طرف مالک محتوا مشخص شده در مقدار پارامتر عمل می کند. این پارامتر برای شرکای محتوای YouTube در نظر گرفته شده است که کانال‌های مختلف YouTube را مالک و مدیریت می‌کنند. این به صاحبان محتوا امکان می‌دهد یک بار احراز هویت کنند و به تمام داده‌های ویدیویی و کانال خود دسترسی داشته باشند، بدون اینکه نیازی به ارائه اعتبارنامه احراز هویت برای هر کانال جداگانه داشته باشند. حساب CMS که کاربر با آن احراز هویت می‌کند باید به مالک محتوای YouTube مشخص شده مرتبط باشد.
order string
پارامتر order روشی را مشخص می کند که برای سفارش منابع در پاسخ API استفاده می شود. مقدار پیش فرض relevance است.

مقادیر قابل قبول عبارتند از:
  • date - منابع به ترتیب زمانی معکوس بر اساس تاریخ ایجاد آنها مرتب می شوند.
  • rating - منابع از بالاترین به پایین ترین رتبه مرتب شده اند.
  • relevance - منابع بر اساس ارتباط آنها با عبارت جستجو مرتب می شوند. این مقدار پیش فرض برای این پارامتر است.
  • title - منابع بر اساس الفبای عنوان مرتب شده اند.
  • videoCount - کانال ها به ترتیب نزولی بر اساس تعداد ویدیوهای آپلود شده مرتب می شوند.
  • viewCount - منابع از بیشترین به کمترین تعداد بازدید مرتب می شوند. برای پخش زنده، ویدیوها بر اساس تعداد بینندگان همزمان در حالی که پخش ادامه دارد مرتب می شوند.
pageToken string
پارامتر pageToken صفحه خاصی را در مجموعه نتایج مشخص می کند که باید برگردانده شود. در یک پاسخ API، ویژگی های nextPageToken و prevPageToken صفحات دیگری را شناسایی می کنند که می توانند بازیابی شوند.
publishedAfter datetime
پارامتر publishedAfter نشان می دهد که پاسخ API فقط باید حاوی منابع ایجاد شده در زمان مشخص شده یا بعد از آن باشد. مقدار یک مقدار تاریخ-زمان قالب بندی شده RFC 3339 است (1970-01-01T00:00:00Z).
publishedBefore datetime
پارامتر publishedBefore نشان می دهد که پاسخ API فقط باید حاوی منابعی باشد که قبل یا در زمان مشخص شده ایجاد شده اند. مقدار یک مقدار تاریخ-زمان قالب بندی شده RFC 3339 است (1970-01-01T00:00:00Z).
q string
پارامتر q عبارت پرس و جو را برای جستجو مشخص می کند.

درخواست شما همچنین می تواند از عملگرهای Boolean NOT ( - ) و OR ( | ) برای حذف ویدیوها یا یافتن ویدیوهایی که با یکی از چندین عبارت جستجو مرتبط هستند استفاده کند. به عنوان مثال، برای جستجوی ویدیوهای منطبق با «قایق‌رانی» یا «قایق‌رانی»، مقدار پارامتر q را روی boating|sailing تنظیم کنید. به طور مشابه، برای جستجوی ویدیوهای منطبق با "قایق سواری" یا "قایق سواری" اما نه "ماهیگیری"، مقدار پارامتر q را روی boating|sailing -fishing تنظیم کنید. توجه داشته باشید که وقتی نویسه لوله در درخواست API شما ارسال می‌شود، باید URL-escape شود. مقدار URL-escape شده برای نویسه لوله %7C است.
regionCode string
پارامتر regionCode به API دستور می دهد تا نتایج جستجو را برای ویدیوهایی که می توانند در کشور مشخص شده مشاهده کنند، بازگرداند. مقدار پارامتر یک کد کشور ISO 3166-1 alpha-2 است.
relevanceLanguage string
پارامتر relevanceLanguage به API دستور می دهد تا نتایج جستجو را که بیشترین ارتباط را با زبان مشخص شده دارند، بازگرداند. مقدار پارامتر معمولاً یک کد زبان دو حرفی ISO 639-1 است. با این حال، باید از مقادیر zh-Hans برای چینی ساده شده و zh-Hant برای چینی سنتی استفاده کنید. لطفاً توجه داشته باشید که نتایج به زبان‌های دیگر در صورتی که بسیار مرتبط با عبارت عبارت جستجو باشند باز هم بازگردانده می‌شوند.
safeSearch string
پارامتر safeSearch نشان می دهد که آیا نتایج جستجو باید شامل محتوای محدود و همچنین محتوای استاندارد باشد یا خیر.

مقادیر قابل قبول عبارتند از:
  • moderate ​​- YouTube برخی از محتواها را از نتایج جستجو فیلتر می کند و حداقل محتوای محدود شده در منطقه شما را فیلتر می کند. بر اساس محتوای آنها، نتایج جستجو را می توان از نتایج جستجو حذف کرد یا در نتایج جستجو تنزل رتبه داد. این مقدار پارامتر پیش فرض است.
  • none - YouTube مجموعه نتایج جستجو را فیلتر نخواهد کرد.
  • strict - YouTube سعی می کند تمام محتوای محدود شده را از مجموعه نتایج جستجو حذف کند. بر اساس محتوای آنها، نتایج جستجو را می توان از نتایج جستجو حذف کرد یا در نتایج جستجو تنزل رتبه داد.
topicId string
پارامتر topicId نشان می دهد که پاسخ API فقط باید حاوی منابع مرتبط با موضوع مشخص شده باشد. مقدار شناسه موضوع Freebase را مشخص می کند.

مهم: به دلیل منسوخ شدن Freebase و Freebase API، پارامتر topicId از 27 فوریه 2017 به طور متفاوت شروع به کار کرد. در آن زمان، YouTube شروع به پشتیبانی از مجموعه کوچکی از شناسه‌های موضوع انتخابی کرد، و شما فقط می‌توانید از آن مجموعه کوچک‌تر استفاده کنید. شناسه ها به عنوان مقادیر این پارامتر.

type string
پارامتر type یک عبارت جستجو را محدود می کند تا فقط نوع خاصی از منبع را بازیابی کند. مقدار یک لیست از انواع منابع جدا شده با کاما است. مقدار پیش فرض video,channel,playlist است.

مقادیر قابل قبول عبارتند از:
  • channel
  • playlist
  • video
videoCaption string
پارامتر videoCaption نشان می‌دهد که آیا API باید نتایج جستجوی ویدیو را بر اساس داشتن شرح فیلتر کند یا خیر. اگر مقداری برای این پارامتر مشخص کنید، باید مقدار پارامتر type را نیز روی video تنظیم کنید.

مقادیر قابل قبول عبارتند از:
  • any - نتایج را بر اساس در دسترس بودن شرح فیلتر نکنید.
  • closedCaption - فقط ویدیوهایی را که شرح دارند بگنجانید.
  • none - فقط ویدیوهایی را بگنجانید که شرح ندارند.
videoCategoryId string
پارامتر videoCategoryId نتایج جستجوی ویدیو را بر اساس دسته آنها فیلتر می کند. اگر مقداری برای این پارامتر مشخص کنید، باید مقدار پارامتر type را نیز روی video تنظیم کنید.
videoDefinition string
پارامتر videoDefinition به شما امکان می‌دهد جستجو را محدود کنید تا فقط ویدیوهای با کیفیت بالا (HD) یا کیفیت استاندارد (SD) را شامل شود. ویدیوهای HD برای پخش حداقل 720p در دسترس هستند، اگرچه رزولوشن‌های بالاتر مانند 1080p نیز ممکن است در دسترس باشند. اگر مقداری برای این پارامتر مشخص کنید، باید مقدار پارامتر type را نیز روی video تنظیم کنید.

مقادیر قابل قبول عبارتند از:
  • any - همه ویدیوها را بدون توجه به وضوح آنها برگردانید.
  • high - فقط فیلم های HD را بازیابی کنید.
  • standard - فقط ویدیوها را با کیفیت استاندارد بازیابی کنید.
videoDimension string
پارامتر videoDimension به شما امکان می دهد جستجو را محدود کنید تا فقط ویدیوهای دو بعدی یا سه بعدی را بازیابی کنید. اگر مقداری برای این پارامتر مشخص کنید، باید مقدار پارامتر type را نیز روی video تنظیم کنید.

مقادیر قابل قبول عبارتند از:
  • 2d - نتایج جستجو را محدود کنید تا ویدیوهای سه بعدی حذف شوند.
  • 3d - نتایج جستجو را محدود کنید تا فقط ویدیوهای سه بعدی را شامل شود.
  • any - شامل ویدیوهای سه بعدی و غیر سه بعدی در نتایج برگشتی. این مقدار پیش فرض است.
videoDuration string
پارامتر videoDuration نتایج جستجوی ویدیو را بر اساس مدت زمان آنها فیلتر می کند. اگر مقداری برای این پارامتر مشخص کنید، باید مقدار پارامتر type را نیز روی video تنظیم کنید.

مقادیر قابل قبول عبارتند از:
  • any - نتایج جستجوی ویدیویی را بر اساس مدت آنها فیلتر نکنید. این مقدار پیش فرض است.
  • long - فقط ویدیوهای بیش از 20 دقیقه را شامل شود.
  • medium ​​- فقط ویدیوهایی را که بین چهار تا 20 دقیقه هستند (شامل) شامل شود.
  • short - فقط ویدیوهایی را که کمتر از چهار دقیقه طول می کشند را شامل شود.
videoEmbeddable string
پارامتر videoEmbeddable به شما امکان می دهد جستجو را فقط به ویدیوهایی محدود کنید که می توانند در یک صفحه وب جاسازی شوند. اگر مقداری برای این پارامتر مشخص کنید، باید مقدار پارامتر type را نیز روی video تنظیم کنید.

مقادیر قابل قبول عبارتند از:
  • any - همه ویدیوها را، قابل جاسازی یا غیر قابل جاسازی، برگردانید.
  • true - فقط ویدیوهای قابل جاسازی را بازیابی کنید.
videoLicense string
پارامتر videoLicense نتایج جستجو را فیلتر می کند تا فقط ویدیوهای دارای مجوز خاص را شامل شود. YouTube به آپلودکنندگان ویدیو اجازه می‌دهد مجوز Creative Commons یا مجوز استاندارد YouTube را به هر یک از ویدیوهای خود پیوست کنند. اگر مقداری برای این پارامتر مشخص کنید، باید مقدار پارامتر type را نیز روی video تنظیم کنید.

مقادیر قابل قبول عبارتند از:
  • any – همه ویدیوها را، صرف نظر از مجوزی که دارند، که با پارامترهای پرس و جو مطابقت دارند، برگردانید.
  • creativeCommon – فقط ویدیوهایی را برگردانید که دارای مجوز Creative Commons هستند. کاربران می توانند از ویدیوهای دارای این مجوز در ویدیوهای دیگری که ایجاد می کنند مجددا استفاده کنند. بیشتر بدانید .
  • 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
نوع منبع API را مشخص می کند. مقدار 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
تعداد نتایج موجود در پاسخ API.
items[] list
فهرستی از نتایجی که با معیارهای جستجو مطابقت دارند.

مثال ها

توجه: نمونه کد زیر ممکن است نشان دهنده همه زبان های برنامه نویسی پشتیبانی شده نباشد. برای فهرستی از زبان های پشتیبانی شده، به مستندات کتابخانه های سرویس گیرنده مراجعه کنید.

اسکریپت برنامه ها

این تابع ویدیوهای مرتبط با کلمه کلیدی "سگ" را جستجو می کند. شناسه‌های ویدیویی و عناوین نتایج جستجو در گزارش Apps Script ثبت می‌شوند.

توجه داشته باشید که این نمونه نتایج را به 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 API را برای بازیابی نتایج جستجو مرتبط با یک کلمه کلیدی خاص فراخوانی می کند.

این مثال از کتابخانه سرویس گیرنده 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")
}

.خالص

نمونه کد زیر روش search.list API را برای بازیابی نتایج جستجو مرتبط با یک کلمه کلیدی خاص فراخوانی می کند.

این مثال از کتابخانه سرویس گیرنده دات نت استفاده می کند.

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)));
    }
  }
}

روبی

این نمونه روش search.list API را برای بازیابی نتایج جستجو مرتبط با یک کلمه کلیدی خاص فراخوانی می کند.

این مثال از کتابخانه کلاینت 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

خطاها

جدول زیر پیام های خطایی را مشخص می کند که API می تواند در پاسخ به تماس با این روش بازگرداند. لطفاً برای جزئیات بیشتر به مستندات پیام خطا مراجعه کنید.

نوع خطا جزئیات خطا شرح
badRequest (400) invalidChannelId پارامتر channelId یک شناسه کانال نامعتبر را مشخص کرده است.
badRequest (400) invalidLocation مقدار پارامتر location و/یا locationRadius به اشتباه قالب‌بندی شده است.
badRequest (400) invalidRelevanceLanguage مقدار پارامتر relevanceLanguage به اشتباه قالب‌بندی شده است.
badRequest (400) invalidSearchFilter این درخواست حاوی ترکیب نامعتبری از فیلترها و/یا محدودیت‌های جستجو است. توجه داشته باشید که اگر پارامترهای forContentOwner یا forMine روی true تنظیم کنید، باید پارامتر type را روی video تنظیم کنید. همچنین اگر مقداری را برای پارامترهای eventType ، videoCaption ، videoCategoryId ، videoDefinition ، videoDimension ، videoDuration ، videoEmbeddable ، videoLicense ، videoSyndicated یا videoType تنظیم کنید، باید پارامتر type روی video تنظیم کنید.

آن را امتحان کنید!

از APIs Explorer برای فراخوانی این API و مشاهده درخواست و پاسخ API استفاده کنید.