portfolio/koikatsu.js

41 lines
1.5 KiB
JavaScript

import { writeFile } from "node:fs/promises";
import { join } from "node:path";
const fileReq = await fetch('https://cdn.nhcarrigan.com?prefix=koikatsu');
const files = await fileReq.text();
const keys = files.matchAll(/<Key>(.*?)<\/Key>/g);
const keyNames = [...keys].map((key) => key[1]?.replace("koikatsu/", "")).filter(key => key);
const keyHtml = keyNames.map((key) => `<div
style="
height: 300px;
width: 300px;
border: 2px solid var(--foreground);
"
>
<a href="https://cdn.nhcarrigan.com/koikatsu/${key}" target="_blank">
<img
style="height: 250px; max-width: 250px; object-fit: contain"
src="https://cdn.nhcarrigan.com/koikatsu/${key}"
alt="Digital art of Naomi."
/>
</a>
</div>`);
const html = `<!DOCTYPE html>
<html lang="en">
<head>
<title>NHCarrigan</title>
</head>
<body>
<main>
<h1>Naomi</h1>
<p>For an interactive 3D reference, visit <a href="https://hub.vroid.com/en/characters/6033404747153826650/models/3483506204509065121" target="_blank" rel="noopener noreferrer">VRoid Hub</a>.</p>
<section style="display: grid; grid-template-columns: 1fr 1fr 1fr">
${keyHtml.join('')}
</section>
</main>
</body>
<script src="https://cdn.nhcarrigan.com/headers/index.js"></script>
</html>`;
await writeFile(join(import.meta.dirname, "site", "koikatsu.html"), html, "utf-8");