UNPKG

identify-media

Version:

Analyse file path and content to make search criteria for media APIs

77 lines 2.35 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.isSameQuery = exports.mapResult = exports.mapAnalysedMedia = void 0; const analyseFilePath_1 = require("../../lib/analyseFilePath"); const mapAnalysedMedia = (media) => { if (typeof media === 'string') return { s: media }; if ((0, analyseFilePath_1.isAnalysedMovie)(media) || (0, analyseFilePath_1.isAnalysedTVShow)(media)) return { s: media.name, type: media.type, y: media.year ? media.year.toString() : undefined }; throw new Error('media of unknown type: ' + JSON.stringify(media)); }; exports.mapAnalysedMedia = mapAnalysedMedia; const makeImages = (entry) => { if (entry.Poster) { return { 'omdb-poster': entry.Poster }; } return {}; }; const months = { 'Jan': '01', 'Feb': '02', 'Mar': '03', 'Apr': '04', 'May': '05', 'Jun': '06', 'Jul': '07', 'Aug': '08', 'Sep': '09', 'Oct': '10', 'Nov': '11', 'Dec': '12', }; const dateRegex = /([0-9]{2}) ([a-z]+) ([0-9]{4})/i; const mapDate = (date) => { const result = dateRegex.exec(date); if (result) return [result[3], months[result[2]], result[1]].join('-'); return undefined; }; const mapResult = (result) => { if (result.Error) throw new Error(result.Error); if (!result.Search) throw new Error('No search result'); return result.Search.map((entry) => { if (entry.Type === 'series') { return { type: 'tv', name: entry.Title, imdbId: entry.imdbID, firstAirDate: mapDate(entry.Released), mediaInfo: { plot: entry.Plot, images: makeImages(entry) } }; } else { return { type: 'movie', title: entry.Title, imdbId: entry.imdbID, release: mapDate(entry.Released), mediaInfo: { plot: entry.Plot, images: makeImages(entry) } }; } }); }; exports.mapResult = mapResult; const isSameQuery = (a, b) => a.y === b.y && a.s === b.s && a.type === b.type; exports.isSameQuery = isSameQuery; //# sourceMappingURL=mapper.js.map