यह एपीआई अनुरोध में बताए गए क्वेरी पैरामीटर से मेल खाने वाले खोज के नतीजों का कलेक्शन दिखाता है. डिफ़ॉल्ट रूप से, खोज के नतीजों का सेट, मैच होने वाले video, channel, और playlist संसाधनों की पहचान करता है. हालांकि, क्वेरी को सिर्फ़ किसी खास तरह के संसाधन को वापस पाने के लिए भी कॉन्फ़िगर किया जा सकता है.
कोटा पर असर: हर दिन 100 कॉल. इस तरीके को कॉल करने पर, सर्च क्वेरी के कोटा बकेट में एक यूनिट की कोटा लागत आती है.
इस्तेमाल के सामान्य उदाहरण
अनुरोध
एचटीटीपी अनुरोध
GET https://www.googleapis.com/youtube/v3/search
पैरामीटर
यहां दी गई टेबल में उन पैरामीटर की सूची दी गई है जो इस क्वेरी के साथ काम करते हैं. सूची में दिए गए सभी पैरामीटर, क्वेरी पैरामीटर हैं.
| पैरामीटर | ||
|---|---|---|
| ज़रूरी पैरामीटर | ||
part |
stringpart पैरामीटर, कॉमा से अलग की गई एक या उससे ज़्यादा search संसाधन प्रॉपर्टी की सूची तय करता है. एपीआई रिस्पॉन्स में ये प्रॉपर्टी शामिल होंगी. पैरामीटर की वैल्यू को snippet पर सेट करें.
|
|
| फ़िल्टर (इनमें से कोई एक पैरामीटर तय करें या कोई भी पैरामीटर तय न करें) | ||
forContentOwner |
booleanइस पैरामीटर का इस्तेमाल, सिर्फ़ सही तरीके से अनुमति वाले अनुरोध में किया जा सकता है. साथ ही, यह सिर्फ़ YouTube के कॉन्टेंट पार्टनर के लिए है. forContentOwner पैरामीटर, खोज को सिर्फ़ उन वीडियो को वापस पाने के लिए सीमित करता है जिनका मालिकाना हक, onBehalfOfContentOwner पैरामीटर से पहचाने गए कॉन्टेंट के मालिक के पास है. अगर forContentOwner को true पर सेट किया गया है, तो अनुरोध को ये ज़रूरी शर्तें भी पूरी करनी होंगी:
|
|
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 |
stringchannelId पैरामीटर से पता चलता है कि एपीआई से मिली जानकारी में सिर्फ़ चैनल के बनाए गए संसाधन शामिल होने चाहिए. ध्यान दें: अगर आपके अनुरोध में channelId पैरामीटर की वैल्यू दी गई है और type पैरामीटर की वैल्यू video पर सेट है, तो खोज के नतीजों में ज़्यादा से ज़्यादा 500 वीडियो दिखेंगे. हालांकि, इसके लिए ज़रूरी है कि forContentOwner, forDeveloper या forMine में से कोई भी फ़िल्टर सेट न किया गया हो. |
|
channelType |
stringchannelType पैरामीटर की मदद से, खोज को किसी खास तरह के चैनल तक सीमित किया जा सकता है.इसकी वैल्यू ये हो सकती हैं:
|
|
eventType |
stringeventType पैरामीटर, खोज को ब्रॉडकास्ट इवेंट तक सीमित करता है. अगर इस पैरामीटर के लिए कोई वैल्यू तय की जाती है, तो आपको type पैरामीटर की वैल्यू को भी video पर सेट करना होगा.ये वैल्यू डाली जा सकती हैं:
|
|
location |
stringlocation पैरामीटर, locationRadius पैरामीटर के साथ मिलकर, एक गोल भौगोलिक क्षेत्र तय करता है. साथ ही, यह खोज को उन वीडियो तक सीमित करता है जिनके मेटाडेटा में, उस क्षेत्र के अंदर आने वाली भौगोलिक जगह की जानकारी दी गई हो. पैरामीटर वैल्यू एक स्ट्रिंग होती है, जो अक्षांश/देशांतर के निर्देशांक बताती है. उदाहरण के लिए, (37.42307,-122.08427).
location पैरामीटर के लिए कोई वैल्यू दी गई है, लेकिन locationRadius पैरामीटर के लिए कोई वैल्यू नहीं दी गई है, तो एपीआई गड़बड़ी दिखाता है.ध्यान दें: अगर आपने इस पैरामीटर के लिए कोई वैल्यू दी है, तो आपको type पैरामीटर की वैल्यू को video पर भी सेट करना होगा.
| |
locationRadius |
stringlocationRadius पैरामीटर, location पैरामीटर के साथ मिलकर, एक सर्कुलर भौगोलिक क्षेत्र तय करता है.पैरामीटर की वैल्यू, फ़्लोटिंग पॉइंट नंबर होनी चाहिए. इसके बाद, मेज़रमेंट यूनिट होनी चाहिए. माप की मान्य इकाइयां m, km, ft, और mi हैं. उदाहरण के लिए, मान्य पैरामीटर वैल्यू में 1500m, 5km, 10000ft, और 0.75mi शामिल हैं. एपीआई, 1,000 किलोमीटर से ज़्यादा की locationRadius पैरामीटर वैल्यू के साथ काम नहीं करता.ध्यान दें: ज़्यादा जानकारी के लिए, location पैरामीटर की परिभाषा देखें. |
|
maxResults |
unsigned integermaxResults पैरामीटर, उन आइटम की ज़्यादा से ज़्यादा संख्या तय करता है जिन्हें नतीजों के सेट में दिखाया जाना चाहिए. 0 से 50 तक की वैल्यू डाली जा सकती हैं. डिफ़ॉल्ट वैल्यू 5 है. |
|
onBehalfOfContentOwner |
stringइस पैरामीटर का इस्तेमाल सिर्फ़ अनुमति वाले अनुरोध में किया जा सकता है. ध्यान दें: यह पैरामीटर सिर्फ़ YouTube के कॉन्टेंट पार्टनर के लिए है. onBehalfOfContentOwner पैरामीटर से पता चलता है कि अनुरोध के अनुमति क्रेडेंशियल, YouTube सीएमएस के उस उपयोगकर्ता की पहचान करते हैं जो पैरामीटर वैल्यू में बताए गए कॉन्टेंट के मालिक की ओर से काम कर रहा है. यह पैरामीटर, YouTube के उन कॉन्टेंट पार्टनर के लिए है जिनके पास कई YouTube चैनलों का मालिकाना हक है और जो उन्हें मैनेज करते हैं. इसकी मदद से, कॉन्टेंट के मालिक एक बार पुष्टि करके अपने सभी वीडियो और चैनल का डेटा ऐक्सेस कर सकते हैं. इसके लिए, उन्हें हर चैनल के लिए पुष्टि करने वाले क्रेडेंशियल देने की ज़रूरत नहीं होती. उपयोगकर्ता जिस कॉन्टेंट मैनेजमेंट सिस्टम खाते से पुष्टि करता है वह YouTube कॉन्टेंट के मालिक के खाते से लिंक होना चाहिए. |
|
order |
stringorder पैरामीटर से यह तय होता है कि एपीआई से मिली जानकारी में, संसाधनों को क्रम में लगाने के लिए किस तरीके का इस्तेमाल किया जाएगा. डिफ़ॉल्ट वैल्यू relevance है.इन वैल्यू का इस्तेमाल किया जा सकता है:
|
|
pageToken |
stringpageToken पैरामीटर, नतीजों के सेट में मौजूद उस पेज की पहचान करता है जिसे दिखाया जाना चाहिए. एपीआई से मिली जानकारी में, nextPageToken और prevPageToken प्रॉपर्टी से उन अन्य पेजों की पहचान होती है जिन्हें वापस पाया जा सकता है. |
|
publishedAfter |
datetimepublishedAfter पैरामीटर से पता चलता है कि एपीआई से मिली जानकारी में सिर्फ़ वे संसाधन शामिल होने चाहिए जो तय किए गए समय पर या उसके बाद बनाए गए हों. यह वैल्यू, आरएफ़सी 3339 फ़ॉर्मैट में तारीख और समय की वैल्यू (1970-01-01T00:00:00Z) है. |
|
publishedBefore |
datetimepublishedBefore पैरामीटर से पता चलता है कि एपीआई से मिली जानकारी में सिर्फ़ वे संसाधन शामिल होने चाहिए जो तय किए गए समय से पहले या उस समय बनाए गए हों. यह वैल्यू, आरएफ़सी 3339 फ़ॉर्मैट में तारीख और समय की वैल्यू (1970-01-01T00:00:00Z) है. |
|
q |
stringq पैरामीटर, खोज के लिए इस्तेमाल किए जाने वाले शब्द के बारे में बताता है.आपके अनुरोध में, बूलियन NOT ( -) और OR (|) ऑपरेटर का इस्तेमाल भी किया जा सकता है. इससे, वीडियो को खोज के नतीजों से हटाया जा सकता है या ऐसे वीडियो ढूंढे जा सकते हैं जो खोज के लिए इस्तेमाल किए गए कई शब्दों में से किसी एक से जुड़े हों. उदाहरण के लिए, "boating" या "sailing" से मैच होने वाले वीडियो खोजने के लिए, q पैरामीटर वैल्यू को boating|sailing पर सेट करें. इसी तरह, "boating" या "sailing" से मैच होने वाले वीडियो खोजने के लिए, q पैरामीटर की वैल्यू को boating|sailing -fishing पर सेट करें. हालांकि, इसमें "fishing" से मैच होने वाले वीडियो शामिल नहीं होंगे. ध्यान दें कि जब पाइप वर्ण को आपके एपीआई अनुरोध में भेजा जाता है, तो उसे यूआरएल-एस्केप किया जाना चाहिए. पाइप वर्ण के लिए यूआरएल-एस्केप वैल्यू %7C है. |
|
regionCode |
stringregionCode पैरामीटर, एपीआई को उन वीडियो के खोज नतीजे दिखाने का निर्देश देता है जिन्हें किसी देश में देखा जा सकता है. इस पैरामीटर की वैल्यू, ISO 3166-1 alpha-2 देश का कोड है. |
|
relevanceLanguage |
stringrelevanceLanguage पैरामीटर, एपीआई को खोज के ऐसे नतीजे दिखाने का निर्देश देता है जो बताई गई भाषा के हिसाब से सबसे ज़्यादा काम के हों. इस पैरामीटर की वैल्यू आम तौर पर, आईएसओ 639-1 के दो अक्षरों वाला भाषा कोड होती है. हालांकि, आपको सिम्प्लिफ़ाइड चाइनीज़ के लिए zh-Hans और ट्रेडिशनल चाइनीज़ के लिए zh-Hant वैल्यू का इस्तेमाल करना चाहिए. कृपया ध्यान दें कि अगर अन्य भाषाओं में मौजूद नतीजे, सर्च क्वेरी से काफ़ी मिलते-जुलते हैं, तो वे अब भी दिखाए जाएंगे. |
|
safeSearch |
stringsafeSearch पैरामीटर से पता चलता है कि खोज के नतीजों में प्रतिबंधित कॉन्टेंट और स्टैंडर्ड कॉन्टेंट, दोनों शामिल होने चाहिए या नहीं.स्वीकार की जाने वाली वैल्यू ये हैं:
|
|
topicId |
stringtopicId पैरामीटर से पता चलता है कि एपीआई से मिली जानकारी में, सिर्फ़ दिए गए विषय से जुड़े संसाधन शामिल होने चाहिए. इस वैल्यू से, Freebase के विषय का आईडी पता चलता है.अहम जानकारी: Freebase और Freebase API के बंद होने की वजह से, 27 फ़रवरी, 2017 से topicId पैरामीटर अलग तरीके से काम करने लगा. उस समय, YouTube ने चुने गए विषय के आईडी के एक छोटे सेट के लिए सहायता शुरू की थी. इस पैरामीटर की वैल्यू के तौर पर, सिर्फ़ आईडी के उस छोटे सेट का इस्तेमाल किया जा सकता है. |
|
type |
stringtype पैरामीटर, सर्च क्वेरी को सिर्फ़ किसी खास तरह के संसाधन को वापस पाने के लिए सीमित करता है. यह वैल्यू, रिसॉर्स टाइप की कॉमा लगाकर अलग की गई लिस्ट होती है. डिफ़ॉल्ट वैल्यू video,channel,playlist है.इन वैल्यू का इस्तेमाल किया जा सकता है:
|
|
videoCaption |
stringvideoCaption पैरामीटर से पता चलता है कि एपीआई को वीडियो खोज के नतीजों को इस आधार पर फ़िल्टर करना चाहिए या नहीं कि उनमें कैप्शन हैं या नहीं. इस पैरामीटर के लिए वैल्यू तय करने पर, आपको type पैरामीटर की वैल्यू को video पर भी सेट करना होगा.इन वैल्यू का इस्तेमाल किया जा सकता है:
|
|
videoCategoryId |
stringvideoCategoryId पैरामीटर, वीडियो खोज के नतीजों को उनकी कैटगरी के आधार पर फ़िल्टर करता है. अगर आपने इस पैरामीटर के लिए कोई वैल्यू तय की है, तो आपको type पैरामीटर की वैल्यू को video पर भी सेट करना होगा. |
|
videoDefinition |
stringvideoDefinition पैरामीटर की मदद से, खोज के नतीजों को सिर्फ़ हाई डेफ़िनिशन (एचडी) या स्टैंडर्ड डेफ़िनिशन (एसडी) वीडियो तक सीमित किया जा सकता है. एचडी वीडियो, कम से कम 720 पिक्सल में चलाए जा सकते हैं. हालांकि, 1080 पिक्सल जैसे ज़्यादा रिज़ॉल्यूशन वाले वीडियो भी उपलब्ध हो सकते हैं. इस पैरामीटर के लिए वैल्यू तय करने पर, आपको type पैरामीटर की वैल्यू को video पर भी सेट करना होगा.इन वैल्यू का इस्तेमाल किया जा सकता है:
|
|
videoDimension |
stringvideoDimension पैरामीटर की मदद से, खोज के नतीजों में सिर्फ़ 2D या 3D वीडियो दिखाए जा सकते हैं. इस पैरामीटर के लिए वैल्यू तय करने पर, आपको type पैरामीटर की वैल्यू को video पर भी सेट करना होगा.इन वैल्यू का इस्तेमाल किया जा सकता है:
|
|
videoDuration |
stringvideoDuration पैरामीटर, वीडियो की अवधि के आधार पर खोज के नतीजों को फ़िल्टर करता है. अगर इस पैरामीटर के लिए कोई वैल्यू तय की जाती है, तो आपको type पैरामीटर की वैल्यू को भी video पर सेट करना होगा.ये वैल्यू डाली जा सकती हैं:
|
|
videoEmbeddable |
stringvideoEmbeddable पैरामीटर की मदद से, खोज के नतीजों को सिर्फ़ उन वीडियो तक सीमित किया जा सकता है जिन्हें किसी वेबपेज में एम्बेड किया जा सकता है. इस पैरामीटर के लिए वैल्यू तय करने पर, आपको type पैरामीटर की वैल्यू को video पर भी सेट करना होगा.इन वैल्यू का इस्तेमाल किया जा सकता है:
|
|
videoLicense |
stringvideoLicense पैरामीटर, खोज के नतीजों को फ़िल्टर करता है, ताकि सिर्फ़ किसी खास लाइसेंस वाले वीडियो शामिल किए जा सकें. YouTube, वीडियो अपलोड करने वाले लोगों को अपने हर वीडियो के लिए, क्रिएटिव कॉमंस लाइसेंस या YouTube के स्टैंडर्ड लाइसेंस में से किसी एक को चुनने की सुविधा देता है. अगर आपने इस पैरामीटर के लिए कोई वैल्यू तय की है, तो आपको type पैरामीटर की वैल्यू को भी video पर सेट करना होगा.ये वैल्यू डाली जा सकती हैं:
|
|
videoPaidProductPlacement |
stringvideoPaidProductPlacement पैरामीटर, खोज के नतीजों को फ़िल्टर करता है,
ताकि सिर्फ़ वे वीडियो शामिल किए जा सकें जिनके लिए क्रिएटर ने बताया है कि उनमें पैसे लेकर प्रमोशन किया गया है. अगर आपने इस पैरामीटर के लिए कोई वैल्यू तय की है, तो आपको type पैरामीटर की वैल्यू को video पर भी सेट करना होगा.इन वैल्यू का इस्तेमाल किया जा सकता है:
|
|
videoSyndicated |
stringvideoSyndicated पैरामीटर की मदद से, खोज के नतीजों को सिर्फ़ उन वीडियो तक सीमित किया जा सकता है जिन्हें youtube.com के बाहर चलाया जा सकता है. इस पैरामीटर के लिए कोई वैल्यू तय करने पर, आपको type पैरामीटर की वैल्यू को video पर भी सेट करना होगा.इन वैल्यू का इस्तेमाल किया जा सकता है:
|
|
videoType |
stringvideoType पैरामीटर की मदद से, खोज के नतीजों को किसी खास तरह के वीडियो तक सीमित किया जा सकता है. अगर इस पैरामीटर के लिए कोई वैल्यू तय की जाती है, तो आपको 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 |
etagइस संसाधन का Etag. |
nextPageToken |
stringवह टोकन जिसका इस्तेमाल pageToken पैरामीटर की वैल्यू के तौर पर किया जा सकता है, ताकि नतीजों के सेट में अगला पेज वापस लाया जा सके. |
prevPageToken |
stringवह टोकन जिसे pageToken पैरामीटर की वैल्यू के तौर पर इस्तेमाल किया जा सकता है, ताकि नतीजों के सेट में पिछले पेज को वापस लाया जा सके. |
regionCode |
stringसर्च क्वेरी के लिए इस्तेमाल किया गया क्षेत्र कोड. प्रॉपर्टी की वैल्यू, दो अक्षरों वाला आईएसओ देश कोड होती है. इससे क्षेत्र की पहचान होती है. i18nRegions.list वाला तरीका, उपलब्धता वाले देशों या इलाकों की सूची दिखाता है. डिफ़ॉल्ट वैल्यू US है. अगर किसी ऐसे देश/इलाके का नाम दिया गया है जहां यह सुविधा उपलब्ध नहीं है, तो हो सकता है कि YouTube क्वेरी को हैंडल करने के लिए, डिफ़ॉल्ट वैल्यू के बजाय किसी दूसरे देश/इलाके का नाम चुने. |
pageInfo |
objectpageInfo ऑब्जेक्ट, नतीजों के सेट के लिए पेजिंग की जानकारी को इनकैप्सुलेट करता है. |
pageInfo.totalResults |
integerनतीजों के सेट में मौजूद नतीजों की कुल संख्या.कृपया ध्यान दें कि यह वैल्यू अनुमानित है और हो सकता है कि यह सटीक वैल्यू न हो. इसके अलावा, ज़्यादा से ज़्यादा वैल्यू 10,00,000 है. आपको इस वैल्यू का इस्तेमाल, पेजेशन लिंक बनाने के लिए नहीं करना चाहिए. इसके बजाय, nextPageToken और prevPageToken प्रॉपर्टी की वैल्यू का इस्तेमाल करके यह तय करें कि पेज नंबर वाले लिंक दिखाने हैं या नहीं. |
pageInfo.resultsPerPage |
integerएपीआई से मिली जानकारी में शामिल नतीजों की संख्या. |
items[] |
listखोज के लिए डाली गई शर्तों से मेल खाने वाले नतीजों की सूची. |
उदाहरण
ध्यान दें: ऐसा हो सकता है कि यहाँ दिए गए कोड सैंपल में, इसके साथ काम करने वाली सभी प्रोग्रामिंग लैंग्वेज न दिखाई गई हों. साथ काम करने वाली भाषाओं की सूची देखने के लिए, क्लाइंट लाइब्रेरी का दस्तावेज़ देखें.
Apps Script
यह फ़ंक्शन, 'कुत्ते' कीवर्ड से जुड़े वीडियो खोजता है. खोज के नतीजों में मिले वीडियो के आईडी और टाइटल, Apps Script के लॉग में लॉग किए जाते हैं.ध्यान दें कि इस सैंपल में ज़्यादा से ज़्यादा 25 नतीजे दिखाए जा सकते हैं. ज़्यादा नतीजे पाने के लिए, यहां दिए गए दस्तावेज़ में बताए गए तरीके से अतिरिक्त पैरामीटर पास करें: 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 तरीके को कॉल करता है, ताकि किसी खास कीवर्ड से जुड़े खोज के नतीजे वापस पाए जा सकें.
इस उदाहरण में, 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 पर सेट करना होगा. अगर आपने eventType, videoCaption, videoCategoryId, videoDefinition, videoDimension, videoDuration, videoEmbeddable, videoLicense, videoSyndicated या videoType पैरामीटर के लिए कोई वैल्यू सेट की है, तो आपको type पैरामीटर को भी video पर सेट करना होगा. |
इसे आज़माएं!
इस एपीआई को कॉल करने के लिए, APIs Explorer का इस्तेमाल करें. साथ ही, एपीआई अनुरोध और जवाब देखें.