summaryrefslogtreecommitdiff
path: root/cgithub/src/scraper.ts
diff options
context:
space:
mode:
authorJoe Mou <dev@mou.fo>2026-01-26 13:27:28 -0500
committerJoe Mou <dev@mou.fo>2026-01-26 17:23:43 -0500
commit744f42a2ae7968881e4d8f1ce0ec0d5209c8d7a4 (patch)
treefaae5626e0c6ef7c998af88d8056f462bddf7243 /cgithub/src/scraper.ts
parentfee5c6f6438316a8d407699370729ac2d0abd9d1 (diff)
Show releases
Diffstat (limited to 'cgithub/src/scraper.ts')
-rw-r--r--cgithub/src/scraper.ts10
1 files changed, 10 insertions, 0 deletions
diff --git a/cgithub/src/scraper.ts b/cgithub/src/scraper.ts
index c1bdef5..4ffdc43 100644
--- a/cgithub/src/scraper.ts
+++ b/cgithub/src/scraper.ts
@@ -54,6 +54,7 @@ export interface RepoInfo {
stars: string | null;
watchers: string | null;
forks: string | null;
+ numReleases?: number;
}
export interface GitHubRepo extends GitHubTree {
@@ -110,12 +111,21 @@ function parseRepoInfo(html: string): RepoInfo {
const watchersMatch = html.match(/<strong>(\d+)<\/strong>\s*watching/);
const forksMatch = html.match(/id="repo-network-counter"[^>]*>([^<]+)/);
+ let numReleases: number | undefined;
+ const releaseCountMatch = html.match(
+ /<a[^>]*href="[^"]*\/releases"[^>]*>[\s\S]*?<span[^>]*title="(\d+)"[^>]*(?:class="[^"]*Counter|data-view-component="true")[^>]*>/,
+ );
+ if (releaseCountMatch) {
+ numReleases = parseInt(releaseCountMatch[1], 10);
+ }
+
return {
description,
website: websiteMatch?.[1] || null,
stars: starsMatch?.[1]?.trim() || null,
watchers: watchersMatch?.[1] || null,
forks: forksMatch?.[1]?.trim() || null,
+ numReleases,
};
}