डेवलपर के लिए गाइड: Python

YouTube Data API की मदद से, क्लाइंट ऐप्लिकेशन, Google Data API फ़ीड के तौर पर YouTube कॉन्टेंट को वापस पा सकते हैं और उसे अपडेट कर सकते हैं. आपका क्लाइंट ऐप्लिकेशन, YouTube Data API फ़ीड का इस्तेमाल करके वीडियो, टिप्पणियां, जवाब, प्लेलिस्ट, उपयोगकर्ता प्रोफ़ाइलें, और उपयोगकर्ता संपर्कों को फ़ेच, खोज, और अपडेट कर सकता है. साथ ही, किसी खास शर्त से मैच करने वाले वीडियो के लिए क्वेरी भी कर सकता है.

इस दस्तावेज़ में, YouTube Data API की सुविधाओं के बारे में जानकारी दी गई है. साथ ही, Python क्लाइंट लाइब्रेरी का इस्तेमाल करके, एपीआई के साथ इंटरैक्ट करने के उदाहरण भी दिए गए हैं. Python क्लाइंट लाइब्रेरी का इस्तेमाल करने के लिए, आपके पास Python 2.0 और उसके बाद के वर्शन के साथ-साथ Element Tree, httplib, और urllib मॉड्यूल होने चाहिए. ज़्यादा जानकारी के लिए, डिपेंडेंसी मॉड्यूल देखें.

अगर आपको Python क्लाइंट लाइब्रेरी सेट अप करने में मदद चाहिए, तो शुरू करने की गाइड देखें. अगर आपको YouTube के साथ इंटरैक्ट करने के लिए, Python क्लाइंट लाइब्रेरी के इस्तेमाल किए गए प्रोटोकॉल के बारे में ज़्यादा जानना है, तो डेवलपर गाइड के प्रोटोकॉल पेज पर जाएं.

इस दस्तावेज़ के बारे में जानकारी

ऑडियंस

यह दस्तावेज़ उन प्रोग्रामर के लिए है जो Python क्लाइंट लाइब्रेरी का इस्तेमाल करके, ऐसे क्लाइंट ऐप्लिकेशन लिखना चाहते हैं जो YouTube के साथ इंटरैक्ट कर सकें. इसमें, डेटा एपीआई के बुनियादी इंटरैक्शन के उदाहरणों की एक सीरीज़ दी गई है.

YouTube Data API के बारे में रेफ़रंस जानकारी के लिए, रेफ़रंस गाइड देखें.

इस दस्तावेज़ में यह माना गया है कि आपको Google Data API प्रोटोकॉल के सामान्य सिद्धांतों की जानकारी है. साथ ही, आपको Python में प्रोग्राम करने का तरीका भी पता है.

Python क्लास और तरीकों के बारे में रेफ़रंस जानकारी के लिए, सोर्स कोड में शामिल pyDocs (सेवा क्लास और डेटा क्लास के लिए) देखें.

दस्तावेज़ का स्ट्रक्चर

इस दस्तावेज़ में ये सेक्शन शामिल हैं:

  • पुष्टि सेक्शन में, एपीआई ऑपरेशन को किसी खास उपयोगकर्ता खाते से जोड़ने के लिए, पुष्टि करने के दो अलग-अलग तरीकों के बारे में बताया गया है. इस सेक्शन में, YouTube Data API और Google के अन्य Data API के लिए पुष्टि करने के तरीकों के बीच के अंतर के बारे में भी बताया गया है. इस दस्तावेज़ में, एपीआई के खास फ़ंक्शन की जानकारी में साफ़ तौर पर बताया जाएगा कि फ़ंक्शन के लिए उपयोगकर्ता की पुष्टि ज़रूरी है या नहीं. आम तौर पर, वीडियो या फ़ीड के डेटा में बदलाव करने वाले सभी अनुरोधों की पुष्टि की जानी चाहिए. सार्वजनिक वीडियो के लिए, रीड-ओनली ऐक्सेस के अनुरोधों की पुष्टि करने की ज़रूरत नहीं होती.

  • वीडियो फ़ीड और एंट्री को समझना सेक्शन में, एपीआई के जवाब का सैंपल दिया गया है. साथ ही, वीडियो की सूची या खोज के नतीजों के सेट से किसी एक वीडियो की जानकारी निकालने का तरीका भी बताया गया है. इस सेक्शन में, किसी खास वीडियो एंट्री के मेटाडेटा को ऐक्सेस करने का तरीका भी बताया गया है. आखिर में, इस सेक्शन में किसी वीडियो की एंट्री को अपडेट करने के तरीके के बारे में बताया गया है.

  • वीडियो वापस लाना और खोजना सेक्शन में, वीडियो की खास सूचियों को फ़ेच करने का तरीका बताया गया है. जैसे, YouTube के सबसे लोकप्रिय वीडियो का स्टैंडर्ड फ़ीड. वीडियो की अन्य सूचियों में, किसी खास उपयोगकर्ता के अपलोड किए गए वीडियो और किसी खास वीडियो से मिलते-जुलते वीडियो की सूचियां शामिल होती हैं. इस सेक्शन में, एपीआई का इस्तेमाल करने का तरीका भी बताया गया है. इससे उपयोगकर्ता, YouTube की वीडियो लाइब्रेरी में खोज के लिए इस्तेमाल हुए खास शब्दों या कैटगरी के हिसाब से वीडियो खोज सकते हैं.

  • वीडियो अपलोड करना सेक्शन में, उपयोगकर्ताओं को अपने ऐप्लिकेशन से YouTube पर वीडियो अपलोड करने की अनुमति देने के दो तरीकों के बारे में कम शब्दों में बताया गया है. इसके अलावा, इस सेक्शन में यह भी बताया गया है कि दूसरे वीडियो के जवाब के तौर पर वीडियो अपलोड कैसे करें.

  • वीडियो अपडेट करना और मिटाना सेक्शन में, YouTube वीडियो की जानकारी अपडेट करने के लिए, एपीआई का इस्तेमाल करने का तरीका बताया गया है. इसमें यह भी बताया गया है कि एपीआई का इस्तेमाल करके, वीडियो को कैसे हटाया जा सकता है.

  • कम्यूनिटी की सुविधाओं का इस्तेमाल करना सेक्शन में, एपीआई के उन फ़ंक्शन के बारे में बताया गया है जिनकी मदद से आपके उपयोगकर्ता, YouTube वीडियो के साथ इंटरैक्ट कर सकते हैं. इन फ़ंक्शन से, किसी मौजूदा वीडियो को रेटिंग देने, उस पर टिप्पणी करने या उसके ख़िलाफ़ शिकायत करने के अनुरोधों के बारे में जानकारी मिलती है. वीडियो पर की गई टिप्पणियों की सूचियां पाने के लिए भी एपीआई का इस्तेमाल किया जा सकता है.

  • वीडियो सेव और इकट्ठा करना सेक्शन में, YouTube चैनलों की सदस्यताओं, पसंदीदा वीडियो, और वीडियो प्लेलिस्ट को ऐक्सेस करने, बनाने, और अपडेट करने के लिए, एपीआई का इस्तेमाल करने का तरीका बताया गया है. इस लेख में, वीडियो प्लेलिस्ट और पसंदीदा वीडियो में वीडियो जोड़ने और हटाने का तरीका भी बताया गया है.

  • उपयोगकर्ता इंटरैक्शन चालू करना सेक्शन में, उपयोगकर्ता प्रोफ़ाइलें वापस पाने और उन्हें अपडेट करने के लिए, एपीआई का इस्तेमाल करने का तरीका बताया गया है. इस सेक्शन में, उपयोगकर्ता के संपर्कों को वापस पाने, जोड़ने, अपडेट करने, और मिटाने का तरीका भी बताया गया है.

शुरू करना

ज़रूरी शर्तें

आपका क्लाइंट ऐप्लिकेशन, YouTube Data API फ़ीड का इस्तेमाल करके वीडियो, टिप्पणियां, जवाब, प्लेलिस्ट, सदस्यताएं, उपयोगकर्ता प्रोफ़ाइलें वगैरह को खोज सकता है, वापस ला सकता है, और अपडेट कर सकता है.

इस दस्तावेज़ में, YouTube Data API की सुविधाओं के बारे में जानकारी दी गई है. साथ ही, Python क्लाइंट लाइब्रेरी का इस्तेमाल करके, एपीआई के साथ इंटरैक्ट करने के उदाहरण भी दिए गए हैं. Python क्लाइंट लाइब्रेरी का इस्तेमाल करने के लिए, आपके पास Python 2.2 या इसके बाद का वर्शन और Element Tree, httplib, और urllib मॉड्यूल होने चाहिए. ज़्यादा जानकारी के लिए, डिपेंडेंसी मॉड्यूल देखें.

अपने एनवायरमेंट को कॉन्फ़िगर करने के बारे में ज़्यादा जानकारी के लिए, शुरू करने की गाइड देखें. अगर आपको YouTube के साथ इंटरैक्ट करने के लिए, Python क्लाइंट लाइब्रेरी के इस्तेमाल किए गए प्रोटोकॉल के बारे में ज़्यादा जानना है, तो डेवलपर गाइड का प्रोटोकॉल पेज देखें.

नीचे दिए गए सैंपल कोड के स्निपेट को अपने कोड में कॉपी/चिपकाया जा सकता है. साथ ही, अपनी ज़रूरतों के हिसाब से उनमें बदलाव किया जा सकता है.

YouTube Data API का इस्तेमाल करके कोई भी कार्रवाई करने से पहले, आपको नीचे दिखाए गए तरीके से gdata.youtube.service.YouTubeService ऑब्जेक्ट को शुरू करना होगा. यहां दिए गए import स्टेटमेंट, gdata.media और gdata.geo मॉड्यूल से अपने-आप इंपोर्ट करेंगे. कृपया ध्यान दें कि सार्वजनिक कॉन्टेंट को वापस पाने के अलावा, अन्य सभी कार्रवाइयों के लिए पुष्टि की ज़रूरत होगी.

import gdata.youtube
import gdata.youtube.service

yt_service = gdata.youtube.service.YouTubeService()

# Turn on HTTPS/SSL access.
# Note: SSL is not available at this time for uploads.
yt_service.ssl = True

इस गाइड में दिए गए तरीके के ज़्यादातर उदाहरण, gdata.youtube.service.YouTubeService के किसी इंस्टेंस पर काम करते हैं. इंटरैक्टिव पायथन इंटरप्रेटर से, पुष्टि नहीं किए गए अनुरोधों की जांच करना फ़ायदेमंद हो सकता है.

ध्यान दें: Python क्लाइंट लाइब्रेरी को आपके पाथ में सही तरीके से जोड़ा जाना चाहिए. कृपया पक्का करें कि आपने दी गई setup.py स्क्रिप्ट चलाकर, इसे इंस्टॉल कर लिया हो. ज़्यादा जानकारी के लिए, शुरू करने के लिए गाइड देखें.

पुष्टि करना

Python क्लाइंट लाइब्रेरी का इस्तेमाल, सार्वजनिक या निजी फ़ीड के साथ किया जा सकता है. सार्वजनिक फ़ीड, रीड-ओनली होते हैं और इनके लिए पुष्टि करने की ज़रूरत नहीं होती. निजी फ़ीड के लिए, आपको YouTube के सर्वर की पुष्टि करनी होगी.

डेस्कटॉप ऐप्लिकेशन के लिए, ClientLogin पुष्टि करने की सुविधा या वेब ऐप्लिकेशन के लिए, AuthSub पुष्टि करने की सुविधा का इस्तेमाल किया जा सकता है.

डेवलपर पासकोड और क्लाइंट आईडी सेट करना

डेवलपर पासकोड से उस YouTube डेवलपर की पहचान होती है जो एपीआई का अनुरोध सबमिट कर रहा है. क्लाइंट आईडी, लॉगिंग और डीबगिंग के लिए आपके ऐप्लिकेशन की पहचान करता है.

Python क्लाइंट लाइब्रेरी का इस्तेमाल करके एपीआई का अनुरोध करने पर, X-GData-Key अनुरोध हेडर का इस्तेमाल आपके डेवलपर पासकोड की जानकारी देने के लिए किया जाता है. साथ ही, X-GData-Client हेडर का इस्तेमाल आपके क्लाइंट आईडी की जानकारी देने के लिए किया जाता है. डेवलपर पासकोड और क्लाइंट आईडी को YouTubeService ऑब्जेक्ट पर सेट किया जा सकता है. इसके लिए, पुष्टि करने के लिए इस्तेमाल किए जा रहे स्कीम की ज़रूरत नहीं होती:

yt_service.developer_key = 'ABCxyz123...'
yt_service.client_id = 'My-Client_id'

आपको YouTube डेवलपर पासकोड के लिए साइन अप करना होगा.

वेब ऐप्लिकेशन के लिए AuthSub की मदद से पुष्टि करना

AuthSub प्रॉक्सी की पुष्टि करने की सुविधा का इस्तेमाल, वेब ऐप्लिकेशन करते हैं. इन ऐप्लिकेशन को अपने उपयोगकर्ताओं की पुष्टि, YouTube/Google खातों के लिए करनी होती है. ऑपरेटर को YouTube उपयोगकर्ता के उपयोगकर्ता नाम और पासवर्ड का ऐक्सेस नहीं चाहिए — सिर्फ़ खास AuthSub टोकन की ज़रूरत होती है.

जब उपयोगकर्ता पहली बार आपके ऐप्लिकेशन पर आता है, तब उसकी पुष्टि Google की सेवाओं से नहीं की जाती. इस मामले में, आपको उपयोगकर्ता को Google पर ले जाने वाला एक लिंक देना होगा, ताकि वह अपने YouTube खाते को ऐक्सेस करने के लिए, आपके ऐप्लिकेशन के अनुरोध को अनुमति दे सके. Python क्लाइंट लाइब्रेरी, इस यूआरएल को जनरेट करने के लिए एक फ़ंक्शन उपलब्ध कराती है. नीचे दिया गया कोड, AuthSubRequest पेज का लिंक सेट अप करता है.

def GetAuthSubUrl():
  next = 'http://www.example.com/video_upload.pyc'
  scope = 'http://gdata.youtube.com'
  secure = False
  session = True

yt_service = gdata.youtube.service.YouTubeService()
return yt_service.GenerateAuthSubURL(next, scope, secure, session)

authSubUrl = GetAuthSubUrl()
print '<a href="%s">Login to your Google account</a>' % authSubUrl

सेवा ऑब्जेक्ट के GenerateAuthSubURL तरीके में भेजे गए पैरामीटर पर ध्यान दें:

  • next — उस पेज का यूआरएल जिस पर YouTube को उपयोगकर्ता को रीडायरेक्ट करना चाहिए. ऐसा तब किया जाएगा, जब उपयोगकर्ता आपके ऐप्लिकेशन को अपना खाता ऐक्सेस करने की अनुमति देगा.
  • scope — इससे पता चलता है कि ऐप्लिकेशन सिर्फ़ YouTube API फ़ीड को ऐक्सेस करेगा.
  • secure — इससे पता चलता है कि दिखाया गया टोकन सुरक्षित नहीं होगा.
  • session — इससे पता चलता है कि इस टोकन को कई बार इस्तेमाल किए जा सकने वाले (सेशन) टोकन के लिए बदला जा सकता है.

दिखाया गया यूआरएल कुछ ऐसा दिखेगा:

https://www.google.com/accounts/AuthSubRequest?scope=http%3A%2F%2Fgdata.youtube.com&session=1&secure=0&next=http%3A%2F%2Fwww.example.com%2Fvideo_upload.pyc

इसके बाद, उपयोगकर्ता अपने YouTube खाते में लॉग-इन करने के लिए लिंक पर जा सकता है. जब उपयोगकर्ता आपके ऐप्लिकेशन को अपना खाता ऐक्सेस करने की अनुमति देगा, तब उसे next यूआरएल पर वापस रीडायरेक्ट कर दिया जाएगा. यूआरएल में, क्वेरी पैरामीटर के तौर पर एक बार इस्तेमाल होने वाला टोकन जोड़ा जाएगा. यूआरएल कुछ ऐसा दिखता है:

http://www.example.com/video_upload.pyc?token=Abc123...

अगले सेक्शन में, इस टोकन को अपग्रेड करने का तरीका बताया गया है. नीचे दिए गए स्निपेट में, यूआरएल से इस टोकन को वापस पाने का एक तरीका बताया गया है:

import cgi
parameters = cgi.FieldStorage()
authsub_token = parameters[[]'token' ]

सेशन टोकन पर अपग्रेड करना

सुरक्षा के मकसद से, इस टोकन का इस्तेमाल सिर्फ़ एक बार किया जा सकता है. इसलिए, अब आपको इस टोकन को सेशन टोकन के लिए बदलना होगा. इस प्रोसेस के बारे में AuthSub दस्तावेज़ में बताया गया है. नीचे दिया गया कोड स्निपेट, टोकन को अपग्रेड करने का तरीका दिखाता है.

yt_service = gdata.youtube.service.YouTubeService()
yt_service.SetAuthSubToken(authsub_token)
yt_service.UpgradeToSessionToken()

इस टोकन की वैल्यू, एक बार इस्तेमाल होने वाले AuthSub टोकन को दिखाती है. ऊपर session = True के बारे में बताया गया था. इसलिए, इस टोकन को UpgradeToSessionToken तरीके का इस्तेमाल करके, AuthSub सेशन टोकन से बदला जा सकता है. यह तरीका, AuthSubSessionToken सेवा को कॉल करता है.

आपके YouTubeService ऑब्जेक्ट की पुष्टि हो चुकी है. इसका इस्तेमाल, YouTube API के साथ आगे के सभी अनुरोधों को पूरा करने के लिए किया जा सकता है. AuthSub सेशन टोकन तब तक नहीं खत्म होंगे, जब तक आपने उन्हें रद्द करने का अनुरोध न किया हो या उपयोगकर्ता ने अपने YouTube खाते में अनुमति वाली साइटें पेज पर जाकर, ऐक्सेस रद्द न कर दिया हो.

इंस्टॉल किए गए ऐप्लिकेशन के लिए ClientLogin की पुष्टि

ClientLogin ऑथेंटिकेशन का इस्तेमाल, इंस्टॉल किए गए उन ऐप्लिकेशन में किया जाता है जो उपयोगकर्ता के उपयोगकर्ता नाम और पासवर्ड को सेव कर सकते हैं या उनके बारे में क्वेरी कर सकते हैं. पुष्टि करने के इस तरीके का इस्तेमाल करने के लिए, gdata.service.GDataService क्लास से इनहेरिट किए गए YouTubeService के ProgrammaticLogin तरीके को लागू करें. साथ ही, उस उपयोगकर्ता का आईडी और पासवर्ड डालें जिसकी ओर से आपका क्लाइंट पुष्टि करने का अनुरोध भेज रहा है.

yt_service = gdata.youtube.service.YouTubeService()
yt_service.email = 'jo@gmail.com'
yt_service.password = 'mypassword'
yt_service.source = 'my-example-application'
yt_service.ProgrammaticLogin()

क्रेडेंशियल सेट होने के बाद, YouTubeService ऑब्जेक्ट का इस्तेमाल करके, आने वाले सभी अनुरोधों को मैनेज किया जा सकता है. YouTube API में अपलोड करने और किसी भी तरह के 'लिखने' के अनुरोध (टिप्पणियां जोड़ना वगैरह) करने के लिए, पक्का करें कि पुष्टि करते समय आपने yt_service ऑब्जेक्ट को अपना डेवलपर पासकोड और क्लाइंट आईडी भी पास किया हो:

# A complete client login request
yt_service.email = 'jo@gmail.com'
yt_service.password = 'mypassword'
yt_service.source = 'my-example-application'
yt_service.developer_key = 'ABC123...'
yt_service.client_id = 'my-example-application'
yt_service.ProgrammaticLogin()

developer_key और client_id एट्रिब्यूट सेट होने पर, YouTubeService ऑब्जेक्ट अपने-आप सही X-GData-Key और X-GData-Client हेडर सेट कर देता है.

ध्यान दें: AuthSub और ClientLogin, दोनों तरीकों के बारे में ज़्यादा जानकारी के लिए, कृपया Google Data API की पुष्टि करने से जुड़ा दस्तावेज़ देखें.

वीडियो फ़ीड और एंट्री के बारे में जानकारी

YouTube Data API, वीडियो के कई फ़ीड उपलब्ध कराता है. इनमें वीडियो की सूचियां होती हैं, जैसे कि स्टैंडर्ड फ़ीड, अपलोड, सदस्यताएं, और पसंदीदा वीडियो. हर फ़ीड का यूआरएल, रेफ़रंस गाइड में दिया गया है.

वीडियो का फ़ीड दिखाना

YouTube API के कई फ़ीड में वीडियो एंट्री होती हैं. इन फ़ीड को आसानी से gdata.youtube.YouTubeVideoFeed ऑब्जेक्ट के तौर पर मॉडल किया जा सकता है. इनमें से हर ऑब्जेक्ट में कई gdata.youtube.YouTubeVideoEntry ऑब्जेक्ट होते हैं. हर वीडियो एंट्री, YouTube पर मौजूद किसी एक वीडियो से जुड़ी होती है. साथ ही, इसमें वीडियो के बारे में जानकारी होती है.

वीडियो की सूची को वापस लाने का बुनियादी तरीका यह है कि वीडियो फ़ीड का यूआरएल बनाया जाए और फिर एक-एक करके एंट्री को प्रोसेस किया जाए. यह तरीका, नीचे दिए गए कोड जैसा ही है:

def GetAndPrintVideoFeed(uri):
  yt_service = gdata.youtube.service.YouTubeService()
  feed = yt_service.GetYouTubeVideoFeed(uri)
  for entry in feed.entry:
    PrintEntryDetails(entry) # full documentation for this function

वीडियो फ़ीड को वापस लाना और खोजना सेक्शन में, फ़ीड के कई सामान्य यूआरएल के बारे में बताया गया है. साथ ही, अलग-अलग वीडियो फ़ीड को वापस लाने का तरीका भी बताया गया है.

किसी खास वीडियो की एंट्री को वापस लाना

अगर आपको किसी वीडियो एंट्री का वीडियो आईडी पता है, तो सिर्फ़ उस वीडियो एंट्री की जानकारी देखी जा सकती है. एंट्री यूआरएल, वीडियो आईडी पर आधारित होता है:

http://gdata.youtube.com/feeds/api/videos/videoID

नीचे दिया गया कोड, YouTube पर मौजूद किसी वीडियो से जुड़ा gdata.youtube.YouTubeVideoEntry फ़ेच करता है:

entry = yt_service.GetYouTubeVideoEntry(video_id='the0KZLEacs')

वीडियो एंट्री का कॉन्टेंट

gdata.youtube.YouTubeVideoEntry ऑब्जेक्ट से कई तरह का मेटाडेटा हासिल किया जा सकता है. जैसे, थंबनेल, प्लेयर के यूआरएल, और वीडियो की अवधि. नीचे दिए गए कोड में, इस जानकारी को पाने का तरीका बताया गया है. Python क्लाइंट लाइब्रेरी, एक्सएमएल एलिमेंट को क्लास में मैप करके, इस सुविधा के ज़्यादातर फ़ंक्शन को अलग रखती है. YouTubeVideoEntry एंट्री के बारे में ज़्यादातर अहम जानकारी, एंट्री में मौजूद media एट्रिब्यूट (जिसमें gdata.media.Group ऑब्जेक्ट होता है) के चाइल्ड एलिमेंट से मिलती है. यह एंट्री, एक्सएमएल media:group एलिमेंट को दिखाती है. वीडियो का मेटाडेटा पाने का तरीका यहां बताया गया है:

def PrintEntryDetails(entry):
  print 'Video title: %s' % entry.media.title.text
  print 'Video published on: %s ' % entry.published.text
  print 'Video description: %s' % entry.media.description.text
  print 'Video category: %s' % entry.media.category[[]0].text
  print 'Video tags: %s' % entry.media.keywords.text
  print 'Video watch page: %s' % entry.media.player.url
  print 'Video flash player URL: %s' % entry.GetSwfUrl()
  print 'Video duration: %s' % entry.media.duration.seconds

  # non entry.media attributes
  print 'Video geo location: %s' % entry.geo.location()
  print 'Video view count: %s' % entry.statistics.view_count
  print 'Video rating: %s' % entry.rating.average

  # show alternate formats
  for alternate_format in entry.media.content:
    if 'isDefault' not in alternate_format.extension_attributes:
      print 'Alternate format: %s | url: %s ' % (alternate_format.type,
                                                 alternate_format.url)

  # show thumbnails
  for thumbnail in entry.media.thumbnail:
    print 'Thumbnail url: %s' % thumbnail.url

ध्यान दें: अपने पेज पर प्लेयर के साथ वीडियो एम्बेड करने के लिए ज़रूरी जानकारी जनरेट करने के तरीके के बारे में ज़्यादा जानने के लिए, कृपया प्रोटोकॉल गाइड देखें.

वीडियो वापस लाना और खोजना

स्टैंडर्ड फ़ीड हासिल करना

YouTube Data API, YouTube के सबसे लोकप्रिय वीडियो का स्टैंडर्ड फ़ीड उपलब्ध कराता है. पहले यह एपीआई, अन्य स्टैंडर्ड फ़ीड के साथ काम करता था. हालांकि, अब इनका इस्तेमाल नहीं किया जा सकता. ज़्यादा जानकारी के लिए, डेवलपर गाइड देखें.

YouTube पर सबसे लोकप्रिय वीडियो के फ़ीड का यूआरएल इस फ़ॉर्मैट में होता है:

http://gdata.youtube.com/feeds/api/standardfeeds/most_popular

ध्यान दें: http://gdata.youtube.com/feeds/api/standardfeeds/localeID/feedID फ़ॉर्मैट में localeID डालकर, स्थानीय भाषा के हिसाब से स्टैंडर्ड फ़ीड भी वापस पाए जा सकते हैं. उदाहरण के लिए, जापान में सबसे लोकप्रिय वीडियो ये होंगे: http://gdata.youtube.com/feeds/api/standardfeeds/JP/most_popular. संभावित localeID की पूरी सूची के लिए, कृपया रेफ़रंस गाइड देखें.

def PrintVideoFeed(feed):
  for entry in feed.entry:
    PrintEntryDetails(entry)

def GetAndPrintFeedByUrl:
  yt_service = gdata.youtube.service.YouTubeService()

  # You can retrieve a YouTubeVideoFeed by passing in the URI
  uri = 'http://gdata.youtube.com/feeds/api/standardfeeds/JP/most_popular'
  PrintVideoFeed(yt_service.GetYouTubeVideoFeed(uri))

किसी खास उपयोगकर्ता के अपलोड किए गए वीडियो वापस पाना

YouTube पर हर उपयोगकर्ता के अपलोड किए गए वीडियो का एक वीडियो फ़ीड होता है. यह फ़ीड, http://gdata.youtube.com/feeds/api/users/username/uploads पर दिखता है. नीचे दिए गए कोड में, उपयोगकर्ता के अपलोड किए गए फ़ीड को फ़ेच और दिखाने का तरीका बताया गया है:

def GetAndPrintUserUploads(username):
  yt_service = gdata.youtube.service.YouTubeService()
  uri = 'http://gdata.youtube.com/feeds/api/users/%s/uploads' % username
  PrintVideoFeed(yt_service.GetYouTubeVideoFeed(uri))

ध्यान दें: पुष्टि किए गए मौजूदा उपयोगकर्ता के वीडियो पाने के लिए, username के बजाय 'default' स्ट्रिंग का भी इस्तेमाल किया जा सकता है.

मिलते-जुलते वीडियो पाने के लिए, gdata.youtube.YouTubeVideoEntry ऑब्जेक्ट का वीडियो आईडी, gdata.youtube.service.YouTubeService ऑब्जेक्ट के GetYouTubeRelatedVideoFeed तरीके को पास करें. इससे मिलती-जुलती एंट्री वाला YouTubeVideoFeed ऑब्जेक्ट मिलता है.

related_feed = yt_service.GetYouTubeRelatedVideoFeed(video_id='abc123')

वीडियो खोजना

YouTube Data API की मदद से, किसी खास शर्त से मेल खाने वाली एंट्री के सेट का अनुरोध किया जा सकता है. जैसे, किसी खास लेखक की ओर से पब्लिश की गई वीडियो एंट्री का अनुरोध करना, वीडियो फ़ॉर्मैट के हिसाब से या किसी खास कीवर्ड से मेल खाने वाली एंट्री का अनुरोध करना. इसके लिए, आपको अपनी खोज की खास शर्तों के साथ एक gdata.service.YouTubeVideoQuery ऑब्जेक्ट बनाना होगा और उसे gdata.youtube.service.YouTubeService के YouTubeQuery तरीके में पास करना होगा.

नीचे दिए गए उदाहरण में, खोज क्वेरी करने का तरीका बताया गया है. इसमें नतीजों को व्यू की संख्या के हिसाब से क्रम में लगाया गया है. इन नतीजों में, प्रतिबंधित वीडियो भी शामिल हैं. एपीआई में इन्हें 'अश्लील' कहा जाता है:

def SearchAndPrint(search_terms):
  yt_service = gdata.youtube.service.YouTubeService()
  query = gdata.youtube.service.YouTubeVideoQuery()
  query.vq = search_terms
  query.orderby = 'viewCount'
  query.racy = 'include'
  feed = yt_service.YouTubeQuery(query)
  PrintVideoFeed(feed)

gdata.service.Query क्लास और YouTubeVideoQuery जैसे सबक्लास, फ़ीड यूआरएल बनाने के लिए ज़िम्मेदार होते हैं. ऊपर दिखाया गया VideoQuery, इस तरह का यूआरएल बनाता है:

http://gdata.youtube.com/feeds/api/videos?vq=<searchTerms>&racy=include&orderby=viewCount

खोज पैरामीटर सेट करने के लिए, यहां YouTubeVideoQuery की कुछ सामान्य प्रॉपर्टी दी गई हैं:

author
इससे एंट्री के लेखक की जानकारी सेट होती है. लेखक का मतलब YouTube उपयोगकर्ता नाम से है.
format
वीडियो फ़ॉर्मैट की जानकारी देता है. मोबाइल वीडियो चलाने के लिए, दो तरह के RTSP स्ट्रीमिंग यूआरएल में से किसी एक को बताने के लिए, संख्या वाले पैरामीटर स्वीकार करता है. इसके अलावा, एम्बेड किए जा सकने वाले फ़्लैश प्लेयर के लिए एचटीटीपी यूआरएल भी स्वीकार करता है.
racy
इससे पता चलता है कि नतीजों में पाबंदी वाला कॉन्टेंट शामिल करना है या नहीं. सिर्फ़ दो पैरामीटर स्वीकार करता है: 'शामिल करें' या 'शामिल न करें'.
max_results
एक बार में दिखाए जाने वाले डेटा की ज़्यादा से ज़्यादा संख्या सेट करता है.
start_index
पेजिंग के लिए, पहले नतीजे का इंडेक्स 1 पर सेट करता है.
orderby
इससे यह तय होता है कि एंट्री को किस क्रम में दिखाना है. जैसे, relevance, viewCount, published या rating के हिसाब से.
time
स्टैंडर्ड फ़ीड के नतीजों को सीमित करने के लिए, समयावधि सेट करता है: today, this_week, this_month या all_time.
vq
खोज क्वेरी का शब्द सेट करता है. यह वीडियो के सभी मेटाडेटा में, चुनी गई स्ट्रिंग को खोजता है. जैसे, टाइटल, टैग, और ब्यौरे.

ध्यान दें: क्वेरी पैरामीटर के बारे में ज़्यादा जानने के लिए, YouTube Data API की रेफ़रंस गाइड और Google Data API की रेफ़रंस गाइड देखें.

कैटगरी और कीवर्ड की मदद से खोजना

खोज के नतीजों में सिर्फ़ उन वीडियो को दिखाने के लिए पाबंदी लगाई जा सकती है जो कैटगरी और कीवर्ड के किसी दिए गए सेट से मैच करते हैं. रेफ़रंस गाइड में, YouTube की पहले से तय की गई कैटगरी (जैसे, संगीत, लोग और ब्लॉग वगैरह) और उपयोगकर्ता के तय किए गए कीवर्ड (टैग), दोनों के बारे में बताने का तरीका बताया गया है.

नीचे दिए गए कोड में, खोज के लिए इस्तेमाल हुए शब्दों को छोटे अक्षरों में बदलकर, कीवर्ड (टैग) का इस्तेमाल करके खोज करने का तरीका बताया गया है. ध्यान दें: कुछ शब्द, YouTube कैटगरी और कीवर्ड, दोनों हो सकते हैं. जैसे, "कॉमेडी". कैटगरी और कीवर्ड क्वेरी में इस नियम का इस्तेमाल किया जाता है कि कैपिटल लेटर वाला शब्द ("कॉमेडी") YouTube कैटगरी को दिखाता है, जबकि लोअरकेस वाला शब्द ("कॉमेडी") कीवर्ड को दिखाता है.

def SearchAndPrintVideosByKeywords(list_of_search_terms):
  yt_service = gdata.youtube.service.YouTubeService()
  query = gdata.youtube.service.YouTubeVideoQuery()
  query.orderby = 'viewCount'
  query.racy = 'include'
  for search_term in list_of_search_terms:
    new_term = search_term.lower()
    query.categories.append('/%s' % new_term)
  feed = yt_service.YouTubeQuery(query)
  PrintVideoFeed(feed)

डेवलपर टैग के हिसाब से खोजना

डेवलपर टैग, अतिरिक्त और छिपे हुए कीवर्ड होते हैं. डेवलपर इनका इस्तेमाल, असली उपयोगकर्ताओं के ऐप्लिकेशन से अपलोड किए गए कॉन्टेंट को टैग करने के लिए कर सकता है. डेवलपर टैग, अपलोड के दौरान हेडर में सेट किए गए डेवलपर पासकोड से मैच होते हैं. ये कीवर्ड, लोगों को नहीं दिखेंगे. इनका इस्तेमाल वीडियो खोजने के लिए किया जा सकता है. किसी खास डेवलपर टैग के हिसाब से वीडियो खोजने के लिए, अपने डेवलपर पासकोड का इस्तेमाल करके, YouTube Data API के लिए सामान्य खोज अनुरोध भेजें. कैटगरी स्कीम और डेवलपर टैग की जानकारी ज़रूर दें. यह ज़रूरी है कि वीडियो इनसे मेल खाते हों. यहां दिए गए यूआरएल से, अपने डेवलपर टैग (हमारे उदाहरण में 'your_tag_here') से मैच होने वाले वीडियो का फ़ीड पाया जा सकता है:

developer_tag_uri = 'http://gdata.youtube.com/feeds/videos/-/%7Bhttp%3A%2F%2Fgdata.youtube.com%2Fschemas%2F2007%2Fdevelopertags.cat%7Dyour_tag_here'
yt_service = gdata.youtube.service.YouTubeService()
PrintVideoFeed(yt_service.GetYouTubeVideoFeed(developer_tag_uri))

वीडियो अपलोड करना

अपलोड करने की प्रोसेस के बारे में खास जानकारी पाने के लिए, कृपया प्रोटोकॉल गाइड में दिए गए डायग्राम देखें. वीडियो अपलोड करने के लिए, इनमें से कोई एक तरीका अपनाएं:

  • सीधे अपलोड करने के तरीके का इस्तेमाल करके, वीडियो को सीधे अपने सर्वर से अपलोड करके
  • इसके अलावा, पहले मेटाडेटा भेजकर, उपयोगकर्ता को ब्राउज़र से वीडियो अपलोड करने का तरीका बताकर, सीधे YouTube पर वीडियो अपलोड करने के लिए कहा जा सकता है

प्रत्यक्ष अपलोड

वीडियो अपलोड करने के लिए, आपको सबसे पहले एक नया gdata.youtube.YouTubeVideoEntry ऑब्जेक्ट बनाना होगा. इसके लिए, आपको ज़रूरी मेटाडेटा वाला gdata.media.Group ऑब्जेक्ट पास करना होगा. यहां दिए गए उदाहरण में, Quicktime वीडियो "mytestmovie.mov" को YouTube पर अपलोड करने के बारे में बताया गया है. इसके लिए, इन प्रॉपर्टी का इस्तेमाल किया गया है:

प्रॉपर्टीमान
TitleMy Test Movie
कैटगरीऑटो
कीवर्डकार, मज़ेदार
जानकारीमेरा ब्यौरा
फ़ाइल का नामmytestmovie.mov
फ़ाइल का MIME टाइपvideo/quicktime
क्या वीडियो निजी है?गलत
वीडियो बनाने की जगह37,-122 (अक्षांश,देशांतर)
डेवलपर टैगmydevelopertag, anotherdevelopertag

नीचे दिया गया कोड, अपलोड करने के लिए एक खाली YouTubeVideoEntry बनाता है. YouTubeService पर InsertVideoEntry तरीके के लिए, इन पैरामीटर की ज़रूरत होती है:

कृपया ध्यान दें कि इन उदाहरणों में यह माना गया है कि yt_service वैरिएबल, पूरी तरह से पुष्टि किए गए YouTubeService ऑब्जेक्ट का रेफ़रंस देता है.

# prepare a media group object to hold our video's meta-data
my_media_group = gdata.media.Group(
  title=gdata.media.Title(text='My Test Movie'),
  description=gdata.media.Description(description_type='plain',
                                      text='My description'),
  keywords=gdata.media.Keywords(text='cars, funny'),
  category=[[]gdata.media.Category(
      text='Autos',
      scheme='http://gdata.youtube.com/schemas/2007/categories.cat',
      label='Autos')],
  player=None
)


# prepare a geo.where object to hold the geographical location
# of where the video was recorded
where = gdata.geo.Where()
where.set_location((37.0,-122.0))

# create the gdata.youtube.YouTubeVideoEntry to be uploaded
video_entry = gdata.youtube.YouTubeVideoEntry(media=my_media_group,
                                              geo=where)

# set the path for the video file binary
video_file_location = '/path/to/my/file.mov'

new_entry = yt_service.InsertVideoEntry(video_entry, video_file_location)

अगर हमें अपने वीडियो को वैकल्पिक डेवलपर टैग से टैग करना था (ज़्यादा जानकारी के लिए, डेवलपर टैग के हिसाब से खोजना देखें), तो InsertVideoEntry को कॉल करने से पहले, AddDeveloperTags तरीके का इस्तेमाल किया जा सकता था:

developer_tags = [[]'some_tag_01', 'another_tag']
video_entry.AddDeveloperTags(developer_tags)

ध्यान दें: वीडियो को निजी के तौर पर अपलोड करने के लिए, gdata.media.Group एट्रिब्यूट के लिए निजी एट्रिब्यूट का इस्तेमाल करना ज़रूरी है:

my_media_group = gdata.media.Group(
  title=gdata.media.Title(text='My Test Movie'),
  description=gdata.media.Description(description_type='plain',
                                      text='My description'),
  keywords=gdata.media.Keywords(text='cars, funny'),
  category=[[]gdata.media.Category(
      text='Autos',
      scheme='http://gdata.youtube.com/schemas/2007/categories.cat',
      label='Autos')],
  player=None,
  private=gdata.media.Private()
)

video_entry = gdata.youtube.YouTubeVideoEntry(media=my_media_group)

# assuming that video_file_location points to a valid path
new_entry = yt_service.InsertVideoEntry(video_entry, video_file_location)

ब्राउज़र से अपलोड करना

ब्राउज़र से अपलोड करने की प्रोसेस, सीधे अपलोड करने की प्रोसेस से काफ़ी हद तक मिलती-जुलती है. हालांकि, वीडियो का मेटाडेटा भेजने के लिए इस्तेमाल किए गए अनुरोध में, फ़ाइल की बाइनरी अपलोड नहीं की जाती. इसके बजाय, सिर्फ़ मेटाडेटा वाला YouTubeVideoEntry बनाएं. इसके बाद, वीडियो की यह एंट्री YouTube API सर्वर पर मौजूद एक खास लिंक पर पोस्ट हो जाती है. एक्सएमएल रिस्पॉन्स में एक token और एक url होता है. इसका इस्तेमाल, स्टैंडर्ड एचटीएमएल फ़ॉर्म का इस्तेमाल करके बाइनरी फ़ाइल अपलोड करने के लिए किया जा सकता है.

# create media group as usual
my_media_group = gdata.media.Group(
  title=gdata.media.Title(text='My Test Movie'),
  description=gdata.media.Description(description_type='plain',
                                      text='My description'),
  keywords=gdata.media.Keywords(text='cars, funny'),
  category=[[]gdata.media.Category(
      text='Autos',
      scheme='http://gdata.youtube.com/schemas/2007/categories.cat',
      label='Autos')],
  player=None
)

# create video entry as usual
video_entry = gdata.youtube.YouTubeVideoEntry(media=my_media_group)

# upload meta data only
response = yt_service.GetFormUploadToken(video_entry)

# parse response tuple and use the variables to build a form (see next code snippet)
post_url = response[[]0]
youtube_token = response[[]1]

ऊपर दिया गया कोड, एक लिंक और टोकन प्रिंट करता है. इसका इस्तेमाल, उपयोगकर्ता के ब्राउज़र में दिखाने के लिए, एचटीएमएल फ़ॉर्म बनाने के लिए किया जाता है. यहां एक आसान उदाहरण दिया गया है. इसमें youtube_token, दिखाए गए YouTubeVideoEntry से वापस मिले टोकन एलिमेंट के कॉन्टेंट को दिखाता है. फ़ॉर्म सबमिट करने के बाद, उपयोगकर्ता को आपकी वेबसाइट पर रीडायरेक्ट करने के लिए, post_url में next पैरामीटर जोड़ना न भूलें (जैसा कि यहां दिखाया गया है). यह पैरामीटर, AuthSub लिंक के next पैरामीटर की तरह ही काम करेगा. अंतर सिर्फ़ इतना है कि यहां एक बार इस्तेमाल होने वाले टोकन के बजाय, यूआरएल पैरामीटर के तौर पर status और id वैरिएबल दिखाए जाते हैं.

next = 'http://example.com/post_video_upload.pyc'

form = """<form action="%s?nexturl=%s" method="post" enctype="multipart/form-data">
          <input name="file" type="file"/>
          <input name="token" type="hidden" value="%s"/>
          <input value="Upload Video File" type="submit" />
          </form>""" % (post_url, next, youtube_token)

अपलोड हो जाने पर, जवाब कुछ ऐसा दिखेगा:

http://example.com/post_video_upload.pyc?status=200&id=ABC123

status पैरामीटर, अपलोड किए गए लेन-देन का एचटीटीपी लेन-देन स्टेटस दिखाता है. id पैरामीटर, अपलोड किए गए वीडियो को असाइन किया गया YouTube वीडियो आईडी दिखाता है.

अपलोड की स्थिति देखना

वीडियो अपलोड करने के बाद, वह तुरंत पुष्टि किए गए उपयोगकर्ता के अपलोड फ़ीड में दिखने लगेगा. हालांकि, जब तक इसे प्रोसेस नहीं किया जाता, तब तक यह साइट पर सार्वजनिक नहीं होगा. जिन वीडियो को अस्वीकार कर दिया गया है या जो अपलोड नहीं हो पाए हैं वे भी सिर्फ़ पुष्टि किए गए उपयोगकर्ता के अपलोड किए गए वीडियो के फ़ीड में दिखेंगे. यहां दिया गया कोड, YouTubeVideoEntry की स्थिति की जांच करता है. इससे यह पता चलता है कि वह अभी लाइव है या अस्वीकार कर दिया गया है.

upload_status = yt_service.CheckUploadStatus(new_entry)

if upload_status is not None:
  video_upload_state = upload_status[[]0]
  detailed_message = upload_status[[]1]

वीडियो अपडेट करना और मिटाना

वीडियो की जानकारी अपडेट करना

वीडियो मेटाडेटा अपडेट करने के लिए, बस YouTubeVideoEntry ऑब्जेक्ट को अपडेट करें. इसके बाद, YouTubeService ऑब्जेक्ट के UpdateVideoEntry तरीके का इस्तेमाल करें. यह तरीका, पैरामीटर के तौर पर YouTubeVideoEntry को लेता है, जिसमें अपडेट किया गया मेटा-डेटा होता है.

# assuming we have a video entry that was just posted in our 'new_entry' variable
new_entry.media.title.text = 'My Updated Video Title'
new_entry.media.description.text = 'Just updated'

updated_entry = yt_service.UpdateVideoEntry(new_entry)

वीडियो मिटाना

वीडियो मिटाना बहुत आसान है. इसके लिए, आपको सिर्फ़ YouTubeService ऑब्जेक्ट के DeleteVideoEntry को कॉल करना होगा.

response = yt_service.DeleteVideoEntry(entry_to_be_deleted)

if response:
  print 'Video successfully deleted!'

कम्यूनिटी की सुविधाओं का इस्तेमाल करना

रेटिंग जोड़ना

किसी वीडियो को रेटिंग देने के लिए, YouTubeService ऑब्जेक्ट के AddRating तरीके का इस्तेमाल करें. कृपया ध्यान दें कि अपने वीडियो को रेटिंग नहीं दी जा सकती. साथ ही, रेटिंग 1 से 5 के बीच होनी चाहिए:

video_id_to_rate = 'Ncakifd_16k'
video_entry = yt_service.GetYouTubeVideoEntry(video_id=video_id_to_rate)
response = yt_service.AddRating(3, video_entry)

टिप्पणियां

किसी वीडियो पर की गई टिप्पणियां वापस पाना

YouTubeVideoEntry ऑब्जेक्ट या वीडियो का आईडी दिया गया हो, तो YouTubeService ऑब्जेक्ट के GetYouTubeVideoCommentFeed तरीके का इस्तेमाल करके, वीडियो की टिप्पणियों वाले फ़ीड को वापस पाया और प्रिंट किया जा सकता है. इससे मिलने वाला फ़ीड एक gdata.youtube.YouTubeCommentFeed होता है, जिसमें gdata.youtube.YouTubeCommentEntry ऑब्जेक्ट होते हैं. इस फ़ीड को किसी भी दूसरे फ़ीड की तरह पार्स किया जा सकता है:

video_id = 'ABC123...'
comment_feed = yt_service.GetYouTubeVideoCommentFeed(video_id=video_id)

for comment_entry in comment_feed.entry:
  print comment_entry.ToString()

टिप्पणी जोड़ना

नई टिप्पणी जोड़ने के लिए, YouTubeService ऑब्जेक्ट के AddComment तरीके का इस्तेमाल करें. इस तरीके के लिए, टिप्पणी करने के लिए YouTubeVideoEntry ऑब्जेक्ट और टिप्पणी की जानकारी देने वाली स्ट्रिंग की ज़रूरत होती है:

my_comment = 'what a boring test video'
video_id = '9g6buYJTt_g'
video_entry = yt_service.GetYouTubeVideoEntry(video_id=video_id)
yt_service.AddComment(comment_text=my_comment, video_entry=video_entry)

वीडियो प्रतिक्रियाएं

YouTube पर किसी वीडियो का जवाब देने के लिए बनाया गया वीडियो, किसी दूसरे वीडियो का जवाब होता है. वीडियो जवाब देने की सुविधा बंद कर दी गई है. इस बारे में एलान में बताया गया है. वीडियो के जवाब के तौर पर अपलोड किए गए मौजूदा वीडियो अब भी उपलब्ध हैं. हालांकि, YouTube पर अब किसी वीडियो के जवाब के तौर पर अपलोड किए गए वीडियो की सूची देखने, नए वीडियो अपलोड करने या वीडियो के जवाब के तौर पर अपलोड किए गए वीडियो मिटाने की सुविधा उपलब्ध नहीं है. हालांकि, वीडियो के जवाब के तौर पर अपलोड किए गए वीडियो को मिटाया जा सकता है. इसलिए, ये फ़ंक्शन अब एपीआई में भी काम नहीं करते.

वीडियो के जवाब से जुड़े ऑपरेशन के लिए एपीआई अनुरोध, अब यह जानकारी दिखाते हैं:

  • किसी वीडियो के लिए वीडियो के जवाबों को वापस पाने का अनुरोध करने पर, खाली सूची दिखती है.
  • वीडियो जवाब जोड़ने का अनुरोध करने पर, 403 एचटीटीपी रिस्पॉन्स कोड मिलता है.
  • वीडियो के जवाब को मिटाने का अनुरोध करने पर, 403 एचटीटीपी रिस्पॉन्स कोड दिखता है.

वीडियो को फ़्लैग करना

किसी वीडियो के ख़िलाफ़ शिकायत करने के लिए, YouTubeService ऑब्जेक्ट पर AddComplaint तरीका इस्तेमाल किया जाता है. शिकायत की शर्त, किसी मान्य कैटगरी की होनी चाहिए. ज़्यादा जानकारी के लिए, कृपया प्रोटोकॉल गाइड में शिकायत जोड़ना सेक्शन देखें.

video_id_to_flag = 'Ncakifd_16k'
complaint_term = 'VIOLENCE'
complaint_text = ('Please ignore this complaint. '
                  'I\'m testing a YouTube API and needed to issue '
                  'a complaint to test the add complaint function. ')

response = yt_service.AddComplaint(complaint_text, complaint_term, video_id_to_flag)

वीडियो सेव करना और इकट्ठा करना

पसंदीदा वीडियो

उपयोगकर्ता के पसंदीदा वीडियो वापस लाना

YouTube के उपयोगकर्ता, देखे गए वीडियो को पसंदीदा के तौर पर मार्क कर सकते हैं. उपयोगकर्ता के पसंदीदा फ़ीड की सामान्य जगह, यहां दिया गया यूआरएल होता है.

http://gdata.youtube.com/feeds/api/users/username/favorites

किसी उपयोगकर्ता के पसंदीदा वीडियो पाने के लिए, YouTubeService ऑब्जेक्ट के GetUserFavoritesFeed तरीके का इस्तेमाल करें. यह तरीका, पैरामीटर के तौर पर एक वैकल्पिक स्ट्रिंग लेता है. यह स्ट्रिंग, उस उपयोगकर्ता के YouTube उपयोगकर्ता नाम को दिखाती है जिसका पसंदीदा फ़ीड वापस पाना है.

favorite_feed = yt_service.GetUserFavoritesFeed(username='gdpython')

यह फ़ीड एक सामान्य वीडियो फ़ीड होता है, जिसमें YouTubeVideoEntry ऑब्जेक्ट होते हैं.

ध्यान दें: इसके अलावा, पुष्टि किए गए मौजूदा उपयोगकर्ता के पसंदीदा आइटम वापस पाने के लिए, default स्ट्रिंग का इस्तेमाल किया जा सकता है. अगर कोई उपयोगकर्ता नाम नहीं दिया जाता है, तो GetUserFavoritesFeed तरीके का यह डिफ़ॉल्ट व्यवहार होता है.

पसंदीदा के तौर पर जोड़ना

पसंदीदा वीडियो जोड़ने के लिए, YouTubeService ऑब्जेक्ट के AddVideoEntryToFavorites तरीके का इस्तेमाल करें. पैरामीटर में, वह YouTubeVideoEntry होता है जिसे जोड़ना है. इसके अलावा, यह भी हो सकता है कि आपको उस उपयोगकर्ता का नाम डालना पड़े जिसके पसंदीदा में यह जोड़ना है. डिफ़ॉल्ट रूप से, वह उपयोगकर्ता जोड़ा जाता है जिसकी पुष्टि की गई है.

video_id = 'Ncakifd_16k'
video_entry = yt_service.GetYouTubeVideoEntry(video_id=video_id)
response = yt_service.AddVideoEntryToFavorites(video_entry)

# The response, if successfully posted is a YouTubeVideoEntry
if isinstance(response, gdata.youtube.YouTubeVideoEntry):
  print 'Video successfully added to favorites'

पसंदीदा संपर्क मिटाना

किसी पसंदीदा आइटम को मिटाने के लिए, YouTubeService ऑब्जेक्ट के DeleteVideoEntryFromFavorites तरीके का इस्तेमाल करें.

video_id = 'Ncakifd_16k'
response = yt_service.DeleteVideoEntryFromFavorites(video_id)
if response is True:
  print 'Video deleted from favorites'

प्लेलिस्ट

YouTube का इस्तेमाल करने वाले हर व्यक्ति के पास एक प्लेलिस्ट फ़ीड होता है. इसमें, उस व्यक्ति की बनाई गई सभी प्लेलिस्ट शामिल होती हैं. इसके बाद, हर प्लेलिस्ट में उसमें मौजूद सभी वीडियो का फ़ीड होता है.

उपयोगकर्ता की प्लेलिस्ट वापस लाना

किसी उपयोगकर्ता की सभी प्लेलिस्ट की सूची को मैन्युअल तरीके से फ़ेच करने के लिए, इस यूआरएल का इस्तेमाल करें:

http://gdata.youtube.com/feeds/api/users/username/playlists

Python क्लाइंट लाइब्रेरी का इस्तेमाल करके, YouTubeService ऑब्जेक्ट के GetYouTubePlaylistFeed तरीके का इस्तेमाल किया जा सकता है:

playlist_feed = yt_service.GetYouTubePlaylistFeed(username='gdpython')

# instead of passing in a username, you can also pass the URI to the playlist feed:
playlist_feed = yt_service.GetYouTubePlaylistFeed(uri='http://gdata.youtube.com/feeds/api/users/default/playlists')

ध्यान दें: ऊपर दिए गए उदाहरण में 'gdpython' जैसे किसी खास उपयोगकर्ता नाम के बजाय, पुष्टि किए गए मौजूदा उपयोगकर्ता का रेफ़रंस देने के लिए, 'default' स्ट्रिंग भी पास की जा सकती है.

gdata.youtube.YouTubePlaylistFeed, gdata.youtube.YouTubePlaylistEntry ऑब्जेक्ट के फ़ीड को दिखाता है. इनमें, उपयोगकर्ता की अलग-अलग प्लेलिस्ट शामिल होती हैं. किसी प्लेलिस्ट में मौजूद वीडियो एंट्री, gdata.youtube.YouTubePlaylistVideoEntry ऑब्जेक्ट के तौर पर दिखाई जाती हैं. ये ऑब्जेक्ट, सामान्य gdata.youtube.YouTubeVideoEntry ऑब्जेक्ट से काफ़ी मिलते-जुलते हैं. हालांकि, इनमें कुछ अपवाद भी हैं. वीडियो में पसंद के मुताबिक टाइटल और ब्यौरे जोड़े जा सकते हैं. साथ ही, पोज़िशन फ़ील्ड से पता चलता है कि प्लेलिस्ट में वीडियो कहां दिखता है.

प्लेलिस्ट की जानकारी हासिल की जा रही है

किसी YouTubePlaylistEntry (किसी खास प्लेलिस्ट को दिखाने वाला) से, YouTubePlaylistVideoFeed मिल सकता है, जिसमें YouTubePlaylistVideoEntry ऑब्जेक्ट होते हैं. जैसा कि ऊपर बताया गया है, ये ऑब्जेक्ट किसी प्लेलिस्ट में मौजूद अलग-अलग वीडियो दिखाते हैं. इनमें पसंद के मुताबिक टाइटल और ब्यौरा जोड़ने का विकल्प होता है. YouTubeService ऑब्जेक्ट के GetYouTubePlaylistVideoFeed तरीके में अपनी प्लेलिस्ट का यूआरआई डालकर, यह फ़ीड पाया जा सकता है:

# a typical playlist URI
playlist_uri = 'http://gdata.youtube.com/feeds/api/playlists/BCB3BB96DF51B505'

playlist_video_feed = yt_service.GetYouTubePlaylistVideoFeed(uri=playlist_uri)

# iterate through the feed as you would with any other
for playlist_video_entry in playlist_video_feed.entry:
  print playlist_video_entry.title.text

प्लेलिस्ट जोड़ना

नई प्लेलिस्ट जोड़ने के लिए, YouTubeService ऑब्जेक्ट के AddPlaylist तरीके का इस्तेमाल करें. इस तरीके में ये पैरामीटर इस्तेमाल किए जाते हैं: playlist_title, playlist_description (दोनों स्ट्रिंग) और एक वैकल्पिक बूलियन, जिसे True पर सेट किया जा सकता है. ऐसा तब किया जाता है, जब प्लेलिस्ट को निजी के तौर पर मार्क करना हो.

new_public_playlistentry = yt_service.AddPlaylist('my new playlist', 'a new playlist')

if isinstance(new_public_playlistentry, gdata.youtube.YouTubePlaylistEntry):
  print 'New playlist added'

# adding a private playlist
new_private_playlistentry = yt_service.AddPlaylist('new private playlist', 'a new private playlist', True)

if isinstance(new_private_playlistentry, gdata.youtube.YouTubePlaylistEntry):
  print 'New private playlist added'

प्लेलिस्ट अपडेट करना

किसी प्लेलिस्ट को अपडेट करने के लिए, YouTubeService ऑब्जेक्ट के UpdatePlaylist तरीके का इस्तेमाल करें. इस तरीके में ये पैरामीटर इस्तेमाल किए जाते हैं: अपडेट की जाने वाली प्लेलिस्ट का आईडी, नया टाइटल, नई जानकारी, प्लेलिस्ट को निजी के तौर पर मार्क करने के लिए वैकल्पिक बूलियन, और प्लेलिस्ट का मालिकाना हक रखने वाले उपयोगकर्ता नाम की जानकारी देने वाली वैकल्पिक स्ट्रिंग. स्ट्रिंग, डिफ़ॉल्ट रूप से उस उपयोगकर्ता के नाम पर सेट होगी जिसकी पुष्टि की गई है.

# here we are updating a public playlist with a new title while also making it private

# we assume that playlist_to_be_updated here represents a YouTubePlaylistEntry object
playlist_entry_id = playlist_to_be_updated.id.text.split('/')[[]-1]

# we want to keep the original description for the playlist so we store it first
original_description = playlist_to_be_updated.description.text

updated_playlist = yt_service.UpdatePlaylist(playlist_entry_id,
                                             'a new updated title',
                                             original_playlist_description,
                                             playlist_private=True)

वीडियो को प्लेलिस्ट में जोड़ें

YouTubeService ऑब्जेक्ट के AddPlaylistVideoEntryToPlaylist तरीके का इस्तेमाल करके, किसी वीडियो को प्लेलिस्ट में जोड़ा जा सकता है. नीचे दिया गया कोड, किसी प्लेलिस्ट में वीडियो को कस्टम टाइटल और ब्यौरे के साथ जोड़ता है.

custom_video_title = 'my test video on my test playlist'
custom_video_description = 'this is a test video on my test playlist'
video_id = 'Ncakifd_16k'
playlist_uri = 'http://gdata.youtube.com/feeds/api/playlists/BCB3BB96DF51B505'

playlist_video_entry = yt_service.AddPlaylistVideoEntryToPlaylist(
    playlist_uri, video_id, custom_video_title, custom_video_description)

if isinstance(playlist_video_entry, gdata.youtube.YouTubePlaylistVideoEntry):
  print 'Video added'

ध्यान दें: कृपया ध्यान दें कि कस्टम टाइटल और ब्यौरे का इस्तेमाल करना ज़रूरी नहीं है. अगर इनका इस्तेमाल नहीं किया जाता है, तो वीडियो के असली टाइटल और ब्यौरे का इस्तेमाल किया जाएगा.

प्लेलिस्ट में वीडियो की जानकारी में बदलाव करना

YouTubePlaylistVideoEntry के मेटाडेटा को बदलने के लिए, YouTubeService ऑब्जेक्ट के UpdatePlaylistVideoEntryMetaData तरीके का इस्तेमाल करें. नीचे दिए गए उदाहरण में, हमने अपने वीडियो को पसंद के मुताबिक नया टाइटल दिया है और उसे अपनी प्लेलिस्ट में पहली पोज़िशन (पोज़िशन 1) पर ले गए हैं.

playlist_uri = 'http://gdata.youtube.com/feeds/api/playlists/BCB3BB96DF51B505'
playlist_entry_id = 'B0F29389E537F888'

new_video_title = 'a useful video'
new_video_description = 'updated video description'

updated_playlist_video_entry = yt_service.UpdatePlaylistVideoEntryMetaData(
    playlist_uri, playlist_entry_id, new_video_title, new_video_description, 1)

ध्यान दें: अगर आपको किसी प्लेलिस्ट में मौजूद वीडियो के टाइटल और ब्यौरे को मूल मेटाडेटा पर वापस लाना है, तो टाइटल और ब्यौरे, दोनों के लिए NULL डालें.

प्लेलिस्ट से वीडियो निकालें

किसी प्लेलिस्ट से वीडियो हटाने के लिए, YouTubeService ऑब्जेक्ट के DeletePlaylistVideoEntry तरीके का इस्तेमाल करें. इस तरीके के लिए, उस प्लेलिस्ट का यूआरआई और एंट्री का आईडी ज़रूरी है जिसमें एंट्री को मिटाना है:

playlist_uri = 'http://gdata.youtube.com/feeds/api/playlists/BCB3BB96DF51B505'
playlist_entry_id = 'B0F29389E537F888'
response = yt_service.DeletePlaylistVideoEntry(playlist_uri,
                                               playlist_entry_id)
if response is True:
  print 'Entry successfully deleted'

प्लेलिस्ट मिटाना

किसी प्लेलिस्ट को मिटाने के लिए, YouTubeService ऑब्जेक्ट के DeletePlaylist तरीके का इस्तेमाल करें. इसके लिए, मिटानी जाने वाली प्लेलिस्ट का यूआरआई डालें:

playlist_uri = 'http://gdata.youtube.com/feeds/api/playlists/BCB3BB96DF51B505'
response = yt_service.DeletePlaylist(playlist_uri)

if response is True:
  print 'Playlist successfully deleted'

सदस्यताएं

किसी उपयोगकर्ता की सदस्यता वाले चैनलों, खोजों, और पसंदीदा वीडियो की सूची पाने के लिए, इस यूआरआई का इस्तेमाल करें:

http://gdata.youtube.com/feeds/api/users/username/subscriptions

ध्यान दें: इसके अलावा, पुष्टि किए गए मौजूदा उपयोगकर्ता के पसंदीदा आइटम वापस पाने के लिए, default स्ट्रिंग का इस्तेमाल किया जा सकता है.

उपयोगकर्ता की सदस्यताएं वापस पाना

यहां दिए गए कोड में, किसी उपयोगकर्ता की सदस्यताओं की सूची को वापस पाने और उसे प्रिंट करने का तरीका बताया गया है. सदस्यताओं को gdata.youtube.YouTubeSubscriptionFeed के तौर पर दिखाया जाता है. इसमें gdata.youtube.YouTubeSubscriptionEntry ऑब्जेक्ट होते हैं. सदस्यताएं वापस पाने के लिए, YouTubeService ऑब्जेक्ट के GetYouTubeSubscriptionFeed तरीके का इस्तेमाल करें. इसके लिए, सदस्यता फ़ीड का यूआरआई या उस उपयोगकर्ता का नाम डालें जिसका सदस्यता फ़ीड वापस पाना है. उपयोगकर्ता नाम पैरामीटर, डिफ़ॉल्ट रूप से उस उपयोगकर्ता पर सेट होता है जिसकी पुष्टि की गई है.

subscription_feed = yt_service.GetYouTubeSubscriptionFeed(username='gdpython')

if isinstance(subscription_feed, gdata.youtube.YouTubeSubscriptionFeed)):
  # given a YouTubeSubscriptionEntry we can determine it's type (channel, favorite, or query)
  for entry in subscription_feed.entry:
    print entry.GetSubscriptionType()

सदस्यता जोड़ना

पुष्टि किए गए उपयोगकर्ता के सदस्यता फ़ीड में नया YouTubeSubsciptionEntry डालकर, नई सदस्यता बनाई जा सकती है. हम तीन तरह की सदस्यताएं बना सकते हैं: किसी उपयोगकर्ता के चैनल की सदस्यता (AddSubscriptionToChannel का इस्तेमाल करके), उपयोगकर्ता के पसंदीदा चैनलों की सदस्यता (AddSubscriptionToFavorites का इस्तेमाल करके) या किसी खास कीवर्ड की सदस्यता (AddSubscriptionToQuery का इस्तेमाल करके). नीचे दिया गया कोड, पुष्टि किए गए उपयोगकर्ता को "GoogleDevelopers" चैनल की सदस्यता देता है.

new_subscription = yt_service.AddSubscriptionToChannel(
      username_to_subscribe_to='GoogleDevelopers')

if isinstance(new_subscription, gdata.youtube.YouTubeSubscriptionEntry):
  print 'New subscription added'

"GoogleDevelopers" उपयोगकर्ता के पसंदीदा चैनलों की सदस्यता भी ली जा सकती है:

new_subscription = yt_service.AddSubscriptionToFavorites(
    username='GoogleDevelopers')
if isinstance(new_subscription, gdata.youtube.YouTubeSubscriptionEntry):
  print 'New subscription added'

आखिर में, खोज के लिए इस्तेमाल हुए खास शब्दों की सदस्यता भी ली जा सकती है. यहां हम "python" टैग वाले वीडियो के लिए क्वेरी की सदस्यता ले रहे हैं.

new_subscription = yt_service.AddSubscriptionToQuery(query='python')

if isinstance(new_subscription, gdata.youtube.YouTubeSubscriptionEntry):
  print 'New subscription added'

सदस्यता मिटाना

किसी उपयोगकर्ता की सदस्यता मिटाने के लिए, YouTubeService ऑब्जेक्ट के DeleteSubscription तरीके का इस्तेमाल करें.

sample_subscription_uri = ('http://gdata.youtube.com/feeds/api/users/'
                           'gdpython/subscriptions/c0c77ca6102a7479')

response = yt_service.DeleteSubscription(sample_subscription_uri)

if response is True:
  print 'Subscription successfully deleted'

उपयोगकर्ता इंटरैक्शन की सुविधा चालू करना

उपयोगकर्ता प्रोफ़ाइल

किसी उपयोगकर्ता की प्रोफ़ाइल को वापस लाना

किसी उपयोगकर्ता की YouTube प्रोफ़ाइल को मैन्युअल तरीके से फ़ेच करने के लिए, इस यूआरआई का इस्तेमाल करें:

http://gdata.youtube.com/feeds/api/users/username

YouTubeService ऑब्जेक्ट के GetYouTubeUserEntry तरीके से, gdata.youtube.YouTubeUserEntry को वापस पाया जा सकता है.

user_entry = yt_service.GetYouTubeUserEntry(username='gdpython')

# we can then write a helper function to print out the user details
def PrintUserEntry(entry):
  # print required fields where we know there will be information
  print 'URI: %s\n' % entry.id.text
  print 'Age: %s\n' % entry.age.text
  print 'Gender: %s\n' % entry.gender.text
  print 'Location: %s\n' % entry.location.text

  # check if there is information in the other fields and if so print it
  if user.first_name: 
    print 'First Name: %s\n' % user.first_name.text
  if user.last_name:
    print 'Last Name: %s\n' % user.last_name.text
  if user.relationship:
    print 'Relationship: %s\n' % user.relationship.text
  if user.description:
    print 'About me: %s\n' % user.description.text
  for link in user.link:
    if link.rel == 'related':
      print 'Website: %s\n' % link.href
  if user.company:
    print 'Company: %s\n' % user.company.text
  if user.occupation:
    print 'Occupation: %s\n' % user.occupation.text
  if user.school:
    print 'School: %s\n' % user.school.text
  if user.hobbies:
    print 'Hobbies: %s\n' % user.hobbies.text
  if user.movies:
    print 'Movies: %s\n' % user.movies.text
  if user.music:
    print 'Music: %s\n' % user.music.text
  if user.books:
    print 'Books: %s\n' % user.books.text
  if user.hometown:
    print 'Hometown: %s\n' % user.hometown.text

संपर्क

किसी उपयोगकर्ता के संपर्कों की सूची, इस यूआरएल से वापस पाई जा सकती है:

http://gdata.youtube.com/feeds/api/users/username/contacts

उपयोगकर्ता के संपर्कों को वापस लाना

YouTubeService ऑब्जेक्ट के GetYouTubeContactFeed तरीके का इस्तेमाल करके, gdata.youtube.YouTubeContactFeed को वापस पाया जा सकता है. इसमें gdata.youtube.YouTubeContactEntry ऑब्जेक्ट शामिल होते हैं.

contact_feed = yt_service.GetYouTubeContactFeed(username='GoogleDevelopers')
for entry in contact_feed.entry:
  print entry.title.text
  # find the apprpriate category element to find out the contact type
  for category in entry.category:
    if category.scheme == 'http://gdata.youtube.com/schemas/2007/contact.cat':
      print category.term

संपर्क जोड़ना

उपयोगकर्ता के संपर्क फ़ीड में नया संपर्क जोड़ने के लिए, YouTubeService ऑब्जेक्ट के AddContact तरीके का इस्तेमाल करें.

new_contact = yt_service.AddContact(contact_username='GoogleDevelopers')

if isinstance(new_contact, gdata.youtube.YouTubeContactEntry)
  print 'New contact added'

संपर्क स्वीकार करना/अस्वीकार करना

किसी संपर्क की जानकारी अपडेट करने के लिए, YouTubeService ऑब्जेक्ट के UpdateContact तरीके का इस्तेमाल करें. इस तरीके का इस्तेमाल, संपर्क अनुरोधों को स्वीकार/अस्वीकार करने के साथ-साथ संपर्कों को 'दोस्त' या 'परिवार' कैटगरी में बांटने के लिए भी किया जा सकता है. नीचे दिए गए उदाहरण में, हमने किसी संपर्क को स्वीकार किया है और फिर उसकी कैटगरी को 'फ़ैमिली' पर सेट किया है:

# in this case user 'gdpython' has requested to be our contact
#so the original contact status is 'pending'
updated_contact = yt_service.UpdateContact('gdpython', 'accepted', 'Family')

if isinstance(updated_contact, gdata.youtube.YouTubeContactEntry)
  print 'New contact added'

संपर्क मिटाना

किसी संपर्क को मिटाने के लिए, YouTubeService ऑब्जेक्ट के DeleteContact तरीके का इस्तेमाल करें. इसके लिए, उस संपर्क का उपयोगकर्ता नाम डालें जिसे मिटाना है.

response = yt_service.DeleteContact(contact_username='gdpython')

if response is True:
  print 'Contact deleted'

वापस सबसे ऊपर जाएं