96 by_format = collections.Counter()
97 by_month = collections.Counter()
98 by_release = collections.Counter()
101 tag = rel[
"tag_name"]
102 m = MONTH_TAG_RE.match(tag)
103 for a
in rel[
"assets"]:
104 n = int(a.get(
"download_count")
or 0)
105 month = m.group(1)
if m
else (a.get(
"created_at")
or "")[:7]
119 clones =
get_json(f
"{API}/repos/{REPO}/traffic/clones?per=day", token)
120 traffic = {c[
"timestamp"][:10]: {
"clones": c[
"count"],
"uniques": c[
"uniques"]}
for c
in clones.get(
"clones", [])}
121 except Exception
as e:
122 print(f
"traffic API unavailable ({e}); snapshot has no clone counts", file=sys.stderr)
126 hub =
get_json(f
"{DOCKER_HUB}/{DOCKER_IMAGE}/")
127 docker = {
"pull_count": int(hub.get(
"pull_count")
or 0),
"star_count": int(hub.get(
"star_count")
or 0)}
128 except Exception
as e:
129 print(f
"docker hub unreachable: {e}", file=sys.stderr)
132 "date": datetime.datetime.now(datetime.timezone.utc).strftime(
"%Y-%m-%d"),
134 "total": sum(by_format.values()),
136 "by_format": dict(sorted(by_format.items())),
137 "by_month": dict(sorted(by_month.items())),
138 "by_release": dict(sorted(by_release.items())),
140 "docker_hub": docker,
165 cmd = sys.argv[1]
if len(sys.argv) > 1
else ""
166 if cmd ==
"snapshot":
167 json.dump(
snapshot(os.environ.get(
"GITHUB_TOKEN")), sys.stdout, indent=1)
168 sys.stdout.write(
"\n")
169 elif cmd ==
"append" and len(sys.argv) == 4:
171 series = json.load(open(sys.argv[2], encoding=
"utf-8"))
172 except (FileNotFoundError, json.JSONDecodeError):
174 if not isinstance(series, list):
176 snap = json.load(open(sys.argv[3], encoding=
"utf-8"))
177 json.dump(
append(series, snap), sys.stdout, separators=(
",",
":"))
178 sys.stdout.write(
"\n")