aboutsummaryrefslogtreecommitdiff
path: root/modules/findepisode.js
diff options
context:
space:
mode:
Diffstat (limited to 'modules/findepisode.js')
-rw-r--r--modules/findepisode.js52
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