diff options
Diffstat (limited to 'modules/findepisode.js')
-rw-r--r-- | modules/findepisode.js | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/modules/findepisode.js b/modules/findepisode.js new file mode 100644 index 0000000..f37ed4f --- /dev/null +++ b/modules/findepisode.js @@ -0,0 +1,52 @@ +const Fuse = require('fuse.js'); + +module.exports = (series, query) => { + let episodes = []; + + for (let season of series.seasons) { + for (let episode of season.episodes) { + episodes.push({ + season: season.id, + episode: episode.local, + global: episode.global, + name: episode.name, + date: episode.date, + year: new Date(episode.date).getUTCFullYear(), + plot: episode.plot, + cast: episode.characters + }) + } + } + + const fuse = new Fuse(episodes, { + keys: [ 'season', 'episode', 'global', 'name', 'year', 'plot', 'cast' ] + }) + + let results = []; + for (let item of fuse.search(query)) { + results.push({ + name: item.item.season.toUpperCase() + "E" + item.item.episode + " - " + item.item.name + " (" + item.item.year + ")", + value: item.item.season + "-" + item.item.episode + }); + } + + let first = [ + null, + null, + null, + null, + null, + null, + null + ] + + findex = 0; + for (let result of results) { + if (!first.includes(result) && findex < 7) { + first[findex] = result + findex++ + } + } + + return first; +}
\ No newline at end of file |