Как я могу проверить, что мое расширение Chrome было опубликовано / доступно в данной версии? - PullRequest
0 голосов
/ 13 июня 2019

Я использую chrome-webstore-upload-cli для автоматического развертывания расширения Chrome в Chrome Web Store.

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

В большинстве случаев это работает нормально;расширение загружено и опубликовано.

Проблема

Однако иногда расширение не публикуется автоматически.Вместо этого он «ожидает рассмотрения» и может находиться в этом состоянии в течение часа или двух:

image

Поскольку мои сценарии развертывания предполагают, что расширение будет доступно пользователям один разон загружается в интернет-магазин, это приводит к ошибкам в будущем (например, неработающие ссылки, номера версий и т. на самом деле доступно в данной версии или когда она есть?

Что я пробовал

Я пытался использовать curl для запроса содержимого сайта Интернет-магазинаэто позволяет пользователям загружать расширение, но на самом деле оно не содержит строку версии.По крайней мере, вкладка «Дополнительная информация» отображается динамически и не является частью исходного кода исходного сайта…

image

Я также проверил API Интернет-магазина .Он предлагает метод Items.Get, но возвращает только следующую информацию:

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

Эти данные не содержат информации о последней опубликованной версии или состоянии проверки.И в любом случае, запрос может использоваться только с DRAFT ресурсами.

1 Ответ

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

Исходный HTML содержит meta теги с версией, в частности:

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

Теперь не следует анализировать HTML с регулярными выражениями, поскольку это очень нестабильно.Но для целей этого вопроса хорошо работает следующее:

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.1).


Более стабильным решением будет использование, например, Python 3 с requests и BeautifulSoup:

import requests
from bs4 import BeautifulSoup

ext_id="abcdefg"
ret = requests.get("https://chrome.google.com/webstore/detail/" + ext_id)
soup = BeautifulSoup(ret.text, 'html.parser')
version = soup.find_all("meta", attrs={"itemprop": "version"})[0]["content"]
print(version)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...