Browse Source

add exclude to search and recent plex items (#1540)

CauseFX 5 years ago
parent
commit
827cef7e31
2 changed files with 24 additions and 2 deletions
  1. 2 0
      api/config/default.php
  2. 22 2
      api/homepage/plex.php

+ 2 - 0
api/config/default.php

@@ -250,10 +250,12 @@ return array(
 	'homepagePlexStreamsAuth' => '1',
 	'homepagePlexStreamsExclude' => '',
 	'homepagePlexRecent' => false,
+	'homepagePlexRecentExclude' => '',
 	'homepageRecentLimit' => '50',
 	'homepagePlexRecentAuth' => '1',
 	'homepagePlexPlaylist' => false,
 	'homepagePlexPlaylistAuth' => '1',
+	'homepagePlexSearchExclude' => '',
 	'homepageEmbyStreams' => false,
 	'homepageEmbyStreamsAuth' => '1',
 	'homepageEmbyRecent' => false,

+ 22 - 2
api/homepage/plex.php

@@ -152,6 +152,15 @@ trait PlexHomepageItem
 						'value' => $this->config['homepagePlexRecentAuth'],
 						'options' => $this->groupOptions
 					),
+					array(
+						'type' => 'select2',
+						'class' => 'select2-multiple',
+						'id' => 'plex-recent-exclude-select',
+						'name' => 'homepagePlexRecentExclude',
+						'label' => 'Libraries to Exclude',
+						'value' => $this->config['homepagePlexRecentExclude'],
+						'options' => $libraryList
+					),
 					array(
 						'type' => 'number',
 						'name' => 'homepageRecentLimit',
@@ -180,6 +189,15 @@ trait PlexHomepageItem
 						'value' => $this->config['mediaSearchAuth'],
 						'options' => $this->groupOptions
 					),
+					array(
+						'type' => 'select2',
+						'class' => 'select2-multiple',
+						'id' => 'plex-search-exclude-select',
+						'name' => 'homepagePlexSearchExclude',
+						'label' => 'Libraries to Exclude',
+						'value' => $this->config['homepagePlexSearchExclude'],
+						'options' => $libraryList
+					),
 					array(
 						'type' => 'select',
 						'name' => 'mediaSearchType',
@@ -490,6 +508,7 @@ trait PlexHomepageItem
 			return false;
 		}
 		$ignore = array();
+		$exclude = explode(',', $this->config['homepagePlexRecentExclude']);
 		$resolve = true;
 		$url = $this->qualifyURL($this->config['plexURL']);
 		$urls['movie'] = $url . "/hubs/home/recentlyAdded?X-Plex-Token=" . $this->config['plexToken'] . "&X-Plex-Container-Start=0&X-Plex-Container-Size=" . $this->config['homepageRecentLimit'] . "&type=1";
@@ -503,7 +522,7 @@ trait PlexHomepageItem
 				$items = array();
 				$plex = simplexml_load_string($response->body);
 				foreach ($plex as $child) {
-					if (!in_array($child['type'], $ignore) && isset($child['librarySectionID'])) {
+					if (!in_array($child['type'], $ignore) && !in_array($child['librarySectionID'], $exclude) && isset($child['librarySectionID'])) {
 						$items[] = $this->resolvePlexItem($child);
 					}
 				}
@@ -612,6 +631,7 @@ trait PlexHomepageItem
 			return false;
 		}
 		$ignore = array('artist', 'episode');
+		$exclude = explode(',', $this->config['homepagePlexSearchExclude']);
 		$resolve = true;
 		$url = $this->qualifyURL($this->config['plexURL']);
 		$url = $url . "/search?query=" . rawurlencode($query) . "&X-Plex-Token=" . $this->config['plexToken'];
@@ -622,7 +642,7 @@ trait PlexHomepageItem
 			$items = array();
 			$plex = simplexml_load_string($response->body);
 			foreach ($plex as $child) {
-				if (!in_array($child['type'], $ignore) && isset($child['librarySectionID'])) {
+				if (!in_array($child['type'], $ignore) && !in_array($child['librarySectionID'], $exclude) && isset($child['librarySectionID'])) {
 					$items[] = $this->resolvePlexItem($child);
 				}
 			}