mirror of https://github.com/miguelmota/cointop
Add script to get homebrew and snapcraft metrics
parent
a3c81402e3
commit
e89c5e65f0
@ -0,0 +1,13 @@
|
||||
import requests
|
||||
|
||||
days = 30
|
||||
|
||||
# https://formulae.brew.sh/api/formula/cointop.json
|
||||
url = f'https://formulae.brew.sh/api/analytics/install/{days}d.json'
|
||||
|
||||
r = requests.get(url)
|
||||
data = r.json()
|
||||
entry = [x for x in data['items'] if x['formula'] == 'cointop'][0]
|
||||
total = entry['count']
|
||||
|
||||
print(total)
|
@ -0,0 +1,60 @@
|
||||
import configparser
|
||||
import pymacaroons
|
||||
import requests
|
||||
import json
|
||||
from datetime import date, timedelta
|
||||
|
||||
# Generate config with "package_metrics" ACL:
|
||||
# $ snapcraft export-login --snaps cointop --acls package_metrics --expires '2020-12-01 00:00:00' snapcraft.cfg
|
||||
config_path = 'snapcraft.cfg'
|
||||
days = 30
|
||||
|
||||
today = date.today()
|
||||
start = (today - timedelta(days=days)).strftime("%Y-%m-%d")
|
||||
end = today.strftime("%Y-%m-%d")
|
||||
|
||||
config = configparser.ConfigParser()
|
||||
config.read(config_path)
|
||||
|
||||
macaroon = config['login.ubuntu.com']['macaroon']
|
||||
unbound_discharge = config['login.ubuntu.com']['unbound_discharge']
|
||||
|
||||
root_macaroon = pymacaroons.Macaroon.deserialize(macaroon)
|
||||
unbound = pymacaroons.Macaroon.deserialize(unbound_discharge)
|
||||
bound = root_macaroon.prepare_for_request(unbound)
|
||||
discharge_macaroon_raw = bound.serialize()
|
||||
auth = "Macaroon root={}, discharge={}".format(macaroon, discharge_macaroon_raw)
|
||||
|
||||
# https://dashboard.snapcraft.io/docs/api/snap.html#obtaining-information-about-a-snap
|
||||
url = 'https://dashboard.snapcraft.io/dev/api/snaps/info/cointop'
|
||||
r = requests.get(url, headers={'Authorization': auth, 'Content-Type': 'application/json'})
|
||||
data = r.json()
|
||||
snap_id = data['snap_id']
|
||||
|
||||
# https://dashboard.snapcraft.io/docs/api/snap.html#post--dev-api-snaps-metrics
|
||||
url = 'https://dashboard.snapcraft.io/dev/api/snaps/metrics'
|
||||
payload = {
|
||||
'filters': [
|
||||
{
|
||||
'snap_id': snap_id,
|
||||
'metric_name': 'installed_base_by_channel',
|
||||
'start': start,
|
||||
'end': end
|
||||
}
|
||||
]
|
||||
}
|
||||
r = requests.post(
|
||||
url,
|
||||
data=json.dumps(payload),
|
||||
headers={
|
||||
'Authorization': auth,
|
||||
'Content-Type': 'application/json',
|
||||
'Accept': 'application/json'
|
||||
}
|
||||
)
|
||||
data = r.json()
|
||||
series = data['metrics'][0]['series']
|
||||
values = [x for x in series if x['name'] == 'stable'][0]['values']
|
||||
total = sum(values)
|
||||
|
||||
print(total)
|
Loading…
Reference in New Issue