@animepaste/bangumi
Version:
102 lines (96 loc) • 3.27 kB
JavaScript
;
const node_module = require('node:module');
const createDebug = require('debug');
const index = require('./bangumi.94598bfb.cjs');
const compress = require('./bangumi.2a35e04e.cjs');
function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e.default : e; }
const createDebug__default = /*#__PURE__*/_interopDefaultCompat(createDebug);
const debug = createDebug__default("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 = index.getBgmId(item);
if (!bgmId) {
debug(`Missing bgmId of ${index.getBgmTitle(item)}`);
continue;
}
const bangumi = {
bgmId,
title: item.title,
type: item.type
};
for (const field of option.fields ?? []) {
switch (field) {
case "titleCN": {
bangumi.titleCN = index.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 = index.getBgmDmhy(item);
break;
}
default: {
debug(`Unknown bangumi extension field: ${field}`);
}
}
}
bangumis.push(bangumi);
}
}
}
const shouldCompress = option.compress ?? true;
return compress.compress({
compress: shouldCompress,
bangumis
});
}
async function importBangumiData() {
try {
const require$1 = node_module.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (document.currentScript && document.currentScript.src || new URL('shared/bangumi.766b3f2d.cjs', document.baseURI).href)));
const data = require$1("bangumi-data");
return "default" in data ? data.default : data;
} catch (err) {
debug(err);
return void 0;
}
}
exports.transform = transform;