التشغيل السريع: تشغيل تطبيق Search Console في بايثون

يطبع نموذج تطبيق الويب هذا قائمة بالمواقع الإلكترونية التي يمكنك الوصول إليها وخرائط الموقع، إن وجدت، لكل موقع من هذه المواقع.

المتطلّبات

لتشغيل هذا البرنامج، ستحتاج إلى:

  • الاتصال بالإنترنت ومتصفّح الويب من أجل تفويض نموذج التطبيق
  • حساب Google يضم موقعًا إلكترونيًا واحدًا على الأقل تم إثبات ملكيته في Google Search Console.
  • لغة Python 3 وإطار عمل تطبيق الويب flask.

التعليمات

في هذا النموذج، عليك تعديل نموذج تطبيق OAuth 2.0 لتطبيقات خادم الويب. يستخدم نموذج تطبيق python هذا إطار عمل تطبيق الويب flask لتشغيل تطبيق مستند إلى الويب يدير مفاتيح OAuth ويطلب من Google Cloud API. عليك تعديل العيّنة المرتبطة لطلب Search Console API وطباعة النتائج على صفحة ويب.

اتّبِع تعليمات الإعداد في صفحة نموذج OAuth المرتبطة أعلاه، وانسخ نموذج الرمز، ثم عدِّل الرمز على النحو الموضّح أدناه. على وجه التحديد، عليك اتّباع تعليمات الإعداد الخاصة ببيئة الترميز وإعداد (أو إعادة استخدام) مشروع يمكنه الوصول إلى Search Console API في Google Cloud Console وإنشاء بيانات اعتماد لتطبيق ويب.

ستستخدم مثال Total code في Python باعتباره رمز المصدر لهذا النموذج.

يُرجى الاطّلاع على التعديلات أدناه لمعرفة التغييرات التي يجب إجراؤها على التعليمات المرتبطة.

إذا كنت بحاجة إلى الوصول إلى عميل Python لواجهة Google API من مشروع على Google App Engine، ستحتاج إلى استخدام حساب خدمة لإدارة أذوناتك.

التعديلات

عند اتّباع التعليمات الواردة في صفحة نموذج Oauth2 المرتبطة، يمكنك إجراء التغييرات التالية:

  1. تفعيل Google Search Console API بدلاً من Drive API
  2. انسخ نموذج الطلب في نهاية مستند OAUth المرتبط أعلاه، واستبدله

    SCOPES = ['https://www.googleapis.com/auth/drive.metadata.readonly']
    API_SERVICE_NAME = 'drive'
    API_VERSION = 'v2'
    
    بهذا:
    SCOPES = ['https://www.googleapis.com/auth/webmasters.readonly']
    API_SERVICE_NAME = 'searchconsole'
    API_VERSION = 'v1'
    

  3. استبدِل نص دالة لغة Python test_api_request() بالرمز التالي:

    @app.route('/test')
    def test_api_request():
      if 'credentials' not in flask.session:
        return flask.redirect('authorize')
    
      # Load credentials from the session.
      credentials = google.oauth2.credentials.Credentials(
          **flask.session['credentials'])
    
      # Retrieve list of properties in account
      search_console_service = googleapiclient.discovery.build(
          API_SERVICE_NAME, API_VERSION, credentials=credentials)
      site_list = search_console_service.sites().list().execute()
    
      # Filter for verified URL-prefix websites.
      verified_sites_urls = [s['siteUrl'] for s in site_list['siteEntry']
                            if s['permissionLevel'] != 'siteUnverifiedUser'
                            and s['siteUrl'].startswith('http')]
    
      # Print the sitemaps for all websites that you can access.
      results = '<!DOCTYPE html><html><body><table><tr><th>Verified site</th><th>Sitemaps</th></tr>'
      for site_url in verified_sites_urls:
    
        # Retrieve list of sitemaps submitted
        sitemaps = search_console_service.sitemaps().list(siteUrl=site_url).execute()
        results += '<tr><td>%s</td>' % (site_url)
    
        # Add a row with the site and the list of sitemaps
        if 'sitemap' in sitemaps:
          sitemap_list = "<br />".join([s['path'] for s in sitemaps['sitemap']])
        else:
          sitemap_list = "<i>None</i>"
        results += '<td>%s</td></tr>' % (sitemap_list)
    
      results += '</table></body></html>'
    
      # Save credentials back to session in case access token was refreshed.
      # ACTION ITEM: In a production app, you likely want to save these
      #              credentials in a persistent database instead.
      flask.session['credentials'] = credentials_to_dict(credentials)
    
      return results
    
    

  4. خلال الاختبارات التي أجريناها، كان علينا ضبط OAUTHLIB_INSECURE_TRANSPORT يدويًا على القيمة 1 في بيئة باش: export OAUTHLIB_INSECURE_TRANSPORT=1. إذا ظهرت لك أخطاء عن HTTPS المطلوب لتشغيل نموذج التطبيق، حاوِل ضبط هذا المتغيّر.