nfo-parser
Version:
A simple NFO parser
45 lines • 2.94 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.extractMediaInfo = exports.parser = void 0;
const fs_1 = __importDefault(require("fs"));
const xml2js_1 = require("xml2js");
async function parser(filePath) {
var _a;
const nfoContent = fs_1.default.readFileSync(filePath, "utf8");
const data = await (0, xml2js_1.parseStringPromise)(nfoContent);
return (_a = Object.values(data)) === null || _a === void 0 ? void 0 : _a[0];
}
exports.parser = parser;
async function extractMediaInfo(filePath) {
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
try {
const parsedData = await parser(filePath);
const mediaInfo = {
title: (_a = parsedData === null || parsedData === void 0 ? void 0 : parsedData.title) === null || _a === void 0 ? void 0 : _a[0],
originaltitle: (_b = parsedData === null || parsedData === void 0 ? void 0 : parsedData.originaltitle) === null || _b === void 0 ? void 0 : _b[0],
plot: (_c = parsedData === null || parsedData === void 0 ? void 0 : parsedData.plot) === null || _c === void 0 ? void 0 : _c[0],
poster: (_f = (_e = (_d = parsedData === null || parsedData === void 0 ? void 0 : parsedData.art) === null || _d === void 0 ? void 0 : _d[0]) === null || _e === void 0 ? void 0 : _e.poster) === null || _f === void 0 ? void 0 : _f[0],
fanart: (_j = (_h = (_g = parsedData === null || parsedData === void 0 ? void 0 : parsedData.art) === null || _g === void 0 ? void 0 : _g[0]) === null || _h === void 0 ? void 0 : _h.fanart) === null || _j === void 0 ? void 0 : _j[0],
actors: (_k = parsedData === null || parsedData === void 0 ? void 0 : parsedData.actor) === null || _k === void 0 ? void 0 : _k.map((actor) => {
var _a, _b, _c, _d;
return ({
name: (_a = actor === null || actor === void 0 ? void 0 : actor.name) === null || _a === void 0 ? void 0 : _a[0],
role: (_b = actor === null || actor === void 0 ? void 0 : actor.role) === null || _b === void 0 ? void 0 : _b[0],
thumb: (_c = actor === null || actor === void 0 ? void 0 : actor.thumb) === null || _c === void 0 ? void 0 : _c[0],
type: (_d = actor === null || actor === void 0 ? void 0 : actor.type) === null || _d === void 0 ? void 0 : _d[0],
});
}),
dateadded: (_l = parsedData === null || parsedData === void 0 ? void 0 : parsedData.dateadded) === null || _l === void 0 ? void 0 : _l[0],
};
return mediaInfo;
}
catch (error) {
console.error("Error extracting media info:", error);
return null;
}
}
exports.extractMediaInfo = extractMediaInfo;
//# sourceMappingURL=parser.js.map