import { iframeHandler } from "https://esm.town/v/nbbaier/iframeHandler";
import { hololiveAnniversaryData } from "https://esm.town/v/stu43005/hololiveAnniversaryData";
import process from "node:process";
import { createEvents, EventAttributes } from "npm:ics";
export async function hololiveAnniversaryIcs(req: Request) {
const data = hololiveAnniversaryData;
const { error, value } = createEvents(data.map((item): EventAttributes => {
const [mm, dd] = item.日付.split("/").map((v) => parseInt(v, 10));
const start = new Date();
start.setMonth(mm - 1);
start.setDate(dd);
const end = new Date(start);
end.setDate(end.getDate() + 1);
const title = `${item.メンバー} ${item["出来事 活動歴"]}`;
const description = Object.entries(item).map((v) => `${v[0]}:${v[1]}`).join(
"\n",
);
return {
calName: "ホロライブ記念日",
title,
description,
url: "https://seesaawiki.jp/hololivetv/d/%B5%AD%C7%B0%C6%FC",
start: [start.getFullYear(), start.getMonth() + 1, start.getDate()],
end: [end.getFullYear(), end.getMonth() + 1, end.getDate()],
recurrenceRule: "FREQ=YEARLY",
};
}));
if (error) {
return new Response(JSON.stringify(error), {
status: 500,
});
}
return new Response(value, {
headers: {
"Content-Type": "text/calendar",
},
});
}
export default iframeHandler(hololiveAnniversaryIcs);