From d41786f5a8e21453629915decb86542f7f8f342f Mon Sep 17 00:00:00 2001 From: vexorian Date: Sat, 20 Jun 2020 07:53:04 -0400 Subject: [PATCH] Handling of videos containing multiple episodes. --- web/services/plex.js | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/web/services/plex.js b/web/services/plex.js index 1070800..c3bb25b 100644 --- a/web/services/plex.js +++ b/web/services/plex.js @@ -123,6 +123,7 @@ module.exports = function ($http, $window, $interval) { var client = new Plex(server) const res = await client.Get(key) var nested = [] + var seenFiles = {}; for (let i = 0, l = typeof res.Metadata !== 'undefined' ? res.Metadata.length : 0; i < l; i++) { // Skip any videos (movie or episode) without a duration set... if (typeof res.Metadata[i].duration === 'undefined' && (res.Metadata[i].type === "episode" || res.Metadata[i].type === "movie")) @@ -146,6 +147,20 @@ module.exports = function ($http, $window, $interval) { year: res.Metadata[i].year, } if (program.type === 'episode') { + //Make sure that video files that contain multiple episodes are only listed once: + var anyNewFile = false; + for (var j = 0; j < res.Metadata[i].Media.length; j++) { + for (var k = 0; k < res.Metadata[i].Media[j].Part.length; k++) { + var fileName = res.Metadata[i].Media[j].Part[k].file; + if (seenFiles[fileName] !== true) { + seenFiles[fileName] = true; + anyNewFile = true; + } + } + } + if (! anyNewFile) { + continue; + } program.showTitle = res.Metadata[i].grandparentTitle program.episode = res.Metadata[i].index program.season = res.Metadata[i].parentIndex