PageSpeed ​​Insights API V5 - PullRequest
       11

PageSpeed ​​Insights API V5

0 голосов
/ 05 декабря 2018

Здравствуйте, кодеры, я хочу интегрировать API для мобильных устройств и ПК с PageSpeed ​​Insights API V5.Но я не могу выделить раздел Аудит.Я пробовал также сценарии для отличия, но не смог.

Как дифференцировать Пройденные аудиты , Диагностика и Возможности в PageSpeed ​​Insights API V5.

Большое спасибо

Ответы [ 2 ]

0 голосов
/ 13 июня 2019

** Возможности: ** В ответе нет скомпилированного набора возможностей, но мы можем циклически пройти через lighthouseResult и для каждого json внутри lighthouseReslt извлекать результаты с type = возможностей, и он также должен содержать детали.

response = requests.get('https://www.googleapis.com/pagespeedonline/v5/runPagespeed?url='+<url>+'&strategy='+<desktop or mobile>+'&key='+<api_key>)
js = response.json()

print ("Score: ",js['lighthouseResult']['categories']['performance']['score']*100)

k = []

for m in js['lighthouseResult'] :

    try :
        for i in js['lighthouseResult'][m] :
            k.append([js['lighthouseResult'][m][i]['details'],js['lighthouseResult'][m][i]['title']])
    except :
        pass

final_opportunities = []

print (len(k))
for i in k :
    if 'overallSavingsMs' in list(i[0].keys()) :

        print (i[1],i[0]['overallSavingsMs'])
        final_opportunities.append([i[1] , i[0]['overallSavingsMs']])

Результаты аудита можно найти в: lighthouseResult.audits

Совокупная оценка производительности: response.lighthouseResult.categories.performance.score

Для реализации на Python,Вы можете обратиться к следующему репозиторию github: https://github.com/amartya-dev/PageSpeedAPI

0 голосов
/ 28 января 2019

Ниже приведен код, который использует маяк GoogleChrome для разграничения возможностей, диагностики и прошедших аудитов, который можно найти по ссылке ниже github.

// Opportunities
const opportunityAudits = category.auditRefs
        .filter(audit => audit.group === 'load-opportunities' && !Util.showAsPassed(audit.result))
        .sort((auditA, auditB) => this._getWastedMs(auditB) - this._getWastedMs(auditA));

// Diagnostics
const diagnosticAudits = category.auditRefs
        .filter(audit => audit.group === 'diagnostics' && !Util.showAsPassed(audit.result))
        .sort((a, b) => {
          const scoreA = a.result.scoreDisplayMode === 'informative' ? 100 : Number(a.result.score);
          const scoreB = b.result.scoreDisplayMode === 'informative' ? 100 : Number(b.result.score);
          return scoreA - scoreB;
        });

// Passed audits
const passedAudits = category.auditRefs
        .filter(audit => (audit.group === 'load-opportunities' || audit.group === 'diagnostics') &&
            Util.showAsPassed(audit.result));

Ссылка: https://github.com/GoogleChrome/lighthouse/blob/master/lighthouse-core/report/html/renderer/performance-category-renderer.js

В приведенном выше коде метод Util.showAsPassed () был указан следующим образом.

const PASS_THRESHOLD = 0.9;
const RATINGS = {
  PASS: {label: 'pass', minScore: PASS_THRESHOLD},
  AVERAGE: {label: 'average', minScore: 0.5},
  FAIL: {label: 'fail'},
  ERROR: {label: 'error'},
};

static showAsPassed(audit) {
    switch (audit.scoreDisplayMode) {
      case 'manual':
      case 'notApplicable':
        return true;
      case 'error':
      case 'informative':
        return false;
      case 'numeric':
      case 'binary':
      default:
        return Number(audit.score) >= RATINGS.PASS.minScore;
    }
  }

Ссылка: https://github.com/GoogleChrome/lighthouse/blob/master/lighthouse-core/report/html/renderer/util.js

Спасибо

...