From 1ea8b93a7b3489104c75a1df703a2e319cd020e3 Mon Sep 17 00:00:00 2001 From: vexorian Date: Mon, 31 May 2021 22:08:09 -0400 Subject: [PATCH] #308 Fix shows appearing only in two collections --- web/services/plex.js | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/web/services/plex.js b/web/services/plex.js index 7256a7f..a990a0d 100644 --- a/web/services/plex.js +++ b/web/services/plex.js @@ -158,7 +158,7 @@ module.exports = function ($http, $window, $interval) { }, getStreams: async (server, key) => { var client = new Plex(server) - return client.Get(key).then((res) => { + return client.Get(key).then((res) => { let streams = res.Metadata[0].Media[0].Part[0].Stream for (let i = 0, l = streams.length; i < l; i++) { if (typeof streams[i].key !== 'undefined') { @@ -278,6 +278,29 @@ module.exports = function ($http, $window, $interval) { } if (typeof (res.Metadata[i].Collection) !== 'undefined') { let coll = res.Metadata[i].Collection; + if (coll.length == 2) { + // the /all endpoint returns incomplete data, so we + // might have to complete the list of collections + // when there are already 2 collections there. + //console.log(res.Metadata[i]); + let complete = {} + try { + complete = await client.Get(`/library/metadata/${res.Metadata[i].ratingKey}`); + } catch (err) { + console.error("Error attempting to load collections", err); + } + if ( + (typeof(complete.Metadata) !== 'undefined') + && + (complete.Metadata.length == 1) + && + (typeof(complete.Metadata[0].Collection) !== 'undefined') + && + ( complete.Metadata[0].Collection.length > 2) + ) { + coll = complete.Metadata[0].Collection; + } + } for (let j = 0; j < coll.length; j++) { let tag = coll[j].tag; if ( (typeof(tag)!== "undefined") && (tag.length > 0) ) {