@@ -236,7 +236,7 @@ def build_main_menu(self, identifiers=[]):
236236 'identifier' : 'Topics' ,
237237 'name' : self .plugin_language (30058 ),
238238 'mode' : 13 ,
239- 'displayItem' : False , # TODO: not (yet) supported
239+ 'displayItem' : False , # not (yet) supported
240240 'icon' : self .icon ,
241241 }, {
242242 # Most searched TV shows
@@ -258,14 +258,14 @@ def build_main_menu(self, identifiers=[]):
258258 'identifier' : 'Live_TV' ,
259259 'name' : self .plugin_language (30072 ),
260260 'mode' : 26 ,
261- 'displayItem' : self . get_boolean_setting ( 'Live_TV' ),
261+ 'displayItem' : False , # currently not supported
262262 'icon' : self .icon ,
263263 }, {
264264 # SRF.ch live
265265 'identifier' : 'SRF_Live' ,
266266 'name' : self .plugin_language (30070 ),
267267 'mode' : 18 ,
268- 'displayItem' : self . get_boolean_setting ( 'SRF_Live' ),
268+ 'displayItem' : False , # currently not supported
269269 'icon' : self .icon ,
270270 }, {
271271 # Search
@@ -315,8 +315,8 @@ def build_folder_menu(self, folders):
315315 listitem = list_item , isFolder = True )
316316
317317 # TODO: check parameters
318- def build_menu_apiv3 (self , queries , mode , page = None , page_hash = None ,
319- name = '' , whitelist_ids = None ):
318+ def build_menu_apiv3 (self , queries , mode = 1000 , page = 1 , page_hash = None ,
319+ whitelist_ids = None ):
320320 """
321321 Builds a menu based on the API v3, which is supposed to be more stable
322322
@@ -325,7 +325,6 @@ def build_menu_apiv3(self, queries, mode, page=None, page_hash=None,
325325 mode -- mode for the URL of the next folder
326326 page -- current page
327327 page_hash -- cursor for fetching the next items
328- name -- name of the list
329328 whitelist_ids -- list of ids that should be displayed, if it is set
330329 to `None` it will be ignored
331330 """
@@ -365,24 +364,20 @@ def build_menu_apiv3(self, queries, mode, page=None, page_hash=None,
365364 self .log ('No media found.' )
366365 return
367366
368- if 'data' in data :
369- items = data ['data' ]
370- elif 'results' in data :
371- items = data ['results' ]
372- else :
373- items = data
367+ items = utils .try_get (data , 'data' , list , []) or \
368+ utils .try_get (data , 'results' , list , []) or data
374369
375370 for item in items :
376371 self .build_entry_apiv3 (item , whitelist_ids = whitelist_ids )
377372
378373 if cursor :
379374 if page :
380375 url = self .build_url (
381- mode = 1000 , name = queries , page = int (page )+ 1 ,
376+ mode = mode , name = queries , page = int (page )+ 1 ,
382377 page_hash = cursor )
383378 else :
384379 url = self .build_url (
385- mode = 1000 , name = queries , page = 2 , page_hash = cursor )
380+ mode = mode , name = queries , page = 2 , page_hash = cursor )
386381
387382 next_item = xbmcgui .ListItem (
388383 label = '>> ' + LANGUAGE (30073 )) # Next page
@@ -411,8 +406,7 @@ def build_all_shows_menu(self, favids=None):
411406 the shows on that list will be build. (default: None)
412407 """
413408 self .log ('build_all_shows_menu' )
414- self .build_menu_apiv3 (
415- 'shows' , None , whitelist_ids = favids ) # TODO: mode?
409+ self .build_menu_apiv3 ('shows' , whitelist_ids = favids )
416410
417411 def build_favourite_shows_menu (self ):
418412 """
@@ -425,15 +419,14 @@ def build_topics_menu(self):
425419 """
426420 Builds a menu containing the topics from the SRGSSR API.
427421 """
428- self .build_menu_apiv3 ('topics' , None ) # TODO: mode?
422+ self .build_menu_apiv3 ('topics' )
429423
430424 def build_most_searched_shows_menu (self ):
431425 """
432426 Builds a menu containing the most searched TV shows from
433427 the SRGSSR API.
434428 """
435- self .build_menu_apiv3 (
436- 'search/most-searched-tv-shows' , None ) # TODO: mode?
429+ self .build_menu_apiv3 ('search/most-searched-tv-shows' )
437430
438431 def build_newest_favourite_menu (self , page = 1 ):
439432 """
@@ -449,7 +442,7 @@ def build_newest_favourite_menu(self, page=1):
449442 queries = []
450443 for sid in show_ids :
451444 queries .append ('videos-by-show-id?showId=' + sid )
452- return self .build_menu_apiv3 (queries , 12 ) # TODO: include page?
445+ return self .build_menu_apiv3 (queries )
453446
454447 def extract_id_list (self , url , editor_picks = False ):
455448 """
@@ -585,8 +578,15 @@ def build_episode_menu(self, video_id, include_segments=True,
585578 # Generate a simple playable item for the video
586579 self .build_entry (json_segment , banner )
587580
588- # TODO: docstring
589581 def build_entry_apiv3 (self , data , whitelist_ids = None ):
582+ """
583+ Builds a entry from a APIv3 JSON data entry.
584+
585+ Keyword arguments:
586+ data -- The JSON entry
587+ whitelist_ids -- If not `None` only items with an id that is in that
588+ list will be generated (default: None)
589+ """
590590 self .log ('build_entry_apiv3: urn = %s' % utils .try_get (data , 'urn' ))
591591 urn = data ['urn' ]
592592 title = utils .try_get (data , 'title' )
@@ -632,10 +632,15 @@ def build_entry_apiv3(self, data, whitelist_ids=None):
632632 self .handle , url , list_item , isFolder = True )
633633
634634 def build_menu_by_urn (self , urn ):
635+ """
636+ Builds a menu from an urn.
637+
638+ Keyword arguments:
639+ urn -- The urn (e.g. 'urn:srf:show:<id>' or 'urn:rts:video:<id>')
640+ """
635641 id = urn .split (':' )[- 1 ]
636642 if 'show' in urn :
637- self .build_menu_apiv3 (
638- f'videos-by-show-id?showId={ id } ' , None ) # TODO: mode
643+ self .build_menu_apiv3 (f'videos-by-show-id?showId={ id } ' )
639644 elif 'video' in urn :
640645 self .build_episode_menu (id )
641646 # TODO: Add 'topic'
@@ -820,7 +825,7 @@ def build_date_menu(self, date_string):
820825 # API v3 use the date in sortable format, i.e. year first
821826 elems = date_string .split ('-' )
822827 query = 'videos-by-date/%s-%s-%s' % (elems [2 ], elems [1 ], elems [0 ])
823- return self .build_menu_apiv3 (query , 0 )
828+ return self .build_menu_apiv3 (query )
824829
825830 def build_search_menu (self ):
826831 """
@@ -865,7 +870,6 @@ def build_recent_search_menu(self):
865870 xbmcplugin .addDirectoryItem (
866871 handle = self .handle , url = url , listitem = list_item , isFolder = True )
867872
868- # TODO: investigate
869873 def build_search_media_menu (self , mode = 28 , name = '' , page = 1 , page_hash = '' ):
870874 """
871875 Sets up a search for media. If called without name, a dialog will
@@ -903,8 +907,7 @@ def build_search_media_menu(self, mode=28, name='', page=1, page_hash=''):
903907
904908 query = f'{ query } &mediaType={ media_type } &includeAggregations=false'
905909 cursor = page_hash if page_hash else ''
906- return self .build_menu_apiv3 (query , mode , page_hash = cursor ,
907- name = query_string )
910+ return self .build_menu_apiv3 (query , page_hash = cursor )
908911
909912 def get_auth_url (self , url , segment_data = None ):
910913 """
0 commit comments