अहम जानकारी: यह दस्तावेज़ 2012 से पहले लिखा गया था. इस दस्तावेज़ में दिए गए पुष्टि करने के विकल्पों (OAuth 1.0, AuthSub, और ClientLogin) को 20 अप्रैल, 2012 से आधिकारिक रूप से बंद कर दिया गया है और अब ये विकल्प उपलब्ध नहीं हैं. हमारा सुझाव है कि आप जल्द से जल्द OAuth 2.0 पर माइग्रेट कर लें.
Google Sites Data API की मदद से, क्लाइंट ऐप्लिकेशन किसी Google साइट के कॉन्टेंट को ऐक्सेस, पब्लिश, और उसमें बदलाव कर सकते हैं. आपका क्लाइंट ऐप्लिकेशन, हाल की गतिविधि की सूची का अनुरोध भी कर सकता है. साथ ही, बदलाव का इतिहास फ़ेच कर सकता है और अटैचमेंट डाउनलोड कर सकता है.
इस गाइड में, Sites Data API की सुविधाओं के बारे में जानकारी दी गई है. साथ ही, Python क्लाइंट लाइब्रेरी का इस्तेमाल करके, एपीआई के साथ इंटरैक्ट करने के उदाहरण भी दिए गए हैं. क्लाइंट लाइब्रेरी को सेट अप करने में मदद पाने के लिए, Google Data Python क्लाइंट लाइब्रेरी का इस्तेमाल शुरू करने का तरीका देखें. अगर आपको क्लासिक Sites API के साथ इंटरैक्ट करने के लिए, 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 के क्लासिक वर्शन के एपीआई का इस्तेमाल करने का तरीका पता चलता है. इसलिए, कुछ कार्रवाइयां करने के लिए, आपको पुष्टि करनी होगी. जैसे, कॉन्टेंट में बदलाव करना. प्रोग्राम में, आपको 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 क्लाइंट लाइब्रेरी का इस्तेमाल, सार्वजनिक या निजी फ़ीड के साथ किया जा सकता है. Sites Data API, निजी और सार्वजनिक फ़ीड का ऐक्सेस देता है. यह ऐक्सेस, साइट की अनुमतियों और किए जा रहे ऑपरेशन के आधार पर मिलता है. उदाहरण के लिए, हो सकता है कि आपके पास किसी सार्वजनिक साइट के कॉन्टेंट फ़ीड को पढ़ने का ऐक्सेस हो, लेकिन उसमें बदलाव करने का ऐक्सेस न हो. ऐसा करने के लिए, पुष्टि किए गए क्लाइंट की ज़रूरत होती है. ऐसा ClientLogin उपयोगकर्ता नाम/पासवर्ड ऑथेंटिकेशन, AuthSub या OAuth के ज़रिए किया जा सकता है.
AuthSub, OAuth, और ClientLogin के बारे में ज़्यादा जानकारी के लिए, कृपया 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/
- secure, यह एक बूलियन वैल्यू है. इससे यह पता चलता है कि टोकन का इस्तेमाल सुरक्षित और रजिस्टर किए गए मोड में किया जाएगा या नहीं. ऊपर दिए गए उदाहरण में,
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)
का इस्तेमाल करें.
इंस्टॉल किए गए/मोबाइल ऐप्लिकेशन के लिए ClientLogin
ClientLogin का इस्तेमाल, इंस्टॉल किए गए या मोबाइल ऐप्लिकेशन के लिए किया जाना चाहिए. इन ऐप्लिकेशन को, उपयोगकर्ताओं के Google खातों की पुष्टि करनी होती है. पहली बार इस्तेमाल करने पर, आपका ऐप्लिकेशन उपयोगकर्ता से उसका उपयोगकर्ता नाम/पासवर्ड मांगता है. इसके बाद के अनुरोधों पर, पुष्टि करने वाले टोकन का रेफ़रंस दिया जाता है.
इंस्टॉल किए गए ऐप्लिकेशन में ClientLogin को शामिल करने के लिए निर्देश देखना
ClientLogin का इस्तेमाल करने के लिए, SitesClient
ऑब्जेक्ट के ClientLogin()
तरीके को शुरू करें. यह तरीका, GDClient
से इनहेरिट किया गया है. उस उपयोगकर्ता का ईमेल पता और पासवर्ड डालें जिसकी ओर से आपका क्लाइंट अनुरोध कर रहा है. उदाहरण के लिए:
client = gdata.sites.client.SitesClient(source='yourCo-yourAppName-v1') client.ClientLogin('user@gmail.com', 'pa$$word', client.source);
सलाह: जब आपका ऐप्लिकेशन पहली बार उपयोगकर्ता की पुष्टि कर ले, तो पुष्टि करने वाला टोकन अपने डेटाबेस में सेव कर लें, ताकि बाद में उसका इस्तेमाल किया जा सके. ऐप्लिकेशन को हर बार चलाने पर, उपयोगकर्ता से पासवर्ड मांगने की ज़रूरत नहीं है. ज़्यादा जानकारी के लिए, पुष्टि करने वाला टोकन वापस लेना लेख पढ़ें.
अपने Python ऐप्लिकेशन में ClientLogin का इस्तेमाल करने के बारे में ज़्यादा जानकारी के लिए, Google Data API क्लाइंट लाइब्रेरी के साथ ClientLogin का इस्तेमाल करना लेख देखें.
साइट फ़ीड
साइट फ़ीड का इस्तेमाल, उन 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
ऑब्जेक्ट के साथ रिस्पॉन्स देगा. इसमें सर्वर के जोड़े गए एलिमेंट शामिल होंगे: साइट का लिंक, साइट के acl फ़ीड का लिंक, साइट का नाम, टाइटल, खास जानकारी वगैरह.
साइट कॉपी करना
ध्यान दें: यह सुविधा सिर्फ़ 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 या ClientLogin टोकन का इस्तेमाल करके पुष्टि करनी होगी. Sites की सेवा के लिए पुष्टि करना देखें.
गतिविधि फ़ीड को फ़ेच करके, किसी साइट की हाल ही की गतिविधि (बदलाव) को फ़ेच किया जा सकता है.
लाइब्रेरी का 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 या ClientLogin टोकन का इस्तेमाल करके पुष्टि करनी होगी. Sites सेवा की पुष्टि करना लेख पढ़ें.
बदलाव फ़ीड में, किसी भी कॉन्टेंट एंट्री के बदलाव के इतिहास की जानकारी मिलती है. किसी कॉन्टेंट एंट्री में किए गए बदलावों को फ़ेच करने के लिए, 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.RevisionEntry
की सूची वाला gdata.sites.data.RevisionFeed
ऑब्जेक्ट दिखता है. बदलाव की हर एंट्री में, उस बदलाव का कॉन्टेंट, वर्शन नंबर, और नया वर्शन कब बनाया गया था जैसी जानकारी शामिल होती है.
कॉन्टेंट फ़ीड
कॉन्टेंट फ़ीड को फिर से वापस पाना
ध्यान दें: साइट की शेयर करने की अनुमतियों के आधार पर कॉन्टेंट फ़ीड के लिए पुष्टि करने की ज़रूरत हो भी सकती है और नहीं भी. अगर साइट सार्वजनिक नहीं है, तो आपके क्लाइंट को AuthSub, OAuth या ClientLogin टोकन का इस्तेमाल करके पुष्टि करनी होगी. 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
के तौर पर शामिल होगी.
बनाने के दौरान अपने-आप जानकारी भरने वाली ज़्यादा जटिल एंट्री टाइप बनाने के लिए, आपको gdata.sites.data.ContentEntry
को मैन्युअल तरीके से बनाना होगा. इसके बाद, अपनी पसंद की प्रॉपर्टी भरें और client.Post()
को कॉल करें. उदाहरण के लिए, कॉलम हेडिंग वाला listpage
.
कस्टम यूआरएल पाथ में आइटम/पेज बनाना
डिफ़ॉल्ट रूप से, पिछले उदाहरण को यूआरएल 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
के लिए कॉन्टेंट फ़ीड की क्वेरी की जाती है और पहले मिले announcementpage
के नीचे एक नया 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
के नीचे एक वेब अटैचमेंट बनाया गया है.
इसका टाइटल और (ज़रूरी नहीं) ब्यौरा, क्रमशः 'GoogleLogo' और 'nice colors' पर सेट है.
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' पर इमेज की ओर पॉइंट करता हुआ एक लिंक बनाता है.
कॉन्टेंट अपडेट करना
पेज का मेटाडेटा और/या एचटीएमएल कॉन्टेंट अपडेट करना
क्लाइंट के 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)
ईटीएग के बारे में ज़्यादा जानकारी के लिए, 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
एसीएल फ़ीड
शेयर करने की अनुमतियों (एसीएल) के बारे में खास जानकारी
एसीएल फ़ीड में मौजूद हर एसीएल एंट्री, किसी खास इकाई की ऐक्सेस भूमिका को दिखाती है. यह इकाई, उपयोगकर्ता, उपयोगकर्ताओं का ग्रुप, डोमेन या डिफ़ॉल्ट ऐक्सेस (जो एक सार्वजनिक साइट है) हो सकती है. एंट्री सिर्फ़ उन इकाइयों के लिए दिखेंगी जिनके पास साफ़ तौर पर ऐक्सेस है. Google Sites के यूज़र इंटरफ़ेस (यूआई) की शेयर करने की स्क्रीन में, "ऐक्सेस रखने वाले लोग" पैनल में हर ईमेल पते के लिए एक एंट्री दिखेगी. इसलिए, डोमेन एडमिन नहीं दिखाए जाएंगे, भले ही उनके पास किसी साइट का इंप्लिसिट ऐक्सेस हो.
भूमिकाएं
भूमिका एलिमेंट, किसी इकाई के ऐक्सेस लेवल को दिखाता है. gAcl:role
एलिमेंट की चार वैल्यू हो सकती हैं:
- रीडर — दर्शक (रीड-ओनली ऐक्सेस के बराबर).
- लेखक — सहयोगी (पढ़ने/लिखने का ऐक्सेस).
- मालिक — आम तौर पर, साइट एडमिन (रीड/राइट ऐक्सेस के बराबर).
स्कोप
स्कोप एलिमेंट, उस इकाई के बारे में बताता है जिसके पास यह ऐक्सेस लेवल है. gAcl:scope
एलिमेंट चार तरह के हो सकते हैं:
- user — ईमेल पते की वैल्यू, जैसे कि "user@gmail.com".
- group — Google ग्रुप का ईमेल पता, जैसे कि "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)
ई-टैग के बारे में ज़्यादा जानकारी के लिए, 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)
ईटीएग के बारे में ज़्यादा जानकारी के लिए, 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
में वापस आ जाएगी और कोई अपवाद नहीं दिखाया जाएगा.
ई-टैग के बारे में ज़्यादा जानकारी के लिए, Google Data API से जुड़ी रेफ़रंस गाइड देखें.