Python गाइड

अहम जानकारी: यह दस्तावेज़ 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

सर्वर, पेज के यूआरएल पाथ को नाम देने के लिए, प्राथमिकता के इन नियमों का इस्तेमाल करता है:

  1. page_name, अगर मौजूद है. a-z, A-Z, 0-9, -, _ को पूरा करना ज़रूरी है.
  2. 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 से जुड़ी रेफ़रंस गाइड देखें.

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