chore: merge origin/main

This commit is contained in:
Abdessamad Derraz committed 2026-11-06 18:38:12 +01:00
commit bbfea602f4
3 files changed
+16 -4

No files matched your search

+3
View File
@@ -7398,6 +7398,9 @@ SYSTEM_PAGES_MOVED = {
"systems/arcade-sharp-mz-2500.md": "systems/sharp.md",
"systems/arcade-miuchiz.md": "systems/arcade.md",
"systems/arcade-yamaha-ym2608.md": "systems/arcade.md",
# Oric is filed under its maker since 2026-10-23, and a reader still
# followed the old address to the 404 page.
"systems/oric.md": "systems/tangerine.md#oric",
"systems/other-scummvm.md": "systems/scummvm.md",
"systems/other-sdlpal.md": "systems/sdlpal.md",
"systems/sega-dreamcast.md": "systems/sega.md",
+10 -3
View File
@@ -139,8 +139,14 @@ def fetch_goatcounter(start: dt.date, end: dt.date) -> dict[str, list[tuple[str,
if not answer.get("more"):
break
refs = _get_json(f"{GOATCOUNTER}/stats/toprefs?{urllib.parse.urlencode({**span, 'limit': 50})}", auth)
referrers = [(r.get("name") or "(direct)", int(r["count"])) for r in refs.get("stats", [])]
return {"hits": hits, "referrers": referrers}
total = _get_json(f"{GOATCOUNTER}/stats/total?{urllib.parse.urlencode(span)}", auth)
# An action carries no referrer, and GoatCounter files it as a direct
# visit: 592 of the first day's 1,145 "direct" were clicks.
events = int(total.get("total_events", 0))
referrers = [("(direct)", max(int(r["count"]) - events, 0)) if not r.get("name") else (r["name"], int(r["count"]))
for r in refs.get("stats", [])]
return {"hits": hits, "referrers": sorted(referrers, key=lambda row: -row[1]),
"visits": int(total.get("total", 0)) - events, "actions": events}
def fetch_github() -> dict:
@@ -246,7 +252,8 @@ def report(start: dt.date, end: dt.date, queries: list[Query] | None, goat: dict
"helpful": "Did this page help?", "get": "Pack pages opened",
"download": "Release downloads", "file": "File downloads", "copy": "Copy buttons",
"out": "Links leaving the site", "pages": "Pages"}
out += ["## On the site", ""]
out += ["## On the site", "",
f"{goat.get('visits', 0):,} page views, {goat.get('actions', 0):,} actions.", ""]
for kind, title in named.items():
if kind in actions:
out += [f"### {title}", "", *_table(("Name", "Visits"), [(n, f"{c:,}") for n, c in actions[kind]])]
+3 -1
View File
@@ -1189,7 +1189,8 @@ class EnginesGoByEngine(unittest.TestCase):
def test_moved_pages_redirect(self) -> None:
if not SYSTEMS.is_dir():
self.skipTest("pages not generated")
for old, new in gs.SYSTEM_PAGES_MOVED.items():
for old, target in gs.SYSTEM_PAGES_MOVED.items():
new = target.partition("#")[0]
self.assertFalse((CONTENT / old).exists() or (CONTENT / old).with_suffix(".mdx").exists(), old)
# A page with tabs is written as MDX.
self.assertTrue((CONTENT / new).exists() or (CONTENT / new).with_suffix(".mdx").exists(), new)
@@ -1197,6 +1198,7 @@ class EnginesGoByEngine(unittest.TestCase):
if redirects.is_file():
table = json.loads(redirects.read_text(encoding="utf-8"))
self.assertEqual(table.get("/systems/other-scummvm/"), "/systems/scummvm/")
self.assertEqual(table.get("/systems/oric/"), "/systems/tangerine/#oric")
class OneLabelOnceOnABoardPage(unittest.TestCase):