From d122e8da0cb1b2277951afa6889ca0795f6ec4c4 Mon Sep 17 00:00:00 2001 From: warwickh Date: Sat, 5 Aug 2023 15:37:27 +1000 Subject: [PATCH] Add internet radio item --- main.py | 52 +++++++++++++++++++++++++++ resources/language/English/strings.po | 4 +++ resources/language/French/strings.po | 4 +++ resources/language/German/strings.po | 4 +++ 4 files changed, 64 insertions(+) diff --git a/main.py b/main.py index e4f14e6..4b2c8b2 100644 --- a/main.py +++ b/main.py @@ -111,6 +111,11 @@ def root(params): 'name': Addon().get_localized_string(30045), 'callback': 'search_album', 'thumb': None + }, + 'radio': { + 'name': Addon().get_localized_string(30046), + 'callback': 'browse_radio', + 'thumb': None }, } @@ -243,6 +248,31 @@ def menu_tracks(params): listing, )) +@plugin.action() +def browse_radio(params): + # get connection + connection = get_connection() + + if connection==False: + return + + listing = [] + + # Get items + items = walk_radio() + + # Iterate through items + for item in items: + print(item) + entry = get_entry_radio(item,params) + listing.append(entry) + + add_directory_items(create_listing( + listing, + sort_methods = get_sort_methods('playlists',params), #he list of integer constants representing virtual folder sort methods. + )) + + @plugin.action() def browse_folders(params): # get connection @@ -880,6 +910,17 @@ def get_entry_album(item, params): return entry +def get_entry_radio(item,params): + menu_id = params.get('menu_id') + entry = { + 'label': item.get('name'), + 'url': item.get('streamUrl'), + 'is_playable': True + } + + return entry + + def get_entry_track(item,params): menu_id = params.get('menu_id') image = connection.getCoverArtUrl(item.get('coverArt')) @@ -1543,6 +1584,17 @@ def walk_tracks_random(size=None, genre=None, fromYear=None,toYear=None): except KeyError: yield from () +def walk_radio(): + """ + Request Subsonic's radio stations and iterate over each item. + """ + response = connection.getInternetRadioStations() + try: + for station in response["internetRadioStations"]["internetRadioStation"]: + yield station + except KeyError: + yield from () + def walk_tracks_starred(): """ Request Subsonic's starred songs and iterate over each item. diff --git a/resources/language/English/strings.po b/resources/language/English/strings.po index 136d178..7f473fa 100644 --- a/resources/language/English/strings.po +++ b/resources/language/English/strings.po @@ -180,3 +180,7 @@ msgstr "" msgctxt "#30045" msgid "Search Albums" msgstr "" + +msgctxt "#30046" +msgid "Radio" +msgstr "Radio" diff --git a/resources/language/French/strings.po b/resources/language/French/strings.po index ecf0aef..8ab507d 100644 --- a/resources/language/French/strings.po +++ b/resources/language/French/strings.po @@ -180,3 +180,7 @@ msgstr "" msgctxt "#30045" msgid "Search Albums" msgstr "Rechercher Albums" + +msgctxt "#30046" +msgid "Radio" +msgstr "Radio" diff --git a/resources/language/German/strings.po b/resources/language/German/strings.po index 4c74bc7..8d6e345 100644 --- a/resources/language/German/strings.po +++ b/resources/language/German/strings.po @@ -179,3 +179,7 @@ msgstr "" msgctxt "#30045" msgid "Search Albums" msgstr "Suche Albums" + +msgctxt "#30046" +msgid "Radio" +msgstr "Radio"