Spaces:
Running
Running
File size: 2,133 Bytes
1f122c3 1185ec1 9cea1bb 1f122c3 3d4392e 761239a ac7030c 761239a ac7030c 761239a ac7030c 761239a ac7030c 761239a ac7030c 761239a d5b583f 761239a ac7030c 761239a ac7030c 761239a ac7030c 761239a 1f122c3 9cea1bb 3d4392e 8f2b05f 1f122c3 3d4392e 1f122c3 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 |
import { AppQueryProps } from "@/types/general"
import { Main } from "./main"
import { getVideo } from "./api/actions/ai-tube-hf/getVideo"
import { Metadata, ResolvingMetadata } from "next"
export async function generateMetadata(
{ params, searchParams: { v: videoId } }: AppQueryProps,
parent: ResolvingMetadata
): Promise<Metadata> {
// read route params
const metadataBase = new URL('https://huggingface.co/spaces/jbilcke-hf/ai-tube')
if (!videoId) {
return {
title: `🍿 AiTube`,
metadataBase,
openGraph: {
type: "website",
// url: "https://example.com",
title: "AiTube",
description: "The first fully AI generated video platform",
siteName: "🍿 AiTube",
videos: [],
images: [],
},
}
}
try {
const video = await getVideo({ videoId, neverThrow: true })
if (!video) {
throw new Error("Video not found")
}
return {
title: `${video.label} - AiTube`,
metadataBase,
openGraph: {
type: "website",
// url: "https://example.com",
title: video.label || "", // put the video title here
description: video.description || "", // put the vide description here
siteName: "AiTube",
videos: [
{
"url": video.assetUrlHd || video.assetUrl
}
],
// images: ['/some-specific-page-image.jpg', ...previousImages],
},
}
} catch (err) {
return {
title: "AiTube",
metadataBase,
openGraph: {
type: "website",
// url: "https://example.com",
title: "AiTube", // put the video title here
description: "", // put the vide description here
siteName: "AiTube",
videos: [],
images: [],
},
}
}
}
// we have routes but on Hugging Face we don't see them
// so.. let's use the work around
export default async function Page({ searchParams: { v: videoId } }: AppQueryProps) {
const publicMedia = await getVideo({
videoId,
neverThrow: true
})
return (
<Main publicMedia={publicMedia} />
)
} |