UNPKG

@animepaste/bangumi

Version:
96 lines (93 loc) 2.86 kB
import { createRequire } from 'node:module'; import createDebug from 'debug'; import { g as getBgmId, b as getBgmTitle, a as getBgmDmhy } from './bangumi.679709b8.mjs'; import { c as compress } from './bangumi.aa4a6cb9.mjs'; const debug = createDebug("bangumi:transform"); async function transform(option = {}) { const data = await importBangumiData(); if (!data) { throw new Error("Fail importing bangumi-data"); } data.items = data.items.sort((lhs, rhs) => { const d1 = new Date(lhs.begin).getTime(); const d2 = new Date(rhs.begin).getTime(); return d1 - d2; }); const begin = new Date(option.begin ?? 0); const end = option.end ? new Date(option.end) : /* @__PURE__ */ new Date(); const types = !!option.type && Array.isArray(option.type) ? option.type : !!option.type ? [option.type] : ["tv"]; const bangumis = []; for (const item of data.items) { const date = new Date(item.begin); if (begin.getTime() <= date.getTime() && date.getTime() <= end.getTime()) { if (types.includes(item.type)) { const bgmId = getBgmId(item); if (!bgmId) { debug(`Missing bgmId of ${getBgmTitle(item)}`); continue; } const bangumi = { bgmId, title: item.title, type: item.type }; for (const field of option.fields ?? []) { switch (field) { case "titleCN": { bangumi.titleCN = getBgmTitle(item); break; } case "titleTranslate": { bangumi.titleTranslate = item.titleTranslate; break; } case "lang": { bangumi.lang = item.lang; break; } case "officialSite": { bangumi.officialSite = item.officialSite; break; } case "begin": { bangumi.begin = item.begin; break; } case "end": { bangumi.end = item.end; break; } case "comment": { bangumi.comment = item.comment; break; } case "dmhy": { bangumi.dmhy = getBgmDmhy(item); break; } default: { debug(`Unknown bangumi extension field: ${field}`); } } } bangumis.push(bangumi); } } } const shouldCompress = option.compress ?? true; return compress({ compress: shouldCompress, bangumis }); } async function importBangumiData() { try { const require = createRequire(import.meta.url); const data = require("bangumi-data"); return "default" in data ? data.default : data; } catch (err) { debug(err); return void 0; } } export { transform as t };