مجموعهای از نتایج جستجو را برمیگرداند که با پارامترهای پُرسمان مشخصشده در درخواست API مطابقت دارند. بهطور پیشفرض، مجموعه نتایج جستجو منابع video، channel، و playlist منطبق را شناسایی میکند، اما میتوانید پُرسمانها را نیز پیکربندی کنید تا فقط نوع خاصی از منبع را بازیابی کنند.
تأثیر سهمیه: ۱۰۰ تماس در روز. فراخوانی این روش دارای هزینه سهمیه ۱ واحد در سطل سهمیه «پرسمانهای جستجو» است.
موارد استفاده رایج
درخواست
درخواست HTTP
GET https://www.googleapis.com/youtube/v3/search
پارامترها
جدول زیر پارامترهایی را که این پُرسمان پشتیبانی میکند فهرست میکند. همه پارامترهای فهرستشده پارامترهای پُرسمان هستند.
| پارامترها | ||
|---|---|---|
| پارامترهای الزامی | ||
part |
stringپارامتر part فهرستی جداشده با کاما از یک یا چند ویژگی منبع search را مشخص میکند که پاسخ میانای برنامهسازی کاربردی شامل آن خواهد بود. مقدار پارامتر را روی snippet تنظیم کنید.
|
|
| فیلترها (۰ یا ۱ مورد از پارامترهای زیر را مشخص کنید) | ||
forContentOwner |
booleanاین پارامتر فقط در درخواست مجاز مناسب قابلاستفاده است و منحصراً برای شرکای محتوای YouTube درنظر گرفته شده است. پارامتر forContentOwner جستجو را محدود میکند تا فقط ویدیوهای متعلق به مالک محتوا را که با پارامتر onBehalfOfContentOwner شناسایی شده است بازیابی کند. اگر forContentOwner روی درست تنظیم شده باشد، درخواست باید این الزامات را نیز برآورده کند:
|
|
forDeveloper |
booleanاز این پارامتر فقط میتوان در درخواست مجاز مناسب استفاده کرد. پارامتر forDeveloper جستجو را محدود میکند تا فقط ویدیوهای بارگذاریشده ازطریق وبسایت یا برنامه توسعهدهنده را بازیابی کند. سرور میانای برنامهسازی کاربردی از اطلاعات اعتباری مجوز درخواست برای شناسایی توسعهدهنده استفاده میکند. از پارامتر 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 نشان میدهد که پاسخ میانای برنامهسازی کاربردی باید فقط حاوی منابع ایجادشده توسط کانال باشد. توجه: اگر درخواست شما مقدار پارامتر channelId را مشخص کند و مقدار پارامتر type را روی video تنظیم کند، اما یکی از فیلترهای forContentOwner، forDeveloper، یا forMine را تنظیم نکند، نتایج جستجو به حداکثر ۵۰۰ ویدیو محدود میشود. |
|
channelType |
stringپارامتر channelType به شما امکان میدهد جستجو را به نوع خاصی از کانال محدود کنید.مقادیر قابلقبول عبارتاند از:
|
|
eventType |
stringپارامتر eventType جستجو را به رویدادهای همهفرستی محدود میکند. اگر مقداری برای این پارامتر مشخص کنید، باید مقدار پارامتر type را نیز روی video تنظیم کنید.مقادیر قابلقبول عبارتاند از:
|
|
location |
stringپارامتر location، همراه با پارامتر locationRadius، یک ناحیه جغرافیایی دایرهای را تعریف میکند و همچنین جستجو را به ویدیوهایی محدود میکند که در فرادادههای خود، یک مکان جغرافیایی را مشخص میکنند که در آن ناحیه قرار دارد. مقدار پارامتر رشتهای است که مختصات عرض جغرافیایی/طول جغرافیایی را مشخص میکند، مثلاً (37.42307,-122.08427).
location مشخص کند اما مقداری را برای پارامتر locationRadius مشخص نکند، API خطایی را برمیگرداند.توجه: اگر مقداری را برای این پارامتر مشخص کنید، باید مقدار پارامتر type را نیز روی video تنظیم کنید.
| |
locationRadius |
stringپارامتر locationRadius، در ترکیب با پارامتر location، یک منطقه جغرافیایی دایرهای را تعریف میکند.مقدار پارامتر باید یک عدد ممیز شناور باشد که بهدنبال آن یک واحد اندازهگیری آمده است. واحدهای اندازهگیری معتبر عبارتاند از m، km، ft، و mi. برای مثال، مقادیر معتبر پارامتر شامل 1500m، 5km، 10000ft، و 0.75mi است. این «میانای برنامهسازی کاربردی» از مقادیر پارامتر locationRadius بزرگتر از ۱۰۰۰ کیلومتر پشتیبانی نمیکند.توجه: برای اطلاعات بیشتر، تعریف پارامتر location را ببینید. |
|
maxResults |
unsigned integerپارامتر maxResults حداکثر تعداد مواردی را که باید در مجموعه نتایج برگردانده شود مشخص میکند. مقادیر پذیرفتنی از 0 تا 50 است. مقدار پیشفرض 5 است. |
|
onBehalfOfContentOwner |
stringاین پارامتر فقط در درخواستهای مجاز قابلاستفاده است. توجه: این پارامتر منحصراً برای شرکای محتوای YouTube درنظر گرفته شده است. پارامتر onBehalfOfContentOwner نشان میدهد که اطلاعات اعتباری مجوز درخواست، کاربر «سیستم مدیریت محتوای YouTube» را که ازطرف مالک محتوای مشخصشده در مقدار پارامتر عمل میکند شناسایی میکند. این پارامتر برای شرکای محتوای YouTube است که مالک و مدیر کانالهای مختلف YouTube هستند. این ویژگی به مالکان محتوا اجازه میدهد یکبار اصالتسنجی کنند و به همه دادههای ویدیو و کانال خود دسترسی پیدا کنند، بدون اینکه نیاز باشد برای هر کانال بهطور جداگانه اعتبارنامههای اصالتسنجی ارائه دهند. حساب CMS که کاربر با آن اصالتسنجی میکند باید به مالک محتوای YouTube مشخصشده پیوند داده شده باشد. |
|
order |
stringپارامتر order روشی را که برای مرتب کردن منابع در پاسخ API استفاده میشود مشخص میکند. مقدار پیشفرض relevance است.مقادیر پذیرفتنی عبارتاند از:
|
|
pageToken |
stringپارامتر pageToken صفحه خاصی را در مجموعه نتایج شناسایی میکند که باید برگردانده شود. در پاسخ API، ویژگیهای 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 برای نویسه خط عمودی %7C است. |
|
regionCode |
stringپارامتر regionCode به API دستور میدهد تا نتایج جستجو را برای ویدیوهایی که در کشور مشخصشده قابلمشاهده هستند برگرداند. مقدار پارامتر کد کشور ISO 3166-1 alpha-2 است. |
|
relevanceLanguage |
stringپارامتر relevanceLanguage به API دستور میدهد نتایج جستجویی را برگرداند که بیشترین ارتباط را با زبان مشخصشده دارند. مقدار پارامتر معمولاً کد زبان دوحرفی ISO 639-1 است. بااینحال، باید از مقدار zh-Hans برای چینی سادهشده و zh-Hant برای چینی سنتی استفاده کنید. لطفاً توجه داشته باشید که اگر نتایج به زبانهای دیگر با عبارت پرسمان جستجو بسیار مرتبط باشند، همچنان برگردانده خواهند شد. |
|
safeSearch |
stringپارامتر safeSearch نشان میدهد که آیا نتایج جستجو باید شامل محتوای محدودشده و همچنین محتوای استاندارد باشد یا خیر.مقادیر قابلقبول عبارتاند از:
|
|
topicId |
stringپارامتر topicId نشان میدهد که پاسخ میانای برنامهسازی کاربردی باید فقط حاوی منابع مرتبط با موضوع مشخصشده باشد. این مقدار شناسه موضوع Freebase را مشخص میکند.مهم: بهدلیل منسوخ شدن Freebase و Freebase API، پارامتر topicId از تاریخ ۲۷ فوریه ۲۰۱۷ بهصورت متفاوتی عمل میکند. در آن زمان، YouTube شروع به پشتیبانی از مجموعه کوچکی از شناسههای موضوعی گلچینشده کرد، و شما فقط میتوانید از آن مجموعه کوچکتر از شناسهها بهعنوان مقادیر این پارامتر استفاده کنید. |
|
type |
stringپارامتر type پرسمان جستجو را محدود میکند تا فقط نوع خاصی از منبع را بازیابی کند. مقدار فهرستی از انواع منبع است که با کاما از هم جدا شدهاند. مقدار پیشفرض video,channel,playlist است.مقادیر پذیرفتنی عبارتاند از:
|
|
videoCaption |
stringپارامتر videoCaption نشان میدهد که آیا API باید نتایج جستجوی ویدیو را براساس اینکه زیرنویس ناشنوایان دارند یا نه فیلتر کند. اگر مقداری برای این پارامتر مشخص کنید، باید مقدار پارامتر type را نیز روی video تنظیم کنید.مقادیر قابلقبول عبارتاند از:
|
|
videoCategoryId |
stringپارامتر videoCategoryId نتایج جستجوی ویدیو را براساس دسته آنها فیلتر میکند. اگر مقداری برای این پارامتر مشخص کنید، باید مقدار پارامتر type را نیز روی video تنظیم کنید. |
|
videoDefinition |
stringپارامتر videoDefinition به شما امکان میدهد جستجو را محدود کنید تا فقط ویدیوهای با وضوح بالا (HD) یا وضوح استاندارد (SD) را شامل شود. ویدیوهای HD برای بازپخش با حداقل کیفیت ۷۲۰ پیکسل دردسترس هستند، هرچند وضوحهای بالاتر، مانند ۱۰۸۰ پیکسل، نیز ممکن است دردسترس باشند. اگر مقداری را برای این پارامتر مشخص میکنید، باید مقدار پارامتر type را نیز روی video تنظیم کنید.مقادیر قابلقبول عبارتاند از:
|
|
videoDimension |
stringپارامتر videoDimension به شما امکان میدهد جستجو را محدود کنید تا فقط ویدیوهای دوبعدی یا سهبعدی بازیابی شوند. اگر مقداری برای این پارامتر مشخص کنید، باید مقدار پارامتر type را نیز روی video تنظیم کنید.مقادیر قابلقبول عبارتاند از:
|
|
videoDuration |
stringپارامتر videoDuration نتایج جستجوی ویدیو را براساس مدت زمان آنها فیلتر میکند. اگر مقداری برای این پارامتر مشخص میکنید، باید مقدار پارامتر type را نیز روی video تنظیم کنید.مقادیر قابلقبول عبارتاند از:
|
|
videoEmbeddable |
stringپارامتر videoEmbeddable به شما امکان میدهد جستجو را فقط به ویدیوهایی محدود کنید که میتوانند در صفحه وب جاسازی شوند. اگر مقداری برای این پارامتر مشخص میکنید، باید مقدار پارامتر type را نیز روی video تنظیم کنید.مقادیر قابلقبول عبارتاند از:
|
|
videoLicense |
stringپارامتر videoLicense نتایج جستجو را فیلتر میکند تا فقط ویدیوهای دارای پروانه خاص را شامل شود. YouTube به بارگذاران ویدیو اجازه میدهد که برای هریک از ویدیوهای خود پروانه «مشترکات خلاقانه» یا پروانه استاندارد YouTube را انتخاب کنند. اگر مقداری برای این پارامتر مشخص کنید، باید مقدار پارامتر type را نیز روی video تنظیم کنید.مقادیر قابلقبول عبارتند از:
|
|
videoPaidProductPlacement |
stringپارامتر videoPaidProductPlacement نتایج جستجو را فیلتر میکند
تا فقط ویدیوهایی را شامل شود که محتواساز آنها را بهعنوان عرضه ترویجی پولی مشخص کرده است. اگر مقداری برای این پارامتر مشخص کنید، باید مقدار پارامتر type را نیز روی video تنظیم کنید.مقادیر قابلقبول عبارتند از:
|
|
videoSyndicated |
stringپارامتر videoSyndicated به شما امکان میدهد جستجو را فقط به ویدیوهایی محدود کنید که میتوانند خارج از youtube.com پخش شوند. اگر مقداری برای این پارامتر مشخص کنید، باید مقدار پارامتر type را نیز روی video تنظیم کنید.مقادیر قابلقبول عبارتند از:
|
|
videoType |
stringپارامتر videoType به شما امکان میدهد جستجو را به نوع خاصی از ویدیوها محدود کنید. اگر مقداری برای این پارامتر مشخص کنید، باید مقدار پارامتر type را نیز روی video تنظیم کنید.مقادیر قابلقبول عبارتاند از:
|
|
متن درخواست
هنگام فراخوانی این روش، بدنه درخواست ارائه نکنید.
پاسخ
درصورت موفقیت، این روش بدنه پاسخی با ساختار زیر برمیگرداند:
{
"kind": "youtube#searchListResponse",
"etag": etag,
"nextPageToken": string,
"prevPageToken": string,
"regionCode": string,
"pageInfo": {
"totalResults": integer,
"resultsPerPage": integer
},
"items": [
search Resource
]
}مشخصات
جدول زیر ویژگیهایی را که در نتیجه جستجو نشان داده میشود تعریف میکند:
| مشخصات | |
|---|---|
kind |
stringنوع منبع میانای برنامهسازی کاربردی را مشخص میکند. مقدار youtube#searchListResponse خواهد بود. |
etag |
etagEtag این منبع. |
nextPageToken |
stringرمزی که میتواند بهعنوان مقدار پارامتر pageToken برای بازیابی صفحه بعدی در مجموعه نتایج استفاده شود. |
prevPageToken |
stringنشانهای که میتواند بهعنوان مقدار پارامتر pageToken برای بازیابی صفحه قبلی در مجموعه نتایج استفاده شود. |
regionCode |
stringکد منطقهای که برای پُرسمان جستجو استفاده شده است. مقدار دارایی کد کشور دوحرفی ISO است که منطقه را شناسایی میکند. روش i18nRegions.list فهرستی از مناطق پشتیبانیشده را برمیگرداند. مقدار پیشفرض US است. اگر منطقهای پشتیبانینشده مشخص شود، YouTube ممکن است همچنان منطقه دیگری را بهجای مقدار پیشفرض برای رسیدگی به پُرسمان انتخاب کند. |
pageInfo |
objectشیء pageInfo اطلاعات صفحهبندی را برای مجموعه نتایج کپسولهسازی میکند. |
pageInfo.totalResults |
integerتعداد کل نتایج در مجموعه نتایج.لطفاً توجه داشته باشید که این مقدار تقریبی است و ممکن است مقدار دقیق را نشان ندهد. علاوهبراین، حداکثر مقدار ۱٬۰۰۰٬۰۰۰ است. نباید از این مقدار برای ایجاد پیوندهای صفحهبندی استفاده کنید. بهجای آن، از مقادیر دارایی nextPageToken و prevPageToken برای تعیین اینکه آیا پیوندهای صفحهبندی نمایش داده شود یا نه استفاده کنید. |
pageInfo.resultsPerPage |
integerتعداد نتایج موجود در پاسخ میانای برنامهسازی کاربردی. |
items[] |
listفهرستی از نتایج که با معیارهای جستجو مطابقت دارد. |
مثالها
توجه: نمونههای کد زیر ممکن است نشاندهنده همه زبانهای برنامهنویسی پشتیبانیشده نباشد. برای اطلاع از فهرست زبانهای پشتیبانیشده، به مستندات کتابخانههای مشتری مراجعه کنید.
Apps Script
این تابع ویدیوهای مربوط به کلیدواژه «سگها» را جستجو میکند. شناسهها و عناوین ویدیو نتایج جستجو در گزارش Apps Script ثبت میشود.توجه داشته باشید که این نمونه نتایج را به ۲۵ محدود میکند. برای دریافت نتایج بیشتر، پارامترهای اضافی را همانگونه که در اینجا مستند شده است ارسال کنید: https://developers.google.com/youtube/data/reference/rest/v3/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 client استفاده میکند.
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 میانای برنامهسازی کاربردی را برای بازیابی نتایج جستجوی
مرتبط با کلیدواژهای خاص فراخوانی میکند.
این مثال از کتابخانه کارخواه 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
خطاها
جدول زیر پیامهای خطایی را که ممکن است 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 تنظیم کنید. |
امتحان کنید!
برای فراخوانی این API و دیدن درخواست و پاسخ API، از APIs Explorer استفاده کنید.