fix: og image generation

This commit is contained in:
gosangam
2026-05-06 01:45:47 +05:30
parent de374eab8b
commit 7361f9c14a
28 changed files with 221 additions and 45 deletions
+4 -1
View File
@@ -9,6 +9,7 @@ import {
type BbdChapter,
type BbdSidebarItem,
} from "@/lib/bbd";
import { getProseChapter } from "@/lib/api";
import { ogForChapter, extractQuoteFromHl, buildOgMeta } from "@/lib/og";
import { BOOK_NAMES } from "@/lib/constants";
import { PageHeader } from "@/components/page-header";
@@ -29,8 +30,10 @@ export async function generateMetadata({
params: Promise<{ chapter: string }>;
searchParams: Promise<Record<string, string | string[] | undefined>>;
}): Promise<Metadata> {
const { chapter: slug } = await params;
const sp = await searchParams;
const hlQuote = extractQuoteFromHl(sp);
const chapter = await getProseChapter("bbd", 0, slug);
const hlQuote = extractQuoteFromHl(sp, chapter?.paragraphs);
if (hlQuote) {
return buildOgMeta({ title: BOOK_NAMES["bbd"], quote: hlQuote });
}
+8 -1
View File
@@ -18,7 +18,14 @@ export async function generateMetadata({
}): Promise<Metadata> {
const { chapter, verse } = await params;
const sp = await searchParams;
const quote = extractQuoteFromHl(sp);
const v = await getSingleVerse(
"bg",
null,
parseInt(chapter),
parseInt(verse),
);
const paragraphs = v ? [v.translation, ...v.purport] : undefined;
const quote = extractQuoteFromHl(sp, paragraphs);
if (quote) {
return buildOgMeta({
title: "Bhagavad-gītā As It Is",
+4 -1
View File
@@ -7,6 +7,7 @@ import {
type BkChapter,
type BkSidebarItem,
} from "@/lib/bk";
import { getProseChapter } from "@/lib/api";
import { ogForChapter, extractQuoteFromHl, buildOgMeta } from "@/lib/og";
import { BOOK_NAMES } from "@/lib/constants";
import { PageHeader } from "@/components/page-header";
@@ -25,8 +26,10 @@ export async function generateMetadata({
params: Promise<{ chapter: string }>;
searchParams: Promise<Record<string, string | string[] | undefined>>;
}): Promise<Metadata> {
const { chapter: slug } = await params;
const sp = await searchParams;
const hlQuote = extractQuoteFromHl(sp);
const chapter = await getProseChapter("bk", 0, slug);
const hlQuote = extractQuoteFromHl(sp, chapter?.paragraphs);
if (hlQuote) {
return buildOgMeta({ title: BOOK_NAMES["bk"], quote: hlQuote });
}
+3 -1
View File
@@ -123,7 +123,9 @@ export async function generateMetadata({
}): Promise<Metadata> {
const { chapter, verse } = await params;
const sp = await searchParams;
const quote = extractQuoteFromHl(sp);
const v = await getVerseWithFallback(parseInt(chapter), parseInt(verse));
const paragraphs = v ? [v.translation, ...v.purport] : undefined;
const quote = extractQuoteFromHl(sp, paragraphs);
if (quote) {
return buildOgMeta({
title: "Śrī Brahma-saṁhitā",
+4 -1
View File
@@ -7,6 +7,7 @@ import {
type CbhcChapter,
type CbhcSidebarItem,
} from "@/lib/cbhc";
import { getProseChapter } from "@/lib/api";
import { ogForChapter, extractQuoteFromHl, buildOgMeta } from "@/lib/og";
import { BOOK_NAMES } from "@/lib/constants";
import { PageHeader } from "@/components/page-header";
@@ -25,8 +26,10 @@ export async function generateMetadata({
params: Promise<{ chapter: string }>;
searchParams: Promise<Record<string, string | string[] | undefined>>;
}): Promise<Metadata> {
const { chapter: slug } = await params;
const sp = await searchParams;
const hlQuote = extractQuoteFromHl(sp);
const chapter = await getProseChapter("cbhc", 0, slug);
const hlQuote = extractQuoteFromHl(sp, chapter?.paragraphs);
if (hlQuote) {
return buildOgMeta({ title: BOOK_NAMES["cbhc"], quote: hlQuote });
}
@@ -32,7 +32,14 @@ export async function generateMetadata({
}): Promise<Metadata> {
const { lila, chapter, verse } = await params;
const sp = await searchParams;
const quote = extractQuoteFromHl(sp);
const v = await getSingleVerse(
"cc",
lila,
parseInt(chapter),
parseInt(verse),
);
const paragraphs = v ? [v.translation, ...v.purport] : undefined;
const quote = extractQuoteFromHl(sp, paragraphs);
if (quote) {
const bookTitle = "Śrī Caitanya-caritāmṛta";
return buildOgMeta({
+4 -1
View File
@@ -9,6 +9,7 @@ import {
type DsChapter,
type DsSidebarItem,
} from "@/lib/ds";
import { getProseChapter } from "@/lib/api";
import { ogForChapter, extractQuoteFromHl, buildOgMeta } from "@/lib/og";
import { BOOK_NAMES } from "@/lib/constants";
import { PageHeader } from "@/components/page-header";
@@ -29,8 +30,10 @@ export async function generateMetadata({
params: Promise<{ chapter: string }>;
searchParams: Promise<Record<string, string | string[] | undefined>>;
}): Promise<Metadata> {
const { chapter: slug } = await params;
const sp = await searchParams;
const hlQuote = extractQuoteFromHl(sp);
const chapter = await getProseChapter("ds", 0, slug);
const hlQuote = extractQuoteFromHl(sp, chapter?.paragraphs);
if (hlQuote) {
return buildOgMeta({ title: BOOK_NAMES["ds"], quote: hlQuote });
}
+4 -1
View File
@@ -9,6 +9,7 @@ import {
type EjChapter,
type EjSidebarItem,
} from "@/lib/ej";
import { getProseChapter } from "@/lib/api";
import { ogForChapter, extractQuoteFromHl, buildOgMeta } from "@/lib/og";
import { BOOK_NAMES } from "@/lib/constants";
import { PageHeader } from "@/components/page-header";
@@ -29,8 +30,10 @@ export async function generateMetadata({
params: Promise<{ chapter: string }>;
searchParams: Promise<Record<string, string | string[] | undefined>>;
}): Promise<Metadata> {
const { chapter: slug } = await params;
const sp = await searchParams;
const hlQuote = extractQuoteFromHl(sp);
const chapter = await getProseChapter("ej", 0, slug);
const hlQuote = extractQuoteFromHl(sp, chapter?.paragraphs);
if (hlQuote) {
return buildOgMeta({ title: BOOK_NAMES["ej"], quote: hlQuote });
}
+4 -1
View File
@@ -9,6 +9,7 @@ import {
type EkChapter,
type EkSidebarItem,
} from "@/lib/ek";
import { getProseChapter } from "@/lib/api";
import { ogForChapter, extractQuoteFromHl, buildOgMeta } from "@/lib/og";
import { BOOK_NAMES } from "@/lib/constants";
import { PageHeader } from "@/components/page-header";
@@ -29,8 +30,10 @@ export async function generateMetadata({
params: Promise<{ chapter: string }>;
searchParams: Promise<Record<string, string | string[] | undefined>>;
}): Promise<Metadata> {
const { chapter: slug } = await params;
const sp = await searchParams;
const hlQuote = extractQuoteFromHl(sp);
const chapter = await getProseChapter("ek", 0, slug);
const hlQuote = extractQuoteFromHl(sp, chapter?.paragraphs);
if (hlQuote) {
return buildOgMeta({ title: BOOK_NAMES["ek"], quote: hlQuote });
}
+4 -1
View File
@@ -7,6 +7,7 @@ import {
type GgChapter,
type GgSidebarItem,
} from "@/lib/gg";
import { getProseChapter } from "@/lib/api";
import { ogForChapter, extractQuoteFromHl, buildOgMeta } from "@/lib/og";
import { BOOK_NAMES } from "@/lib/constants";
import { PageHeader } from "@/components/page-header";
@@ -25,8 +26,10 @@ export async function generateMetadata({
params: Promise<{ chapter: string }>;
searchParams: Promise<Record<string, string | string[] | undefined>>;
}): Promise<Metadata> {
const { chapter: slug } = await params;
const sp = await searchParams;
const hlQuote = extractQuoteFromHl(sp);
const chapter = await getProseChapter("gg", 0, slug);
const hlQuote = extractQuoteFromHl(sp, chapter?.paragraphs);
if (hlQuote) {
return buildOgMeta({ title: BOOK_NAMES["gg"], quote: hlQuote });
}
+4 -1
View File
@@ -9,6 +9,7 @@ import {
type HkhChapter,
type HkhSidebarItem,
} from "@/lib/hkh";
import { getProseChapter } from "@/lib/api";
import { ogForChapter, extractQuoteFromHl, buildOgMeta } from "@/lib/og";
import { BOOK_NAMES } from "@/lib/constants";
import { PageHeader } from "@/components/page-header";
@@ -29,8 +30,10 @@ export async function generateMetadata({
params: Promise<{ chapter: string }>;
searchParams: Promise<Record<string, string | string[] | undefined>>;
}): Promise<Metadata> {
const { chapter: slug } = await params;
const sp = await searchParams;
const hlQuote = extractQuoteFromHl(sp);
const chapter = await getProseChapter("hkh", 0, slug);
const hlQuote = extractQuoteFromHl(sp, chapter?.paragraphs);
if (hlQuote) {
return buildOgMeta({ title: BOOK_NAMES["hkh"], quote: hlQuote });
}
+9 -3
View File
@@ -46,7 +46,15 @@ export async function generateMetadata({
const { mantra: slug } = await params;
const sp = await searchParams;
const quote = extractQuoteFromHl(sp);
const content = await getIsoContent(slug);
const isVerse_ = content && "mantra" in content && "devanagari" in content;
const paragraphs = content
? isVerse_
? [(content as IsoVerse).translation, ...(content as IsoVerse).purport]
: (content as IsoIntroSegment).paragraphs
: undefined;
const quote = extractQuoteFromHl(sp, paragraphs);
if (quote) {
return buildOgMeta({
title: "Śrī Īśopaniṣad",
@@ -55,8 +63,6 @@ export async function generateMetadata({
});
}
const content = await getIsoContent(slug);
const isVerse_ = content && "mantra" in content && "devanagari" in content;
const title = isVerse_
? `${(content as IsoVerse).reference}: ${(content as IsoVerse).title}`
: content && "title" in content
+1 -1
View File
@@ -24,7 +24,7 @@ export async function generateMetadata({
const sp = await searchParams;
const vol = parseInt(volume);
const chapter = !isNaN(vol) ? await getProseChapter("kb", vol, slug) : null;
const hlQuote = extractQuoteFromHl(sp);
const hlQuote = extractQuoteFromHl(sp, chapter?.paragraphs);
if (hlQuote) {
return buildOgMeta({
title: BOOK_NAMES["kb"],
+4 -1
View File
@@ -9,6 +9,7 @@ import {
type LclChapter,
type LclSidebarItem,
} from "@/lib/lcl";
import { getProseChapter } from "@/lib/api";
import { ogForChapter, extractQuoteFromHl, buildOgMeta } from "@/lib/og";
import { BOOK_NAMES } from "@/lib/constants";
import { PageHeader } from "@/components/page-header";
@@ -29,8 +30,10 @@ export async function generateMetadata({
params: Promise<{ chapter: string }>;
searchParams: Promise<Record<string, string | string[] | undefined>>;
}): Promise<Metadata> {
const { chapter: slug } = await params;
const sp = await searchParams;
const hlQuote = extractQuoteFromHl(sp);
const chapter = await getProseChapter("lcl", 0, slug);
const hlQuote = extractQuoteFromHl(sp, chapter?.paragraphs);
if (hlQuote) {
return buildOgMeta({ title: BOOK_NAMES["lcl"], quote: hlQuote });
}
+4 -1
View File
@@ -9,6 +9,7 @@ import {
type LobChapter,
type LobSidebarItem,
} from "@/lib/lob";
import { getProseChapter } from "@/lib/api";
import { ogForChapter, extractQuoteFromHl, buildOgMeta } from "@/lib/og";
import { BOOK_NAMES } from "@/lib/constants";
import { PageHeader } from "@/components/page-header";
@@ -25,8 +26,10 @@ export async function generateMetadata({
params: Promise<{ chapter: string }>;
searchParams: Promise<Record<string, string | string[] | undefined>>;
}): Promise<Metadata> {
const { chapter: slug } = await params;
const sp = await searchParams;
const hlQuote = extractQuoteFromHl(sp);
const chapter = await getProseChapter("lob", 0, slug);
const hlQuote = extractQuoteFromHl(sp, chapter?.paragraphs);
if (hlQuote) {
return buildOgMeta({ title: BOOK_NAMES["lob"], quote: hlQuote });
}
+4 -1
View File
@@ -9,6 +9,7 @@ import {
type MgChapter,
type MgSidebarItem,
} from "@/lib/mg";
import { getProseChapter } from "@/lib/api";
import { ogForChapter, extractQuoteFromHl, buildOgMeta } from "@/lib/og";
import { BOOK_NAMES } from "@/lib/constants";
import { PageHeader } from "@/components/page-header";
@@ -25,8 +26,10 @@ export async function generateMetadata({
params: Promise<{ chapter: string }>;
searchParams: Promise<Record<string, string | string[] | undefined>>;
}): Promise<Metadata> {
const { chapter: slug } = await params;
const sp = await searchParams;
const hlQuote = extractQuoteFromHl(sp);
const chapter = await getProseChapter("mg", 0, slug);
const hlQuote = extractQuoteFromHl(sp, chapter?.paragraphs);
if (hlQuote) {
return buildOgMeta({ title: BOOK_NAMES["mg"], quote: hlQuote });
}
+3 -1
View File
@@ -26,7 +26,9 @@ export async function generateMetadata({
}): Promise<Metadata> {
const { chapter, verse } = await params;
const sp = await searchParams;
const quote = extractQuoteFromHl(sp);
const v = await getVerseWithFallback(parseInt(chapter), parseInt(verse));
const paragraphs = v ? [v.translation, ...v.purport] : undefined;
const quote = extractQuoteFromHl(sp, paragraphs);
if (quote) {
return buildOgMeta({
title: "Mukunda-mālā-stotra",
+8 -1
View File
@@ -123,7 +123,14 @@ export async function generateMetadata({
}): Promise<Metadata> {
const { chapter, verse } = await params;
const sp = await searchParams;
const quote = extractQuoteFromHl(sp);
const v = await getSingleVerse(
"nbs",
null,
parseInt(chapter),
parseInt(verse),
);
const paragraphs = v ? [v.translation, ...v.purport] : undefined;
const quote = extractQuoteFromHl(sp, paragraphs);
if (quote) {
return buildOgMeta({
title: "Nārada-bhakti-sūtra",
+13 -1
View File
@@ -46,7 +46,19 @@ export async function generateMetadata({
const { text: slug } = await params;
const sp = await searchParams;
const quote = extractQuoteFromHl(sp);
const content = await getNoiContent(slug);
let paragraphs: string[] | undefined;
if (content) {
if ("devanagari" in content) {
// It's a verse
paragraphs = [content.translation, ...content.purport];
} else if ("paragraphs" in content) {
// It's an intro segment
paragraphs = content.paragraphs;
}
}
const quote = extractQuoteFromHl(sp, paragraphs);
if (quote) {
return buildOgMeta({
title: "The Nectar of Instruction",
@@ -31,7 +31,14 @@ export async function generateMetadata({
}): Promise<Metadata> {
const { canto, chapter, verse } = await params;
const sp = await searchParams;
const quote = extractQuoteFromHl(sp);
const v = await getSingleVerse(
"sb",
canto,
parseInt(chapter),
parseInt(verse),
);
const paragraphs = v ? [v.translation, ...v.purport] : undefined;
const quote = extractQuoteFromHl(sp, paragraphs);
if (quote) {
return buildOgMeta({
title: "Śrīmad-Bhāgavatam",
+8 -1
View File
@@ -26,7 +26,14 @@ export async function generateMetadata({
}): Promise<Metadata> {
const { chapter, verse } = await params;
const sp = await searchParams;
const quote = extractQuoteFromHl(sp);
const v = await getSingleVerse(
"sb1962",
null,
parseInt(chapter),
parseInt(verse),
);
const paragraphs = v ? [v.translation, ...v.purport] : undefined;
const quote = extractQuoteFromHl(sp, paragraphs);
if (quote) {
return buildOgMeta({
title: "Śrīmad-Bhāgavatam (1962)",
+1 -1
View File
@@ -104,7 +104,7 @@ export async function generateMetadata({
const essay = await getEssay(slug);
if (!essay) return {};
const hlQuote = extractQuoteFromHl(sp);
const hlQuote = extractQuoteFromHl(sp, essay.paragraphs);
if (hlQuote) {
return buildOgMeta({
title: essay.title,
+1 -1
View File
@@ -37,7 +37,7 @@ export async function generateMetadata({
const journalTitle = meta?.title || slug;
const entryTitle = content?.title || chapterSlug;
const quote = extractQuoteFromHl(sp);
const quote = extractQuoteFromHl(sp, content?.paragraphs);
if (quote) {
return buildOgMeta({
title: journalTitle,
+1 -1
View File
@@ -24,7 +24,7 @@ export async function generateMetadata({
if (!letter) return {};
const meta = [letter.date, letter.location].filter(Boolean).join(" · ");
const hlQuote = extractQuoteFromHl(sp);
const hlQuote = extractQuoteFromHl(sp, letter.paragraphs);
if (hlQuote) {
return buildOgMeta({
+7 -7
View File
@@ -29,19 +29,19 @@ export async function generateMetadata({
const sp = await searchParams;
const bookCode = slugToBookCode(slug);
const quote = extractQuoteFromHl(sp);
if (quote) {
const meta = await getMagazineMeta(bookCode);
const title = meta?.title ?? slug;
return buildOgMeta({ title, quote });
}
const [meta, content] = await Promise.all([
getMagazineMeta(bookCode),
getMagazineContent(bookCode, issueSlug),
]);
const magTitle = meta?.title ?? slug;
const paragraphs = content?.paragraphs;
const quote = extractQuoteFromHl(sp, paragraphs);
if (quote) {
return buildOgMeta({ title: magTitle, quote });
}
const issueTitle = content?.title ?? undefined;
return ogForMagazine(magTitle, issueTitle);
@@ -33,20 +33,19 @@ export async function generateMetadata({
const sp = await searchParams;
const bookCode = slugToBookCode(slug);
const quote = extractQuoteFromHl(sp);
if (quote) {
const meta = await getOtherDocumentMeta(bookCode);
const content = await getOtherDocumentContent(bookCode, chapterSlug);
const title = meta?.title ?? slug;
const detail = content?.title ?? `Chapter ${chapterSlug}`;
return buildOgMeta({ title, detail, quote });
}
const [meta, content] = await Promise.all([
getOtherDocumentMeta(bookCode),
getOtherDocumentContent(bookCode, chapterSlug),
]);
const paragraphs = content?.paragraphs;
const quote = extractQuoteFromHl(sp, paragraphs);
if (quote) {
const title = meta?.title ?? slug;
const detail = content?.title ?? `Chapter ${chapterSlug}`;
return buildOgMeta({ title, detail, quote });
}
return ogForOtherDocument(meta?.title ?? slug, content?.title ?? undefined);
}