google-pagespeed - Google pagespeed v5 是否删除了屏幕截图支持?
问题描述
Google Pagespeed v4 每天使用“屏幕截图”来归档我们的报纸网站,直到本周三。如果他们删除了对“field=screenshot”的支持,但它不再返回 JSON,我找不到任何信息。有没有新的截屏方法,还是没了?
private function capture_thumbnail(){
if(false === $data = file_get_contents('https://www.googleapis.com/pagespeedonline/v5/runPagespeed?url=' . $this->url . '&filter_third_party_resources=true&screenshot=true&strategy=desktop&fields=screenshot&key=' . $this->google_server_api_key))
throw new Exception('Could not get url contents');
$data = json_decode($data, true);
if(empty($data['screenshot']['data']))
throw new Exception('Screenshot data empty');
$image = str_replace(
array('_', '-'),
array('/', '+'),
$data['screenshot']['data']
);
$dir = SCREENSHOTS_DIR . date(CAPTURE_DIR_DATE_FORMAT) . '/';
if(false === file_exists($dir)){
if(false === mkdir($dir))
throw new Exception('Could not create screenshot directory');
}
if(false === file_put_contents($dir . date('H') . '.jpg', base64_decode($image)))
throw new Exception('Could not save image');
}
}
解决方案
可以通过两种方式访问屏幕截图。
最终截图
如果您只想要最终的屏幕截图,它是$data['lighthouseResult']['audits']['final-screenshot']
.
我在下面包含了相关的 JSON,您可以看到它位于“最终屏幕截图”中,如['details']['data']
.
"final-screenshot": {
"id": "final-screenshot",
"title": "Final Screenshot",
"description": "The last screenshot captured of the pageload.",
"score": null,
"scoreDisplayMode": "informative",
"details": {
"timing": 1396,
"timestamp": 1155417931434,
"data": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAA...etc...==",
"type": "screenshot"
}
},
时间线屏幕截图/幻灯片以显示加载进度
如果您希望缩略图显示加载进度,它是$data['lighthouseResult']['audits']['screenshot-thumbnails']
我再次包含了相关的 JSON 数据,因此您可以看到它的结构,但我将把它留给您来解码。
"screenshot-thumbnails": {
"id": "screenshot-thumbnails",
"title": "Screenshot Thumbnails",
"description": "This is what the load of your site looked like.",
"score": null,
"scoreDisplayMode": "informative",
"details": {
"type": "filmstrip",
"items": [
{
"timing": 300,
"timestamp": 1155416835809,
"data": "data:image/jpeg;base64,/9j/4AAQSkZJ..etc.."
},
{
"timestamp": 1155417135809,
"data": "data:image/jpeg;base64,/9j/4AAQSkZJdsAPmRx/xKrPgA...etc...RLP//Z",
"timing": 600
},
{
"timestamp": 1155417435809,
"data": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQ...etc...XItzzvtHoujj/iVWfAAMKHA9SOa9GPwoyl8TLbnAqiWf//Z",
"timing": 900
},
{
"timing": 1200,
"timestamp": 1155417735809,
"data": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQA...etc....qiWf//Z"
},
{
"timestamp": 1155418035809,
"data": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD...etc...sIbgvYpnjchJuJieTvPP41yLc877R6Lo4/4lVnwADChwPUjmvRj8KMpfEy25wKoln//2Q==",
"timing": 1500
},
{
"timing": 1800,
"timestamp": 1155418335809,
"data": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQA...etc....ADChwPUjmvRj8KMpfEy25wKoln//2Q=="
},
{
"timing": 2100,
"timestamp": 1155418635809,
"data": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQA...etc...vPP41yLc877R6Lo4/4lVnwADChwPUjmvRj8KMpfEy25wKoln//2Q=="
},
{
"timing": 2400,
"timestamp": 1155418935809,
"data": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQA...etc...Ey25wKoln//2Q=="
},
{
"timing": 2700,
"timestamp": 1155419235809,
"data": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQA...etc...6Lo4/4lVnwADChwPUjmvRj8KMpfEy25wKoln//2Q=="
},
{
"timing": 3000,
"timestamp": 1155419535809,
"data": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAchJ...etc...VnwADChwPUjmvRj8KMpfEy25wKoln//2Q=="
}
],
"scale": 3000
}
},
推荐阅读
- python - ValueError:使用序列设置数组元素。如何将我的功能重新排列到 np.arrays?
- java - 转换为泛型类型并调用 doubleValue() 方法
- javascript - 将 innerHTML 切换为不同的值 onclick()
- python - PYTHON:在文本文件中搜索一个单词,其中包含单词之间的空格
- r - r:提取和填充具有多个后续日期的行上缺失日期的函数
- entity-framework - Entity Framework Core 多对多设计问题
- python - 如何在浏览器中显示我的 HTML 文件?我已经成功连接服务器和客户端
- google-cloud-platform - 无法使用 GPU 创建 GCP 深度学习 VM 实例
- java - 在java中替换数组中的多个字母
- html - 单击时旋转字体真棒 90 图标