अहम जानकारी: यह दस्तावेज़ साल 2012 से पहले का है. इस दस्तावेज़ (OAuth 1.0, AuthSub, और Clientलॉगिन) में बताए गए, पुष्टि करने के विकल्पों को 20 अप्रैल, 2012 को आधिकारिक तौर पर बंद कर दिया गया है. अब ये विकल्प उपलब्ध नहीं हैं. हमारा सुझाव है कि आप जल्द से जल्द, OAuth 2.0 पर माइग्रेट करें.
Google Sites Data API, क्लाइंट ऐप्लिकेशन को Google साइट में कॉन्टेंट को ऐक्सेस, पब्लिश, और उसमें बदलाव करने की अनुमति देता है. आपका क्लाइंट ऐप्लिकेशन, हाल की गतिविधि की सूची देखने, बदलावों का इतिहास फ़ेच करने, और अटैचमेंट डाउनलोड करने का अनुरोध भी कर सकता है.
Sites Data API की सुविधाओं के बारे में कुछ जानकारी देने के साथ-साथ, इस गाइड में Python क्लाइंट लाइब्रेरी का इस्तेमाल करके, एपीआई के साथ इंटरैक्ट करने के उदाहरण भी दिए गए हैं. क्लाइंट लाइब्रेरी सेट अप करने में मदद के लिए, Google Data Python क्लाइंट लाइब्रेरी का इस्तेमाल शुरू करना देखें. अगर आपको Python क्लाइंट लाइब्रेरी के क्लासिक वर्शन से इंटरैक्ट करने के लिए इस्तेमाल किए जाने वाले प्रोटोकॉल के बारे में ज़्यादा जानकारी चाहिए, तो कृपया प्रोटोकॉल गाइड देखें.
दर्शक
यह दस्तावेज़ उन डेवलपर के लिए है जो Google Data Python क्लाइंट लाइब्रेरी का इस्तेमाल करके, Google Sites के साथ इंटरैक्ट करने वाले क्लाइंट ऐप्लिकेशन लिखना चाहते हैं.
रिपोर्ट का इस्तेमाल करना
Python क्लाइंट लाइब्रेरी का इस्तेमाल करने के लिए, आपके पास Python 2.2+ और DependencyModules विकी पेज पर दिए गए मॉड्यूल की सूची होनी चाहिए. क्लाइंट लाइब्रेरी डाउनलोड करने के बाद, क्लाइंट को इंस्टॉल और इस्तेमाल करने में मदद पाने के लिए, Google Data Python लाइब्रेरी का इस्तेमाल शुरू करना देखें.
सैंपल चलाया जा रहा है
काम करने वाला पूरा सैंपल, प्रोजेक्ट के Mercurial रिपॉज़िटरी की samples/sites
सबडायरेक्ट्री में मौजूद है
(/samples/sites/sites_example.py).
उदाहरण को इस तरह चलाएं:
python sites_example.py # or python sites_example.py --site [sitename] --domain [domain or "site"] --debug [prints debug info if set]
अगर ज़रूरी फ़्लैग नहीं दिए गए हैं, तो ऐप्लिकेशन आपको उन वैल्यू को इनपुट करने के लिए कहेगा. इस सैंपल की मदद से, उपयोगकर्ता कई कार्रवाइयां कर सकता है. इनमें, क्लासिक Sites API को इस्तेमाल करने का तरीका बताया जाता है. इसलिए, आपको कुछ कार्रवाइयां करने के लिए अपनी पहचान की पुष्टि करनी होगी, जैसे कि कॉन्टेंट में बदलाव करना. इस प्रोग्राम में आपको AuthSub, OAuth या ClientLogin की मदद से पुष्टि करने के लिए कहा जाएगा.
इस गाइड में दिए गए उदाहरणों को अपने कोड में शामिल करने के लिए, आपको import
स्टेटमेंट की ज़रूरत होगी:
import atom.data import gdata.sites.client import gdata.sites.data
आपको एक SitesClient
ऑब्जेक्ट भी सेटअप करना होगा. यह ऑब्जेक्ट, क्लासिक Sites API से क्लाइंट कनेक्शन को दिखाता है.
अपने ऐप्लिकेशन का नाम और साइट का वेबस्पेस नाम (इसके यूआरएल से) पास करें:
client = gdata.sites.client.SitesClient(source='yourCo-yourAppName-v1', site='yourSiteName')
अगर आपको G Suite डोमेन पर होस्ट की गई किसी साइट पर काम करना है, तो domain
पैरामीटर का इस्तेमाल करके डोमेन सेट करें:
client = gdata.sites.client.SitesClient(source='yourCo-yourAppName-v1', site='yourSiteName', domain='example.com')
ऊपर दिए गए स्निपेट में, source
आर्ग्युमेंट ज़रूरी नहीं है. हालांकि, लॉगिन करने के लिए इसका सुझाव दिया जाता है. इसे
इस फ़ॉर्मैट के हिसाब से होना चाहिए: company-applicationname-version
ध्यान दें: बाकी गाइड यह मानकर चलती है कि आपने वैरिएबल client
में एक SitesClient
ऑब्जेक्ट बनाया है.
क्लासिक Sites API से पुष्टि की जा रही है
Python क्लाइंट लाइब्रेरी का इस्तेमाल, सार्वजनिक या निजी फ़ीड के साथ काम करने के लिए किया जा सकता है. साइट डेटा एपीआई, साइट की अनुमतियों और आप जिस कार्रवाई को करने की कोशिश कर रहा है, उसके आधार पर निजी और सार्वजनिक फ़ीड का ऐक्सेस देता है. उदाहरण के लिए, हो सकता है कि आप किसी सार्वजनिक साइट का कॉन्टेंट फ़ीड पढ़ पाएं, लेकिन उसमें अपडेट न कर पाएं. इसके लिए, पुष्टि किए गए क्लाइंट की ज़रूरत होती है. इसके लिए, ClientLogin उपयोगकर्ता नाम/पासवर्ड की पुष्टि, AuthSub या OAuth का इस्तेमाल करके, ऐसा किया जा सकता है.
AuthSub, OAuth, और Clientलॉगिन के बारे में ज़्यादा जानकारी पाने के लिए, कृपया Google Data API से पुष्टि करने से जुड़ी खास जानकारी देखें.
वेब ऐप्लिकेशन के लिए AuthSub
वेब ऐप्लिकेशन के लिए AuthSub पुष्टि करने की सुविधा का इस्तेमाल उन क्लाइंट ऐप्लिकेशन को करना चाहिए जिनके लिए अपने उपयोगकर्ताओं की पुष्टि Google या G Suite खातों में करनी पड़ती है. ऑपरेटर को Google Sites के उपयोगकर्ता के लिए, उपयोगकर्ता नाम और पासवर्ड का ऐक्सेस चाहिए नहीं. इसके लिए, सिर्फ़ AuthSub टोकन की ज़रूरत होती है.
अपने वेब ऐप्लिकेशन में AuthSub को शामिल करने के निर्देश देखें
एक बार इस्तेमाल होने वाले टोकन का अनुरोध करें
जब उपयोगकर्ता पहली बार आपके ऐप्लिकेशन पर जाता है, तो उसे अपनी पहचान की पुष्टि करनी होगी. आम तौर पर, डेवलपर कुछ टेक्स्ट और एक लिंक प्रिंट करते हैं, जो उपयोगकर्ता को AuthSub की मंज़ूरी देने वाले पेज पर ले जाता है. ऐसा उपयोगकर्ता की पुष्टि करने और उसके दस्तावेज़ों का ऐक्सेस मांगने के लिए किया जाता है. इस यूआरएल को जनरेट करने के लिए, Google Data Python क्लाइंट लाइब्रेरी एक फ़ंक्शन generate_auth_sub_url()
उपलब्ध कराती है. नीचे दिया गया कोड, AuthSubRequest पेज का लिंक सेट अप करता है.
import gdata.gauth def GetAuthSubUrl(): next = 'http://www.example.com/myapp.py' scopes = ['https://sites.google.com/feeds/'] secure = True session = True return gdata.gauth.generate_auth_sub_url(next, scopes, secure=secure, session=session) print '<a href="%s">Login to your Google account</a>' % GetAuthSubUrl()
अगर आपको G Suite से होस्ट किए गए डोमेन पर मौजूद उपयोगकर्ताओं की पुष्टि करनी है, तो डोमेन नेम generate_auth_sub_url()
को पास करें:
def GetAuthSubUrl(): domain = 'example.com' next = 'http://www.example.com/myapp.py' scopes = ['https://sites.google.com/feeds/'] secure = True session = True return gdata.gauth.generate_auth_sub_url(next, scopes, secure=secure, session=session, domain=domain)
generate_auth_sub_url()
तरीके में कई पैरामीटर होते हैं (AuthSubRequest हैंडलर के ज़रिए इस्तेमाल किए गए क्वेरी पैरामीटर के मुताबिक):
- अगला यूआरएल — ऐसा यूआरएल जिस पर Google, उपयोगकर्ता के
खाते में लॉग इन करने और ऐक्सेस देने के बाद रीडायरेक्ट करता है;
ऊपर दिए गए उदाहरण में
http://www.example.com/myapp.py
- दायरा —
https://sites.google.com/feeds/
- सुरक्षित, यह एक बूलियन है, जो यह बताता है कि टोकन को सुरक्षित और रजिस्टर किए गए मोड में इस्तेमाल किया जाएगा या नहीं; ऊपर दिए गए उदाहरण में
True
- session, यह दिखाने के लिए एक दूसरा बूलियन. यह बताता है कि सिंगल-यूज़ टोकन को बाद में सेशन टोकन के लिए बदला जाएगा या नहीं; ऊपर दिए गए उदाहरण में
True
सेशन टोकन पर अपग्रेड करना
Google Data API क्लाइंट लाइब्रेरी के साथ AuthSub का इस्तेमाल करना देखें.
सेशन टोकन से जुड़ी जानकारी हासिल की जा रही है
Google Data API क्लाइंट लाइब्रेरी के साथ AuthSub का इस्तेमाल करना देखें.
सेशन टोकन को रद्द करना
Google Data API क्लाइंट लाइब्रेरी के साथ AuthSub का इस्तेमाल करना देखें.
सलाह: जब आपके ऐप्लिकेशन को लंबे समय तक चलने वाला सेशन टोकन मिल जाता है,
तो उस टोकन को अपने डेटाबेस में सेव करें, ताकि बाद में इस्तेमाल किया जा सके. आपको हर बार ऐप्लिकेशन चलाने पर उपयोगकर्ता को AuthSub पर वापस भेजने की ज़रूरत नहीं है.
क्लाइंट पर मौजूदा टोकन सेट करने के लिए, client.auth_token = gdata.gauth.AuthSubToken(TOKEN_STR)
का इस्तेमाल करें.
वेब या इंस्टॉल किए गए/मोबाइल ऐप्लिकेशन के लिए OAuth
OAuth का इस्तेमाल, AuthSub के विकल्प के तौर पर किया जा सकता है और यह वेब ऐप्लिकेशन के लिए है. OAuth, AuthSub के सुरक्षित और रजिस्टर किए गए मोड का इस्तेमाल करने की तरह है. इसमें डेटा के सभी अनुरोधों पर डिजिटल रूप से हस्ताक्षर करने होंगे और आपको अपना डोमेन रजिस्टर करना होगा.
अपने इंस्टॉल किए गए ऐप्लिकेशन में OAuth को शामिल करने के निर्देश देखें
अनुरोध टोकन फ़ेच किया जा रहा है
Google Data API क्लाइंट लाइब्रेरी के साथ OAuth का इस्तेमाल करना देखें.
अनुरोध वाले टोकन को अनुमति देना
Google Data API क्लाइंट लाइब्रेरी के साथ OAuth का इस्तेमाल करना देखें.
ऐक्सेस टोकन पर अपग्रेड करना
Google Data API क्लाइंट लाइब्रेरी के साथ OAuth का इस्तेमाल करना देखें.
सलाह: जब आपके ऐप्लिकेशन को OAuth ऐक्सेस टोकन मिल जाता है,
तो उस टोकन को अपने डेटाबेस में सेव करें, ताकि उसे बाद में इस्तेमाल करने के लिए बाज़ार से हटाया जा सके. आपको अपना ऐप्लिकेशन हर बार चलाने के लिए, OAuth के ज़रिए उपयोगकर्ता को वापस भेजने की ज़रूरत नहीं है.
क्लाइंट पर मौजूदा टोकन सेट करने के लिए, client.auth_token = gdata.oauth.OAuthToken(TOKEN_STR, TOKEN_SECRET)
का इस्तेमाल करें.
इंस्टॉल किए गए/मोबाइल ऐप्लिकेशन के लिए Clientलॉगिन
ClientLogin का इस्तेमाल, इंस्टॉल किए गए या ऐसे मोबाइल ऐप्लिकेशन में किया जाना चाहिए जिनके लिए लोगों को Google खाते की पुष्टि करनी होती है. पहली बार चलाने पर, आपका ऐप्लिकेशन, उपयोगकर्ता को उसके उपयोगकर्ता नाम/पासवर्ड का अनुरोध करता है. बाद के अनुरोधों पर, पुष्टि करने वाले टोकन का रेफ़रंस दिया जाता है.
अपने इंस्टॉल किए गए ऐप्लिकेशन में Clientलॉगिन शामिल करने के निर्देश देखें
ClientLogin का इस्तेमाल करने के लिए, SitesClient
ऑब्जेक्ट के ClientLogin()
तरीके को शुरू करें, जो GDClient
से लिया जाता है. उस उपयोगकर्ता का ईमेल पता और पासवर्ड डालें जिसकी ओर से आपका क्लाइंट अनुरोध कर रहा है. उदाहरण के लिए:
client = gdata.sites.client.SitesClient(source='yourCo-yourAppName-v1') client.ClientLogin('user@gmail.com', 'pa$$word', client.source);
सलाह: आपके ऐप्लिकेशन से पहली बार उपयोगकर्ता की पुष्टि होने के बाद, पुष्टि करने वाले टोकन को अपने डेटाबेस में सेव कर लें, ताकि बाद में इस्तेमाल करने के लिए उसे वापस लाया जा सके. आपको अपना ऐप्लिकेशन हर बार चलाने पर, उपयोगकर्ता से पासवर्ड डालने की ज़रूरत नहीं है. ज़्यादा जानकारी के लिए, पुष्टि करने वाले टोकन को याद करना देखें.
अपने Python ऐप्लिकेशन में Clientलॉगिन का इस्तेमाल करने के बारे में ज़्यादा जानकारी के लिए, Google Data API क्लाइंट लाइब्रेरी के साथ Clientलॉगिन का इस्तेमाल करना देखें.
साइट फ़ीड
साइट फ़ीड का इस्तेमाल उन Google साइटों की सूची बनाने के लिए किया जा सकता है जिनका मालिकाना हक किसी उपयोगकर्ता के पास है या जिसके पास उसे देखने की अनुमतियां हैं. इसका इस्तेमाल, किसी मौजूदा साइट का नाम बदलने के लिए भी किया जा सकता है. आखिर में, G Suite डोमेन के लिए, इसका इस्तेमाल पूरी साइट बनाने और/या कॉपी करने के लिए भी किया जा सकता है.
लिस्टिंग साइटें
उपयोगकर्ता के पास जिन साइटों का ऐक्सेस है उन्हें सूची में जोड़ने के लिए, क्लाइंट के GetSiteFeed()
तरीके का इस्तेमाल करें. इस तरीके में, एक वैकल्पिक आर्ग्युमेंट, uri
का इस्तेमाल किया जाता है. इसका इस्तेमाल, किसी वैकल्पिक साइट फ़ीड यूआरआई के बारे में बताने के लिए किया जा सकता है. डिफ़ॉल्ट रूप से, GetSiteFeed()
क्लाइंट ऑब्जेक्ट पर सेट साइट के नाम और डोमेन का इस्तेमाल करता है. अपने क्लाइंट ऑब्जेक्ट पर ये वैल्यू सेट करने के बारे में ज़्यादा जानकारी के लिए, इस्तेमाल शुरू करना सेक्शन देखें.
पुष्टि किए गए उपयोगकर्ता की साइटों की सूची फ़ेच करने का एक उदाहरण यहां दिया गया है:
feed = client.GetSiteFeed() for entry in feed.entry: print '%s (%s)' % (entry.title.text, entry.site_name.text) if entry.summary.text: print 'description: ' + entry.summary.text if entry.FindSourceLink(): print 'this site was copied from site: ' + entry.FindSourceLink() print 'acl feed: %s\n' % entry.FindAclLink() print 'theme: ' + entry.theme.text
ऊपर दिया गया स्निपेट, साइट के टाइटल, साइट का नाम, वह साइट, जहां से इसे कॉपी किया गया था, और इसके acl फ़ीड यूआरआई को प्रिंट करता है.
नई साइटें बनाना
ध्यान दें: यह सुविधा सिर्फ़ G Suite डोमेन के लिए उपलब्ध है.
लाइब्रेरी के CreateSite()
तरीके का इस्तेमाल करके नई साइटों का प्रावधान किया जा सकता है.
GetSiteFeed()
हेल्पर की तरह, CreateSite()
भी एक वैकल्पिक तर्क, uri
स्वीकार करता है. इसका इस्तेमाल, वैकल्पिक साइट फ़ीड यूआरआई के बारे में बताने के लिए किया जा सकता है. इसका इस्तेमाल, आपके SitesClient
ऑब्जेक्ट पर सेट किए गए डोमेन के अलावा किसी दूसरे डोमेन में साइट बनाने के मामले में किया जा सकता है.
यहां 'स्लेट' थीम वाली नई साइट बनाने और एक टाइटल और (ज़रूरी नहीं) जानकारी देने का उदाहरण दिया गया है:
client.domain = 'example2.com' # demonstrates creating a site under a different domain. entry = client.CreateSite('Title For My Site', description='Site to hold precious memories', theme='slate') print 'Site created! View it at: ' + entry.GetAlternateLink().href
ऊपर किया गया अनुरोध, G Suite डोमेन example2.com
के तहत एक नई साइट बनाएगा.
इसलिए, साइट का यूआरएल https://sites.google.com/a/example2.com/title-for-my-site होगा.
अगर साइट बन जाती है, तो सर्वर gdata.sites.data.SiteEntry
ऑब्जेक्ट के साथ जवाब देगा. इसमें सर्वर के जोड़े गए एलिमेंट शामिल होंगे: साइट का लिंक, साइट के एसीएल फ़ीड का लिंक, साइट का नाम, टाइटल, खास जानकारी वगैरह.
किसी साइट को कॉपी करना
ध्यान दें: यह सुविधा सिर्फ़ G Suite डोमेन के लिए उपलब्ध है.
CreateSite()
का इस्तेमाल, किसी मौजूदा साइट को कॉपी करने के लिए भी किया जा सकता है. ऐसा करने के लिए, source_site
कीवर्ड आर्ग्युमेंट पास करें.
कॉपी की गई किसी भी साइट में यह लिंक होगा, जिसे entry.FindSourceLink()
से ऐक्सेस किया जा सकता है. नई साइटें बनाना सेक्शन में बनाई गई साइट की डुप्लीकेट कॉपी बनाने का एक उदाहरण यहां दिया गया है:
copied_site = client.CreateSite('Copy of Title For My Site', description='My Copy', source_site=entry.FindSourceLink()) print 'Site copied! View it at: ' + copied_site.GetAlternateLink().href
ज़रूरी बातें:
- सिर्फ़ उन साइटों और साइट के टेंप्लेट कॉपी किए जा सकते हैं जिनका मालिकाना हक पुष्टि किए गए उपयोगकर्ता के पास है.
- साइट का टेंप्लेट भी कॉपी किया जा सकता है. अगर Google Sites के सेटिंग पेज में "इस साइट को टेंप्लेट के तौर पर पब्लिश करें" सेटिंग पर सही का निशान लगाया गया है, तो इसे साइट को टेंप्लेट माना जाता है.
- आपके पास किसी दूसरे डोमेन से साइट को कॉपी करने का विकल्प होता है. हालांकि, इसके लिए ज़रूरी है कि सोर्स साइट पर, आप मालिक के तौर पर शामिल हों.
किसी साइट का मेटाडेटा अपडेट करना
किसी साइट का टाइटल या खास जानकारी अपडेट करने के लिए, आपको उस साइट के SiteEntry
की ज़रूरत होगी जिसकी शिकायत की गई है. यह उदाहरण GetEntry()
तरीके का इस्तेमाल करके, सबसे पहले SiteEntry
को फ़ेच करता है. इसके बाद, इसका टाइटल, ब्यौरा, और कैटगरी टैग में बदलाव किया जाता है:
uri = 'https://sites.google.com/feeds/site/example2.com/title-for-my-site' site_entry = client.GetEntry(uri, desired_class=gdata.sites.data.SiteEntry) site_entry.title.text = 'Better Title' site_entry.summary.text = 'Better Description' category_name = 'My Category' category = atom.data.Category( scheme=gdata.sites.data.TAG_KIND_TERM, term=category_name) site_entry.category.append(category) updated_site_entry = client.Update(site_entry) # To force the update, even if you do not have the latest changes to the entry: # updated_site_entry = client.Update(site_entry, force=True)
गतिविधि फ़ीड फ़ेच किया जा रहा है
ध्यान दें: इस फ़ीड को ऐक्सेस करने के लिए, यह ज़रूरी है कि आप साइट के सहयोगी या मालिक हों. आपके क्लाइंट को AuthSub, OAuth या Clientलॉगिन टोकन का इस्तेमाल करके पुष्टि करनी होगी. साइटें सेवा के लिए पुष्टि करना देखें.
गतिविधि फ़ीड को फ़ेच करके, किसी साइट की हाल की गतिविधि (बदलाव) को फ़ेच किया जा सकता है.
Lib का GetActivityFeed()
तरीका इस फ़ीड की ऐक्सेस देता है:
print "Fetching activity feed of '%s'...\n" % client.site feed = client.GetActivityFeed() for entry in feed.entry: print '%s [%s on %s]' % (entry.title.text, entry.Kind(), entry.updated.text)
GetActivityFeed()
को कॉल करने पर, gdata.sites.data.ActivityFeed
ऑब्जेक्ट दिखता है, जिसमें
gdata.sites.data.ActivityEntry
की सूची होती है. गतिविधि की हर एंट्री में, साइट में किए गए बदलाव की जानकारी होती है.
बदलाव का इतिहास फ़ेच किया जा रहा है
ध्यान दें: इस फ़ीड को ऐक्सेस करने के लिए, यह ज़रूरी है कि आप साइट के सहयोगी या मालिक हों. आपके क्लाइंट को AuthSub, OAuth या Clientलॉगिन टोकन का इस्तेमाल करके पुष्टि करनी होगी. साइटें सेवा के लिए पुष्टि करना देखें.
संशोधन फ़ीड किसी भी सामग्री एंट्री के लिए बदलाव के इतिहास की जानकारी देता है. GetRevisionFeed()
तरीके का इस्तेमाल, किसी कॉन्टेंट एंट्री के लिए बदलावों को फ़ेच करने के लिए किया जा सकता है. इस तरीके में, एक वैकल्पिक uri
पैरामीटर लिया जाता है, जो gdata.sites.data.ContentEntry
, कॉन्टेंट एंट्री का पूरा यूआरआई या कॉन्टेंट एंट्री आईडी स्वीकार करता है.
यह उदाहरण कॉन्टेंट फ़ीड के बारे में क्वेरी करता है और पहली कॉन्टेंट एंट्री के लिए रिविज़न फ़ीड को फ़ेच करता है:
print "Fetching content feed of '%s'...\n" % client.site content_feed = client.GetContentFeed() content_entry = content_feed.entry[0] print "Fetching revision feed of '%s'...\n" % content_entry.title.text revision_feed = client.GetRevisionFeed(content_entry) for entry in revision_feed.entry: print entry.title.text print ' new version on:\t%s' % entry.updated.text print ' view changes:\t%s' % entry.GetAlternateLink().href print ' current version:\t%s...\n' % str(entry.content.html)[0:100]
GetRevisionFeed()
को कॉल करने पर, gdata.sites.data.RevisionFeed
ऑब्जेक्ट दिखता है, जिसमें
gdata.sites.data.RevisionEntry
की सूची होती है. हर एक रिविज़न एंट्री में जानकारी होती है, जैसे कि उस रिविज़न का कॉन्टेंट, वर्शन नंबर, और नया वर्शन कब बनाया गया था.
कॉन्टेंट फ़ीड
कॉन्टेंट फ़ीड को वापस पाया जा रहा है
ध्यान दें: कॉन्टेंट फ़ीड को पुष्टि करने की ज़रूरत हो भी सकती है और नहीं भी. यह साइट को शेयर करने से जुड़ी अनुमतियों पर निर्भर करता है. अगर साइट गैर-सार्वजनिक है, तो आपके क्लाइंट को AuthSub, OAuth या Clientलॉगिन टोकन का इस्तेमाल करके पुष्टि करनी होगी. Sites के लिए बनी सेवा के लिए पुष्टि करने का तरीका देखें.
कॉन्टेंट फ़ीड, साइट का सबसे नया कॉन्टेंट दिखाता है. इसे lib की GetContentFeed()
तरीके को कॉल करके ऐक्सेस किया जा सकता है, जो एक कस्टमाइज़ की गई क्वेरी को पास करने के लिए एक वैकल्पिक uri
स्ट्रिंग पैरामीटर लेता है.
यहां पूरा कॉन्टेंट फ़ीड फ़ेच करने और कुछ दिलचस्प एलिमेंट को प्रिंट करने का उदाहरण दिया गया है:
print "Fetching content feed of '%s'...\n" % client.site feed = client.GetContentFeed() for entry in feed.entry: print '%s [%s]' % (entry.title.text, entry.Kind()) # Common properties of all entry kinds. print ' content entry id: ' + entry.GetNodeId() print ' revision:\t%s' % entry.revision.text print ' updated:\t%s' % entry.updated.text if entry.page_name: print ' page name:\t%s' % entry.page_name.text if entry.content: print ' content\t%s...' % str(entry.content.html)[0:100] # Subpages/items will have a parent link. parent_link = entry.FindParentLink() if parent_link: print ' parent link:\t%s' % parent_link # The alternate link is the URL pointing to Google Sites. if entry.GetAlternateLink(): print ' view in Sites:\t%s' % entry.GetAlternateLink().href # If this entry is a filecabinet, announcementpage, etc., it will have a feed of children. if entry.feed_link: print ' feed of items:\t%s' % entry.feed_link.href print
सलाह: entry.Kind()
का इस्तेमाल, किसी एंट्री का टाइप तय करने के लिए किया जा सकता है.
नतीजे के तौर पर मिलने वाला feed
ऑब्जेक्ट एक gdata.sites.data.ContentFeed
है, जिसमें gdata.sites.data.ContentEntry
की सूची होती है. हर एंट्री, उपयोगकर्ता की साइट में एक अलग पेज/आइटम को दिखाती है. साथ ही, उसमें एंट्री के लिए खास एलिमेंट भी होते हैं. हर तरह की एंट्री में उपलब्ध प्रॉपर्टी के बारे में बेहतर जानकारी के लिए, ऐप्लिकेशन का नमूना देखें.
कॉन्टेंट फ़ीड से जुड़ी क्वेरी के उदाहरण
कॉन्टेंट फ़ीड में, कुछ स्टैंडर्ड Google Data API क्वेरी पैरामीटर और क्लासिक Sites API से जुड़े खास पैरामीटर का इस्तेमाल किया जा सकता है. ज़्यादा जानकारी और इस्तेमाल किए जा सकने वाले पैरामीटर की पूरी सूची के लिए, रेफ़रंस गाइड देखें.
ध्यान दें: इस सेक्शन में दिए गए उदाहरणों में, कॉन्टेंट फ़ीड के बेस यूआरआई को बनाने के लिए, gdata.sites.client.MakeContentFeedUri()
हेल्पर तरीके का इस्तेमाल किया गया है.
खास तरह के एंट्री टाइप फ़ेच करना
सिर्फ़ किसी खास तरह की एंट्री फ़ेच करने के लिए, kind
पैरामीटर का इस्तेमाल करें. उदाहरण के तौर पर, यह स्निपेट सिर्फ़ attachment
एंट्री दिखाता है:
kind = 'webpage' print 'Fetching only %s entries' % kind uri = '%s?kind=%s' % (client.MakeContentFeedUri(), kind) feed = client.GetContentFeed(uri=uri)
एक से ज़्यादा टाइप दिखाने के लिए, हर kind
को कॉमा से अलग करें. उदाहरण के लिए, यह स्निपेट filecabinet
और
listpage
एंट्री दिखाता है:
kind = ','.join(['filecabinet', 'listpage']) print 'Fetching only %s entries' % kind uri = '%s?kind=%s' % (client.MakeContentFeedUri(), kind) feed = client.GetContentFeed(uri=uri)
पाथ के हिसाब से पेज फ़ेच करना
अगर आपको Google साइट में किसी पेज का रिलेटिव पाथ पता है, तो उस पेज को फ़ेच करने के लिए path
पैरामीटर का इस्तेमाल किया जा सकता है.
इस उदाहरण से, http://sites.google.com/domainName/siteName/path/to/the/page
पर मौजूद पेज दिखेगा:
path = '/path/to/the/page' print 'Fetching page by its path: ' + path uri = '%s?path=%s' % (client.MakeContentFeedUri(), path) feed = client.GetContentFeed(uri=uri)
पैरंट पेज से सभी एंट्री वापस लाना
अगर आपको किसी पेज का कॉन्टेंट एंट्री आईडी पता है (उदाहरण के लिए, नीचे दिए गए उदाहरण में "1234567890"), तो इसकी सभी चाइल्ड एंट्री (अगर कोई है) फ़ेच करने के लिए parent
पैरामीटर का इस्तेमाल करें:
parent = '1234567890' print 'Fetching all children of parent entry: ' + parent uri = '%s?parent=%s' % (client.MakeContentFeedUri(), parent) feed = client.GetContentFeed(uri=uri)
अतिरिक्त पैरामीटर के लिए, रेफ़रंस गाइड देखें.
कॉन्टेंट बनाना
ध्यान दें: किसी साइट के लिए कॉन्टेंट बनाने से पहले, पक्का करें कि आपने साइट को क्लाइंट में सेट किया हो.client.site = "siteName"
CreatePage()
का इस्तेमाल करके नया कॉन्टेंट (वेबपेज, सूची पेज, फ़ाइल कैबिनेट, सूचना पेज वगैरह) बनाया जा सकता है.
इस तरीके का पहला तर्क, एक तरह का पेज होना चाहिए. इसके बाद, उसका शीर्षक, और उसका एचटीएमएल कॉन्टेंट होना चाहिए.
इस्तेमाल किए जा सकने वाले नोड टाइप की सूची देखने के लिए, रेफ़रंस गाइड में kind
पैरामीटर देखें.
नए आइटम / पेज बनाना
यह उदाहरण टॉप लेवल के तहत एक नया webpage
बनाता है, जिसमें पेज के मुख्य हिस्से के लिए कुछ एक्सएचटीएमएल शामिल होता है. साथ ही, यह हेडिंग के टाइटल को 'नया वेबपेज टाइटल' पर सेट करता है:
entry = client.CreatePage('webpage', 'New WebPage Title', html='<b>HTML content</b>') print 'Created. View it at: %s' % entry.GetAlternateLink().href
अगर अनुरोध पूरा हो जाता है, तो entry
में सर्वर पर बनाई गई एंट्री की एक कॉपी, gdata.sites.gdata.ContentEntry
के तौर पर शामिल की जाएगी.
एंट्री के टाइप होते समय जटिल एंट्री टाइप (जैसे कि कॉलम हेडिंग वाला listpage
) बनाने के लिए, आपको मैन्युअल तरीके से gdata.sites.data.ContentEntry
बनाना होगा. इसके बाद, अपनी पसंद की प्रॉपर्टी डालनी होगी और client.Post()
को कॉल करना होगा.
कस्टम यूआरएल पाथ के तहत आइटम/पेज बनाना
डिफ़ॉल्ट रूप से, पिछला उदाहरण http://sites.google.com/domainName/siteName/new-webpage-title
यूआरएल के तहत बनाया जाएगा और इसके पेज का शीर्षक 'नया वेबपेज टाइटल' होगा. इसका मतलब है कि यूआरएल के लिए, टाइटल को new-webpage-title
के तौर पर सामान्य बनाया गया है.
किसी पेज के यूआरएल पाथ को पसंद के मुताबिक बनाने के लिए, कॉन्टेंट एंट्री पर page_name
प्रॉपर्टी सेट करें. CreatePage()
हेल्पर,
इसे एक वैकल्पिक कीवर्ड आर्ग्युमेंट के तौर पर देता है.
इस उदाहरण में, 'फ़ाइल स्टोरेज' के हेडिंग के साथ एक नया filecabinet
पेज बनाया जाता है. हालांकि, page_name
प्रॉपर्टी के बारे में बताकर, http://sites.google.com/domainName/siteName/file-storage
के बजाय,
यूआरएल http://sites.google.com/domainName/siteName/files
में पेज बनाया जाता है.
entry = client.CreatePage('filecabinet', 'File Storage', html='<b>HTML content</b>', page_name='files') print 'Created. View it at: ' + entry.GetAlternateLink().href
किसी पेज के यूआरएल पाथ को नाम देने के लिए, सर्वर प्राथमिकता के नीचे दिए गए नियमों का इस्तेमाल करता है:
- अगर
page_name
मौजूद है, तो.a-z, A-Z, 0-9, -, _
के मैंडेट को पूरा करना ज़रूरी है. title
, अगर पेज का नाम मौजूद नहीं है, तो शून्य नहीं होना चाहिए. सामान्य तरीका, खाली सफ़ेद जगह को '-' में ट्रिम + छोटा करना है औरa-z, A-Z, 0-9, -, _
से मेल न खाने वाले वर्णों को हटाना है.
सबपेज बनाना
पैरंट पेज में सबपेज (बच्चे) बनाने के लिए, CreatePage()
के parent
कीवर्ड आर्ग्युमेंट का इस्तेमाल करें.
parent
या तो gdata.sites.gdata.ContentEntry
हो सकती है या कोई स्ट्रिंग हो सकती है, जो कॉन्टेंट की एंट्री की फ़ुल सेल्फ़ आईडी को दिखाती हो.
यह उदाहरण, announcementpage
s के कॉन्टेंट फ़ीड पर क्वेरी करता है और सबसे पहले मिलने वाले कॉन्टेंट के नीचे एक नया announcement
बना देता है:
uri = '%s?kind=%s' % (client.MakeContentFeedUri(), 'announcementpage') feed = client.GetContentFeed(uri=uri) entry = client.CreatePage('announcement', 'Party!!', html='My place, this weekend', parent=feed.entry[0]) print 'Posted!'
फ़ाइलें अपलोड की जा रही हैं
Google Sites की तरह ही, यह एपीआई भी फ़ाइल कैबिनेट पेज या पैरंट पेज पर अटैचमेंट अपलोड करने की सुविधा देता है. अटैचमेंट को पैरंट पेज पर अपलोड किया जाना चाहिए. इसलिए, आपको ContentEntry
के लिए पैरंट लिंक सेट करना होगा. ज़्यादा जानकारी के लिए सबपेज बनाना देखें.
क्लाइंट लाइब्रेरी के UploadAttachment()
तरीके से, अटैचमेंट अपलोड करने के लिए इंटरफ़ेस मिलता है.
अटैचमेंट अपलोड हो रहे हैं
यह उदाहरण, उपयोगकर्ता के कॉन्टेंट फ़ीड में मिलने वाले पहले filecabinet
में PDF फ़ाइल अपलोड करता है.
अटैचमेंट को 'नए कर्मचारी हैंडबुक' टाइटल और 'एचआर पैकेट' ब्यौरे के साथ बनाया गया है. हालांकि, यह जानकारी देना ज़रूरी नहीं है.
uri = '%s?kind=%s' % (client.MakeContentFeedUri(),'filecabinet') feed = client.GetContentFeed(uri=uri) attachment = client.UploadAttachment('/path/to/file.pdf', feed.entry[0], content_type='application/pdf', title='New Employee Handbook', description='HR Packet') print 'Uploaded. View it at: %s' % attachment.GetAlternateLink().href
अगर अपलोड हो जाता है, तो attachment
में सर्वर पर, बनाए गए अटैचमेंट की कॉपी शामिल की जाएगी.
अटैचमेंट को किसी फ़ोल्डर में अपलोड करना
Google Sites में फ़ाइलकैबनेट, फ़ोल्डर का इस्तेमाल करने की सुविधा देते हैं. UploadAttachment()
एक अतिरिक्त कीवर्ड तर्क, folder_name
उपलब्ध कराता है, जिसका इस्तेमाल करके किसी अटैचमेंट को filecabinet
फ़ोल्डर में अपलोड किया जा सकता है. बस उस फ़ोल्डर का नाम बताएं:
import gdata.data ms = gdata.data.MediaSource(file_path='/path/to/file.pdf', content_type='application/pdf') attachment = client.UploadAttachment(ms, feed.entry[0], title='New Employee Handbook', description='HR Packet', folder_name='My Folder')
ध्यान दें कि यह उदाहरण, फ़ाइल पाथ के बजाय gdata.data.MediaSource
ऑब्जेक्ट को UploadAttachment()
को पास करता है. यह किसी कॉन्टेंट टाइप को भी पास नहीं करता. इसके बजाय, कॉन्टेंट का टाइप MediaSource ऑब्जेक्ट के लिए बताया गया है.
वेब अटैचमेंट
वेब अटैचमेंट खास तरह के अटैचमेंट होते हैं. मूल रूप से, वे वेब पर मौजूद अन्य फ़ाइलों के लिंक होते हैं
जिन्हें आप अपनी filecabinet
लिस्टिंग में जोड़ सकते हैं. यह सुविधा, Google Sites के यूज़र इंटरफ़ेस (यूआई) में 'यूआरएल से फ़ाइल जोड़ें' अपलोड करने वाले तरीके से मिलती-जुलती है.
ध्यान दें: वेब अटैचमेंट सिर्फ़ filecabinet
के तहत ही बनाए जा सकते हैं. उन्हें दूसरी तरह के पेजों पर अपलोड नहीं किया जा सकता.
इस उदाहरण से, उपयोगकर्ता के कॉन्टेंट फ़ीड में मिले पहले filecabinet
के तहत वेब अटैचमेंट बनता है.
इसका टाइटल और (ज़रूरी नहीं) ब्यौरा 'Googleलोगो' और 'अच्छे रंग' पर सेट है.
uri = '%s?kind=%s' % (client.MakeContentFeedUri(),'filecabinet') feed = client.GetContentFeed(uri=uri) parent_entry = feed.entry[0] image_url = 'http://www.google.com/images/logo.gif' web_attachment = client.CreateWebAttachment(image_url, 'image/gif', 'GoogleLogo', parent_entry, description='nice colors') print 'Created!'
कॉल, filecabinet
में 'http://www.google.com/images/logo.gif' पर मौजूद इमेज की ओर इशारा करने वाला एक लिंक बनाता है.
कॉन्टेंट अपडेट किया जा रहा है
किसी पेज का मेटाडेटा और/या एचटीएमएल कॉन्टेंट अपडेट करना
किसी भी तरह की एंट्री के मेटाडेटा (टाइटल, pageName वगैरह) और पेज के कॉन्टेंट में बदलाव करने के लिए, क्लाइंट के Update()
तरीके का इस्तेमाल किया जा सकता है.
नीचे दिए गए बदलावों के साथ listpage
को अपडेट करने का एक उदाहरण नीचे दिया गया है:
- टाइटल को बदलकर 'अपडेट किया गया टाइटल' कर दिया गया है
- पेज का एचटीएमएल कॉन्टेंट, 'अपडेट किए गए एचटीएमएल कॉन्टेंट' के तौर पर अपडेट किया गया है
- सूची के पहले कॉलम की हेडिंग को बदलकर "मालिक" कर दिया गया है
uri = '%s?kind=%s' % (client.MakeContentFeedUri(),'listpage') feed = client.GetContentFeed(uri=uri) old_entry = feed.entry[0] # Update the listpage's title, html content, and first column's name. old_entry.title.text = 'Updated Title' old_entry.content.html = 'Updated HTML Content' old_entry.data.column[0].name = 'Owner' # You can also change the page's webspace page name on an update. # old_entry.page_name = 'new-page-path' updated_entry = client.Update(old_entry) print 'List page updated!'
अटैचमेंट का कॉन्टेंट और मेटाडेटा बदलना
किसी अटैचमेंट की फ़ाइल के कॉन्टेंट को बदला जा सकता है. इसके लिए, फ़ाइल के नए कॉन्टेंट से नया MediaSource
ऑब्जेक्ट बनाएं और क्लाइंट के Update()
तरीके को कॉल करें. अटैचमेंट का मेटाडेटा (जैसे कि टाइटल और ब्यौरा) भी अपडेट किया जा सकता है या सिर्फ़ मेटाडेटा को भी अपडेट किया जा सकता है.
इस उदाहरण में, फ़ाइल का कॉन्टेंट और मेटाडेटा एक ही समय पर अपडेट किए जा रहे हैं:
import gdata.data # Load the replacement content in a MediaSource. Also change the attachment's title and description. ms = gdata.data.MediaSource(file_path='/path/to/replacementContent.doc', content_type='application/msword') existing_attachment.title.text = 'Updated Document Title' existing_attachment.summary.text = 'version 2.0' updated_attachment = client.Update(existing_attachment, media_source=ms) print "Attachment '%s' changed to '%s'" % (existing_attachment.title.text, updated_attachment.title.text)
कॉन्टेंट मिटाया जा रहा है
किसी Google साइट से कोई पेज या आइटम हटाने के लिए, पहले कॉन्टेंट एंट्री फिर से पाएं. इसके बाद, क्लाइंट के Delete()
तरीके को कॉल करें.
client.Delete(content_entry)
Delete()
तरीके का इस्तेमाल करके, कॉन्टेंट एंट्री का edit
लिंक भी पास किया जा सकता है और/या उसे ज़बरदस्ती मिटाया जा सकता है:
# force=True sets the If-Match: * header instead of using the entry's ETag. client.Delete(content_entry.GetEditLink().href, force=True)
ETag के बारे में ज़्यादा जानकारी के लिए, Google Data API रेफ़रंस गाइड देखें.
अटैचमेंट डाउनलोड किए जा रहे हैं
हर attachment
एंट्री में कॉन्टेंट src
का लिंक होता है. इसका इस्तेमाल फ़ाइल का कॉन्टेंट डाउनलोड करने के लिए किया जा सकता है.
Sites क्लाइंट में, इस लिंक से फ़ाइल को ऐक्सेस करने और डाउनलोड करने के लिए एक हेल्पर तरीका होता है: DownloadAttachment()
.
यह अपने पहले तर्क के लिए gdata.sites.data.ContentEntry
या डाउनलोड यूआरआई को स्वीकार करता है. साथ ही, अटैचमेंट को दूसरे तर्क के तौर पर सेव करने के लिए, फ़ाइल पाथ स्वीकार करता है.
यह उदाहरण एक खास अटैचमेंट एंट्री (इसके self
लिंक से क्वेरी करके) फ़ेच करता है और फ़ाइल को दिए गए पाथ पर डाउनलोड करता है:
uri = 'https://sites.google.com/feeds/content/site/siteName/1234567890' attachment = client.GetEntry(uri, desired_class=gdata.sites.data.ContentEntry) print "Downloading '%s', a %s file" % (attachment.title.text, attachment.content.type) client.DownloadAttachment(attachment, '/path/to/save/test.pdf') print 'Downloaded!'
यह ऐप्लिकेशन डेवलपर पर निर्भर करता है कि वह ऐसा फ़ाइल एक्सटेंशन तय करे जो अटैचमेंट के कॉन्टेंट टाइप के हिसाब से सही हो. कॉन्टेंट का टाइप, entry.content.type
में देखा जा सकता है.
कुछ मामलों में शायद आप डिस्क पर फ़ाइल डाउनलोड न कर पाएं (उदाहरण के लिए, अगर आपका ऐप्लिकेशन Google App Engine में चल रहा है).
इन स्थितियों में, फ़ाइल का कॉन्टेंट फ़ेच करने और उसे मेमोरी में सेव करने के लिए, _GetFileContent()
का इस्तेमाल करें.
डाउनलोड का यह उदाहरण, मेमोरी में मौजूद अटैचमेंट है.
try: file_contents = client._GetFileContent(attachment.content.src) # TODO: Do something with the file contents except gdata.client.RequestError, e: raise e
ACL फ़ीड
शेयर करने की अनुमतियों (एसीएल) की खास जानकारी
एसीएल फ़ीड की हर ACL एंट्री किसी खास इकाई, जैसे कि कोई उपयोगकर्ता, उपयोगकर्ताओं के समूह, डोमेन या डिफ़ॉल्ट ऐक्सेस (जो एक सार्वजनिक साइट है) की ऐक्सेस भूमिका के बारे में बताती है. सिर्फ़ साफ़ तौर पर ऐक्सेस वाली इकाइयों के लिए ही एंट्री दिखाई जाएंगी. हर ईमेल पते के लिए, Google Sites यूज़र इंटरफ़ेस (यूआई) की शेयरिंग स्क्रीन में "ऐक्सेस वाले लोग" पैनल में एक एंट्री दिखेगी. इसलिए, डोमेन एडमिन को नहीं दिखाया जाएगा, भले ही उनके पास साइट का इंप्लिसिट ऐक्सेस हो.
भूमिकाएं
भूमिका तत्व एक ऐक्सेस लेवल के बारे में बताता है, जो किसी इकाई के पास हो सकता है. gAcl:role
एलिमेंट की चार वैल्यू हो सकती हैं:
- रीडर — दर्शक (रीड ओनली ऐक्सेस के बराबर).
- लेखक — सहयोगी (पढ़ने/लिखने का ऐक्सेस) के बराबर.
- owner — आम तौर पर, साइट का एडमिन होता है. यह ऐक्सेस पढ़ने/लिखने के ऐक्सेस के बराबर होता है.
स्कोप
स्कोप एलिमेंट उस इकाई के बारे में बताता है जिसके पास यह ऐक्सेस लेवल है. gAcl:scope
एलिमेंट चार तरह के हो सकते हैं:
- user — कोई ई-मेल पता मान, उदाहरण के लिए "user@gmail.com".
- group — Google Group का ई-मेल पता, उदाहरण के लिए "group@domain.com".
- domain — G Suite का डोमेन नाम, जैसे कि "domain.com".
- डिफ़ॉल्ट — "डिफ़ॉल्ट" टाइप का सिर्फ़ एक संभावित स्कोप है, जिसका कोई वैल्यू नहीं होती है
(जैसे,
<gAcl:scope type="default">
). इस खास दायरा से उस ऐक्सेस को कंट्रोल किया जाता है जो किसी सार्वजनिक साइट पर, किसी उपयोगकर्ता को डिफ़ॉल्ट रूप से मिला होता है.
ध्यान दें: डोमेन में gAcl:role
वैल्यू को "मालिकाना हक" पर सेट नहीं किया जा सकता.
वे सिर्फ़ पाठक या लेखक हो सकते हैं.
एसीएल फ़ीड को वापस पाया जा रहा है
एसीएल फ़ीड का इस्तेमाल, किसी साइट को शेयर करने की अनुमतियों को कंट्रोल करने के लिए किया जा सकता है. साथ ही, इसे GetAclFeed()
तरीके से फ़ेच किया जा सकता है.
नीचे दिया गया उदाहरण, SitesClient
ऑब्जेक्ट पर अभी सेट की गई साइट के लिए एसीएल फ़ीड को फ़ेच करता है और अनुमति एंट्री को प्रिंट करता है:
print "Fetching acl permissions of site '%s'...\n" % client.site feed = client.GetAclFeed() for entry in feed.entry: print '%s (%s) - %s' % (entry.scope.value, entry.scope.type, entry.role.value)
क्वेरी का जवाब देने के बाद, feed
एक gdata.sites.data.AclFeed
ऑब्जेक्ट होगा. इसमें gdata.sites.data.AclEntry
की सूची होगी.
अगर आप SiteFeed की एंट्री के साथ काम कर रहे हैं, तो हर SiteEntry
में उसके ACL फ़ीड का लिंक होता है.
उदाहरण के लिए, यह स्निपेट उपयोगकर्ता के साइट फ़ीड में पहली साइट को फ़ेच करता है और अपने एसीएल फ़ीड से क्वेरी करता है:
feed = client.GetSiteFeed() site_entry = feed.entry[0] print "Fetching acl permissions of site '%s'...\n" % site_entry.site_name.text feed = client.GetAclFeed(uri=site_entry.FindAclLink())
साइट शेयर करना
ध्यान दें: शेयर करने की कुछ ACL तभी संभव हो सकते हैं जब डोमेन को ऐसी अनुमतियों की अनुमति देने के लिए कॉन्फ़िगर किया गया हो (उदाहरण के लिए अगर G Suite डोमेन के लिए डोमेन से बाहर शेयर करना चालू हो वगैरह).
एपीआई का इस्तेमाल करके Google साइट शेयर करने के लिए, अपनी पसंद की gdata.acl.data.AclScope
और gdata.acl.data.AclRole
वैल्यू के साथ gdata.sites.gdata.AclEntry
बनाएं. संभावित AclScope
और AclRoles
वैल्यू के लिए,
एसीएल फ़ीड की खास जानकारी सेक्शन देखें.
यह उदाहरण, 'user@example.com' उपयोगकर्ता को साइट पर पढ़ने की अनुमति देता है:
import gdata.acl.data scope = gdata.acl.data.AclScope(value='user@example.com', type='user') role = gdata.acl.data.AclRole(value='reader') acl = gdata.sites.gdata.AclEntry(scope=scope, role=role) acl_entry = client.Post(acl, client.MakeAclFeedUri()) print "%s %s added as a %s" % (acl_entry.scope.type, acl_entry.scope.value, acl_entry.role.value)
ग्रुप और डोमेन लेवल पर शेयर करने की सुविधा
एक उपयोगकर्ता के साथ साइट शेयर करने की तरह ही, किसी साइट को
Google ग्रुप या G Suite डोमेन में शेयर किया जा सकता है. scope
की ज़रूरी वैल्यू नीचे दी गई हैं.
किसी ग्रुप के ईमेल पते के साथ शेयर करने के लिए:
scope = gdata.acl.data.AclScope(value='group_name@example.com', type='group')
पूरे डोमेन के साथ शेयर करना:
scope = gdata.acl.data.AclScope(value='example.com', type='domain')
डोमेन लेवल पर शेयर करने की सुविधा सिर्फ़ G Suite डोमेन के लिए काम करती है. साथ ही, यह सिर्फ़ उस डोमेन के लिए काम करती है जिस पर साइट को होस्ट किया गया है. उदाहरण के लिए http://sites.google.com/a/domain1.com/siteA, पूरी साइट को सिर्फ़domain1.com के साथ शेयर कर सकता है, नहीं तोdomain2.com के साथ. ऐसी साइटें जिन्हें G Suite डोमेन (उदाहरण के लिए, http://sites.google.com/site/siteB) पर होस्ट नहीं किया गया है, डोमेन को न्योता नहीं भेज सकते.
शेयर करने की अनुमतियों में बदलाव किया जा रहा है
किसी साइट पर शेयर करने की मौजूदा अनुमति के लिए, सबसे पहले बताए गए AclEntry
को फ़ेच करें, ज़रूरत के मुताबिक अनुमति में बदलाव करें. इसके बाद, सर्वर पर एसीएल में बदलाव करने के लिए, क्लाइंट की Update()
तरीके को कॉल करें.
इस उदाहरण में, साइट शेयर करना सेक्शन से हमारे पिछले acl_entry
में बदलाव किया गया है. इसके लिए, 'user@example.com' को लेखक (सहयोगी) के तौर पर अपडेट किया गया है:
acl_entry.role.value = 'writer' updated_acl = client.Update(acl_entry) # To force the update, even if you do not have the latest changes to the entry: # updated_acl = client.Update(acl_entrys, force=True)
ETag के बारे में ज़्यादा जानकारी के लिए, Google Data API रेफ़रंस गाइड देखें.
शेयर करने की अनुमतियां हटाई जा रही हैं
शेयर करने की अनुमति हटाने के लिए, पहले AclEntry
को फिर से पाएं. इसके बाद, क्लाइंट के Delete()
तरीके को कॉल करें.
client.Delete(acl_entry)
Delete()
तरीके का इस्तेमाल करके, acl एंट्री के edit
लिंक को भी पास किया जा सकता है और/या उसे ज़बरदस्ती मिटाया जा सकता है:
# force=True sets the If-Match: * header instead of using the entry's ETag. client.Delete(acl_entry.GetEditLink().href, force=True)
ETag के बारे में ज़्यादा जानकारी के लिए, Google Data API रेफ़रंस गाइड देखें.
खास विषय
फ़ीड या एंट्री को फिर से फ़ेच करना
अगर आपको किसी ऐसी फ़ीड या एंट्री को वापस पाना है जिसे आपने पहले भी वापस पाया है, तो आप अपनी क्षमता को बेहतर बना सकते हैं. इसके लिए, सर्वर को सूची या एंट्री को सिर्फ़ तब भेजने के लिए कहें, जब उसे पिछली बार वापस लाने के बाद कोई बदलाव हुआ हो.
इस तरह के शर्त के साथ डेटा वापस पाने के लिए, GetEntry()
में ETag वैल्यू पास करें. उदाहरण के लिए, अगर आपके पास कोई मौजूदा entry
ऑब्जेक्ट था:
import gdata.client try: entry = client.GetEntry(entry.GetSelfLink().href, desired_class=gdata.sites.data.ContentEntry, etag=entry.etag) except gdata.client.NotModified, error: print 'You have the latest copy of this entry' print error
अगर GetEntry()
, gdata.client.NotModified
अपवाद को दिखाता है, तो एंट्री का ETag, सर्वर पर मौजूद वर्शन से मेल खाता है. इसका मतलब है कि आपके पास कॉपी की सबसे अप-टू-डेट कॉपी है.
हालांकि, अगर कोई दूसरा क्लाइंट/उपयोगकर्ता बदलाव करता है, तो नई एंट्री entry
में दिखेगी. साथ ही, कोई अपवाद लागू नहीं होगा.
ETag के बारे में ज़्यादा जानकारी के लिए, Google Data API रेफ़रंस गाइड देखें.