diff --git a/.gitignore b/.gitignore index 21d778a..3f0b188 100644 --- a/.gitignore +++ b/.gitignore @@ -22,6 +22,7 @@ snap stage *.snap *.xdelta3 +meta/metrics/snapcraft.cfg # flatpak files .flatpak-builder diff --git a/meta/metrics/homebrew_metrics.py b/meta/metrics/homebrew_metrics.py new file mode 100644 index 0000000..5860e0f --- /dev/null +++ b/meta/metrics/homebrew_metrics.py @@ -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) diff --git a/meta/metrics/snapcraft_metrics.py b/meta/metrics/snapcraft_metrics.py new file mode 100644 index 0000000..db8c60a --- /dev/null +++ b/meta/metrics/snapcraft_metrics.py @@ -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)