commit 22c311f84e61c2b394a921cf9b62ff0f8239707f
parent 6fa22dfd068b6e3d1d650a54ea4a043c756246b7
Author: I Mean I'm Just Saying <imeanimjustsaying@kiwifarms.st>
Date: Wed, 15 Apr 2026 23:40:39 -0400
Use fs-extra more, increase MAX_HITS, sort list
Diffstat:
5 files changed, 18 insertions(+), 24 deletions(-)
diff --git a/app/TranscriptSearch.tsx b/app/TranscriptSearch.tsx
@@ -28,7 +28,7 @@ type HitGroup = {
hits: Hit[];
};
-const MAX_HITS = 200;
+const MAX_HITS = 500;
const urlListeners = new Set<() => void>();
function subscribeUrl(cb: () => void) {
diff --git a/app/page.tsx b/app/page.tsx
@@ -1,8 +1,4 @@
-import {
- listTranscripts,
- formatDate,
- formatDuration,
-} from "@/lib/transcripts";
+import { listTranscripts, formatDate, formatDuration } from "@/lib/transcripts";
import { getSettings } from "@/lib/settings";
import { PlayerProvider } from "./PlayerProvider";
import TranscriptModal from "./TranscriptModal";
@@ -35,12 +31,12 @@ export default async function Home() {
<TranscriptSearch transcripts={summaries} />
<section className="border-t border-zinc-200 dark:border-zinc-800 pt-4 text-sm text-zinc-500 flex gap-4">
<span>Downloads:</span>
- <a href="/code.tar.gz" className="underline hover:text-zinc-900 dark:hover:text-zinc-100">
+ <a
+ href="/code.tar.gz"
+ className="underline hover:text-zinc-900 dark:hover:text-zinc-100"
+ >
code.tar.gz
</a>
- <a href="/transcripts.tar.xz" className="underline hover:text-zinc-900 dark:hover:text-zinc-100">
- transcripts.tar.xz
- </a>
</section>
</div>
<TranscriptModal />
diff --git a/app/transcripts/[slug]/route.ts b/app/transcripts/[slug]/route.ts
@@ -2,8 +2,8 @@ import { listSlugs, loadTranscript } from "@/lib/transcripts";
export const dynamic = "force-static";
-export function generateStaticParams() {
- return listSlugs().map((slug) => ({ slug }));
+export async function generateStaticParams() {
+ return (await listSlugs()).map((slug) => ({ slug }));
}
export async function GET(
diff --git a/create-archives.sh b/create-archives.sh
@@ -2,7 +2,9 @@
git archive -9 --format tar.gz -o "./public/code.tar.gz" main
cd transcripts
+# Transcript archives are too big for CF pages (25mb)
+# Commands commented and kept just in case
# use xz over gz to get the file below 25MB
-git archive --format tar main | xz -9 > ../public/transcripts.tar.xz
+# git archive --format tar main | xz -9 > ../public/transcripts.tar.xz
# Uncomment this line to use .tar.gz for compatability and compression speed, but at a significantly higher file size
# git archive -9 --format tar.gz -o "../public/transcripts.tar.gz" main
diff --git a/lib/transcripts.ts b/lib/transcripts.ts
@@ -1,7 +1,6 @@
-import fs from "node:fs";
import path from "node:path";
import { parseVtt, type Cue } from "./vtt";
-import { readFile } from "fs-extra";
+import { readFile, readdir } from "fs-extra";
const ROOT = path.join(process.cwd(), "transcripts", "data");
@@ -59,17 +58,18 @@ function summarize(slug: string, meta: RawMetadata): TranscriptSummary {
};
}
-export function listSlugs(): string[] {
- return fs
- .readdirSync(ROOT, { withFileTypes: true })
+export async function listSlugs(): Promise<string[]> {
+ return (await readdir(ROOT, { withFileTypes: true }))
.filter((d) => d.isDirectory())
.map((d) => d.name)
- .sort();
+ .sort((a, b) => b.localeCompare(a));
}
export async function listTranscripts(): Promise<TranscriptSummary[]> {
return await Promise.all(
- listSlugs().map(async (slug) => summarize(slug, await readMetadata(slug))),
+ (await listSlugs()).map(async (slug) =>
+ summarize(slug, await readMetadata(slug)),
+ ),
);
}
@@ -79,8 +79,4 @@ export async function loadTranscript(slug: string): Promise<TranscriptDetail> {
return { ...summarize(slug, meta), cues };
}
-export async function loadAllTranscripts(): Promise<TranscriptDetail[]> {
- return Promise.all(listSlugs().map((slug) => loadTranscript(slug)));
-}
-
export { formatDate, formatDuration } from "./format";