如何验证我的Chrome扩展程序已发布/在给定版本中可用?

时间:2019-06-13 07:23:26

标签: google-chrome-extension deployment

我正在使用chrome-webstore-upload-cli将Chrome扩展程序自动部署到Chrome网上应用店。

webstore upload \
  --source dist/extension.zip \
  --extension-id $CHROME_STORE_EXT_ID \
  --client-id $CHROME_STORE_CLIENT_ID \
  --client-secret $CHROME_STORE_SECRET \
  --refresh-token $CHROME_STORE_REFRESH_TOKEN \
  --auto-publish

在大多数情况下,它可以正常工作;该扩展程序已上传并发布。

问题

但是,有时扩展名不会自动发布。相反,它是“待审核”,可能处于这种状态一两个小时:

由于我的部署脚本假定扩展程序一旦上传到网上商店后就对用户可用,因此会导致一行错误(例如,链接断开,版本号等)。

有什么方法可以通过编程方式检查 扩展名是否在给定版本中有效,或者何时可用?

我尝试过的

我尝试使用curl来查询允许用户下载扩展程序的Web Store站点的内容,但实际上它不包含版本字符串。至少“附加信息”标签是动态呈现的,而不是原始网站的源代码的一部分……

我还检查了Web Store API。它提供了一种Items.Get方法,但仅返回以下信息:

{
  "kind": "chromewebstore#item",
  "id": string,
  "publicKey": string,
  "uploadState": string,
  "itemError": [
    (value)
  ]
}

此数据不包含有关最新发布的版本或审阅状态的信息。而且无论如何,该请求只能与DRAFT资源一起使用。

2 个答案:

答案 0 :(得分:0)

源HTML包含if(localStorage.result) this.result = JSON.parse(localStorage.result); 个标记的版本,尤其是:

meta

现在,不应使用正则表达式解析HTML,因为这非常不稳定。但是出于这个问题的目的,以下方法可以正常工作:

<meta itemprop="version" content="1.20.1"/>

将扩展ID替换为您的ID。它只会打印版本(例如extId="abcdefg" curl -s -L "https://chrome.google.com/webstore/detail/$extId" | \ grep -o -E 'content="\d+\.\d+\.\d+"' | \ cut -d= -f2 | \ tr -d '"' )。


更稳定的解决方案是使用带有1.20.1requests的Python 3:

BeautifulSoup

答案 1 :(得分:0)

检测扩展版本不是那么难,你可以使用chrome-webstore

示例用法:

var webstore = require('chrome-webstore');

async function printVersion() {
  var details = await webstore.detail({id: '<your-package-id>'});


  // returns version
  console.log(details.version);
}

printVersion();