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

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

المتطلّبات

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

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

التعليمات

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

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

ستستخدم مثال الرمز الكامل للغة Python باعتباره رمز المصدر لهذا النموذج.

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

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

التعديلات

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

  1. تفعيل واجهة برمجة التطبيقات لخدمة Google Search Console بدلاً من 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. استبدل نص الدالة test_api_request() بالرمز التالي في لغة Python:

    @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 المطلوب لتشغيل نموذج التطبيق، جرِّب تعيين ذلك المتغير.