@@ -2236,16 +2236,57 @@ def _loadData(self, data):
22362236 self .title = data .attrib .get ('title' )
22372237 self .type = data .attrib .get ('type' )
22382238
2239- # Add additional manual sorts and fields which are available
2239+ self ._librarySectionID = self ._parent ().key
2240+
2241+ # Add additional manual filters, sorts, and fields which are available
22402242 # but not exposed on the Plex server
2243+ self .filters += self ._manualFilters ()
22412244 self .sorts += self ._manualSorts ()
22422245 self .fields += self ._manualFields ()
22432246
2247+ def _manualFilters (self ):
2248+ """ Manually add additional filters which are available
2249+ but not exposed on the Plex server.
2250+ """
2251+ # Filters: (filter, type, title)
2252+ additionalFilters = [
2253+ ]
2254+
2255+ if self .type == 'season' :
2256+ additionalFilters .extend ([
2257+ ('label' , 'string' , 'Labels' )
2258+ ])
2259+ elif self .type == 'episode' :
2260+ additionalFilters .extend ([
2261+ ('label' , 'string' , 'Labels' )
2262+ ])
2263+ elif self .type == 'artist' :
2264+ additionalFilters .extend ([
2265+ ('label' , 'string' , 'Labels' )
2266+ ])
2267+ elif self .type == 'track' :
2268+ additionalFilters .extend ([
2269+ ('label' , 'string' , 'Labels' )
2270+ ])
2271+
2272+ manualFilters = []
2273+ for filterTag , filterType , filterTitle in additionalFilters :
2274+ filterKey = '/library/sections/%s/%s?type=%s' % (
2275+ self ._librarySectionID , filterTag , utils .searchType (self .type )
2276+ )
2277+ filterXML = (
2278+ '<Filter filter="%s" filterType="%s" key="%s" title="%s" type="filter" />'
2279+ % (filterTag , filterType , filterKey , filterTitle )
2280+ )
2281+ manualFilters .append (self ._manuallyLoadXML (filterXML , FilteringFilter ))
2282+
2283+ return manualFilters
2284+
22442285 def _manualSorts (self ):
22452286 """ Manually add additional sorts which are available
22462287 but not exposed on the Plex server.
22472288 """
2248- # Sorts: key, dir, title
2289+ # Sorts: ( key, dir, title)
22492290 additionalSorts = [
22502291 ('guid' , 'asc' , 'Guid' ),
22512292 ('id' , 'asc' , 'Rating Key' ),
@@ -2275,8 +2316,10 @@ def _manualSorts(self):
22752316
22762317 manualSorts = []
22772318 for sortField , sortDir , sortTitle in additionalSorts :
2278- sortXML = ('<Sort defaultDirection="%s" descKey="%s:desc" key="%s" title="%s" />'
2279- % (sortDir , sortField , sortField , sortTitle ))
2319+ sortXML = (
2320+ '<Sort defaultDirection="%s" descKey="%s:desc" key="%s" title="%s" />'
2321+ % (sortDir , sortField , sortField , sortTitle )
2322+ )
22802323 manualSorts .append (self ._manuallyLoadXML (sortXML , FilteringSort ))
22812324
22822325 return manualSorts
@@ -2285,7 +2328,7 @@ def _manualFields(self):
22852328 """ Manually add additional fields which are available
22862329 but not exposed on the Plex server.
22872330 """
2288- # Fields: key, type, title
2331+ # Fields: ( key, type, title)
22892332 additionalFields = [
22902333 ('guid' , 'string' , 'Guid' ),
22912334 ('id' , 'integer' , 'Rating Key' ),
@@ -2311,19 +2354,26 @@ def _manualFields(self):
23112354 additionalFields .extend ([
23122355 ('addedAt' , 'date' , 'Date Season Added' ),
23132356 ('unviewedLeafCount' , 'integer' , 'Episode Unplayed Count' ),
2314- ('year' , 'integer' , 'Season Year' )
2357+ ('year' , 'integer' , 'Season Year' ),
2358+ ('label' , 'tag' , 'Label' )
23152359 ])
23162360 elif self .type == 'episode' :
23172361 additionalFields .extend ([
23182362 ('audienceRating' , 'integer' , 'Audience Rating' ),
23192363 ('duration' , 'integer' , 'Duration' ),
23202364 ('rating' , 'integer' , 'Critic Rating' ),
2321- ('viewOffset' , 'integer' , 'View Offset' )
2365+ ('viewOffset' , 'integer' , 'View Offset' ),
2366+ ('label' , 'tag' , 'Label' )
2367+ ])
2368+ elif self .type == 'artist' :
2369+ additionalFields .extend ([
2370+ ('label' , 'tag' , 'Label' )
23222371 ])
23232372 elif self .type == 'track' :
23242373 additionalFields .extend ([
23252374 ('duration' , 'integer' , 'Duration' ),
2326- ('viewOffset' , 'integer' , 'View Offset' )
2375+ ('viewOffset' , 'integer' , 'View Offset' ),
2376+ ('label' , 'tag' , 'Label' )
23272377 ])
23282378 elif self .type == 'collection' :
23292379 additionalFields .extend ([
@@ -2334,8 +2384,10 @@ def _manualFields(self):
23342384
23352385 manualFields = []
23362386 for field , fieldType , fieldTitle in additionalFields :
2337- fieldXML = ('<Field key="%s%s" title="%s" type="%s"/>'
2338- % (prefix , field , fieldTitle , fieldType ))
2387+ fieldXML = (
2388+ '<Field key="%s%s" title="%s" type="%s"/>'
2389+ % (prefix , field , fieldTitle , fieldType )
2390+ )
23392391 manualFields .append (self ._manuallyLoadXML (fieldXML , FilteringField ))
23402392
23412393 return manualFields
0 commit comments