@@ -9,33 +9,48 @@ def parse_library(root):
99 for medium in root .findall ("Video" ):
1010 output .append (medium .attrib )
1111
12+ if len (output ) == 0 :
13+ for medium in root .findall ("Directory" ):
14+ output .append (medium .attrib )
15+
16+ if len (output ) == 0 :
17+ for medium in root .findall ("Photo" ):
18+ output .append (medium .attrib )
19+
1220 return output
1321
14- def parse_data (data , max , base_url , token , identifier ):
22+ def parse_data (data , max , base_url , token , identifier , section_key ):
1523 data = sorted (data , key = lambda i : i ['addedAt' ], reverse = True )[:max ]
1624
1725 output = []
1826 for item in data :
1927 date = datetime .strptime (item .get ("originallyAvailableAt" , "1900-01-01" ), "%Y-%m-%d" ).strftime ('%Y-%m-%dT%H:%M:%SZ' )
28+ thumb = item .get ("thumb" , item .get ("parentThumb" , item .get ("grandparentThumb" , None )))
29+ art = item .get ("art" , item .get ("grandparentArt" , None ))
30+ deep_link_position = - 1
31+ if section_key == "artist" :
32+ deep_link_position = - 2
33+ deep_link = f'{ base_url } /web/index.html#!/server/{ identifier } /details?key=%2Flibrary%2Fmetadata%2F{ item .get ("key" , "" ).split ("/" )[deep_link_position ]} '
34+
2035 output .append (
2136 {
2237 "airdate" : date ,
2338 "title" : item .get ("grandparentTitle" , item .get ("parentTitle" , item .get ("title" , "" ))),
2439 "release" : datetime .utcfromtimestamp (int (item .get ("addedAt" , 0 ))).strftime ('%Y-%m-%dT%H:%M:%SZ' ),
2540 "episode" : item .get ("title" , "" ),
26- "number" : f'S{ "{:0>2}" .format (item .get ("parentIndex" , "1" ))} E{ "{:0>2}" .format (item .get ("index" , "1" ))} ' ,
41+ "number" : f'S{ "{:0>2}" .format (item .get ("parentIndex" , "1" ))} E{ "{:0>2}" .format (item .get ("index" , "1" ))} ' if item . get ( "parentIndex" , None ) and item . get ( "index" , None ) else "" ,
2742 "season_num" : item .get ("parentIndex" , "" ),
2843 "season_num" : item .get ("parentIndex" , "1" ),
2944 "episode_num" : item .get ("index" , "1" ),
3045 "genres" : ", " .join ([genre ['tag' ] for genre in item .get ('Genre' , [])][:3 ]),
31- "rating" : ('\N{BLACK STAR} ' + str (item .get ("rating" ))) if int (item .get ("rating" , 0 )) > 0 else '' ,
46+ "rating" : ('\N{BLACK STAR} ' + str (item .get ("rating" ))) if int (float ( item .get ("rating" , 0 ) )) > 0 else '' ,
3247 "studio" : item .get ("grandparentTitle" , "" ),
3348 "aired" : date ,
3449 "runtime" : math .floor (int (item .get ("duration" , 0 )) / 60000 ),
35- "poster" : base_url + item . get ( " thumb" , "" ) + f'?X-Plex-Token={ token } ' ,
36- "fanart" : base_url + item . get ( "parentThumb" , item . get ( "grandparentThumb" , "" )) + f'?X-Plex-Token={ token } ' ,
50+ "poster" : ( base_url + thumb + f'?X-Plex-Token={ token } ' ) if thumb else "" ,
51+ "fanart" : ( base_url + art + f'?X-Plex-Token={ token } ' ) if art else "" ,
3752 "flag" : "viewCount" not in item ,
38- "deep_link" : f' { base_url } /web/index.html#!/server/ { identifier } /details?key=%2Flibrary%2Fmetadata%2F { item . get ( "key" , "" ). split ( "/" )[ - 1 ] } ' if identifier else None
53+ "deep_link" : deep_link if identifier else None
3954 }
4055 )
4156
0 commit comments