UNPKG

@animepaste/bangumi

Version:
102 lines (96 loc) 3.27 kB
'use strict'; 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;