@animepaste/bangumi
Version:
96 lines (93 loc) • 2.86 kB
JavaScript
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 };