diff --git a/plugin.audio.radiobrowser/addon.py b/plugin.audio.radiobrowser/addon.py index bd6bf9b..02c857d 100644 --- a/plugin.audio.radiobrowser/addon.py +++ b/plugin.audio.radiobrowser/addon.py @@ -6,14 +6,13 @@ import urllib.error import urllib.parse import urllib.request -from typing import Any +from typing import Any, Dict, List import xbmc import xbmcaddon import xbmcgui import xbmcplugin import xbmcvfs - from resources.lib.languagecodes import LanguageCode addonID: str = "plugin.audio.radiobrowser" @@ -21,7 +20,7 @@ base_url: str = sys.argv[0] addon_handle = int(sys.argv[1]) -args: dict[str, Any] = urllib.parse.parse_qs(sys.argv[2][1:]) +args: Dict[str, Any] = urllib.parse.parse_qs(sys.argv[2][1:]) xbmcplugin.setContent(addon_handle, "songs") @@ -30,18 +29,18 @@ PAGE_LIMIT: int = 500 -DEFAULT_ICON: dict[str, str] = {"icon": "DefaultFolder.png"} +DEFAULT_ICON: Dict[str, str] = {"icon": "DefaultFolder.png"} class MyStations: - def __init__(self, my_stations: dict[str, Any]): + def __init__(self, my_stations: Dict[str, Any]): self.stations = my_stations MY_STATIONS: MyStations = MyStations({}) -def get_radiobrowser_base_urls() -> list[str]: +def get_radiobrowser_base_urls() -> List[str]: """ Get all base urls of all currently available radiobrowser servers @@ -49,7 +48,7 @@ def get_radiobrowser_base_urls() -> list[str]: list: a list of strings """ - hosts: list[str] = [] + hosts: List[str] = [] # get all hosts from DNS ips = socket.getaddrinfo("all.api.radio-browser.info", 80, 0, 0, socket.IPPROTO_TCP) for ip_tuple in ips: @@ -75,7 +74,7 @@ def LANGUAGE(id: int) -> str: return addon.getLocalizedString(id) -def build_url(query: dict[str, int | str | bytes]): +def build_url(query: Dict[str, "int | str | bytes"]): return base_url + "?" + urllib.parse.urlencode(query) @@ -83,7 +82,7 @@ def addLink(stationuuid: str, name: str, url: str, favicon: str, bitrate: str): li = xbmcgui.ListItem(name) li.setArt({"icon": favicon}) li.setProperty("IsPlayable", "true") - li.setInfo(type="Music", infoLabels={"Title": name, "Size": bitrate}) + li.setInfo(type="Video", infoLabels={"Title": name, "Size": bitrate}) localUrl = build_url({"mode": "play", "stationuuid": stationuuid}) if stationuuid in MY_STATIONS.stations: @@ -109,7 +108,7 @@ def addLink(stationuuid: str, name: str, url: str, favicon: str, bitrate: str): ) -def downloadFile(uri: str, param, url_parameter: dict[str, Any] = {}) -> bytes: +def downloadFile(uri: str, param, url_parameter: Dict[str, Any] = {}) -> bytes: """ Download file with the correct headers set @@ -138,7 +137,9 @@ def downloadFile(uri: str, param, url_parameter: dict[str, Any] = {}) -> bytes: def downloadApiFile( - path: str, param: dict[str, Any] | None, url_parameter: dict[str, str | int] = {} + path: str, + param: "Dict[str, Any] | None", + url_parameter: Dict[str, "str | int"] = {}, ) -> bytes: """ Download file with relative url from a random api server. @@ -206,7 +207,7 @@ def delFromMyStations(stationuuid: str): def createDirectoryItem( - urlArgs: dict[str, str | bytes | int], name: str, artArgs: dict[str, str] + urlArgs: Dict[str, "str | bytes | int"], name: str, artArgs: Dict[str, str] ): localUrl = build_url(urlArgs) li = xbmcgui.ListItem(name) @@ -260,7 +261,7 @@ def buildMenu() -> None: xbmcplugin.endOfDirectory(addon_handle) -def buildTagsList(args: dict[str, Any]) -> None: +def buildTagsList(args: Dict[str, Any]) -> None: page = args.get("page") if page is not None: try: @@ -270,7 +271,7 @@ def buildTagsList(args: dict[str, Any]) -> None: else: page = 0 - url_parameter: dict[str, str | int] = { + url_parameter: Dict[str, "str | int"] = { "limit": PAGE_LIMIT, "offset": page * PAGE_LIMIT, } @@ -333,7 +334,7 @@ def buildCountriesList() -> None: xbmcplugin.endOfDirectory(addon_handle) -def buildStatesList(args: dict[str, Any]) -> None: +def buildStatesList(args: Dict[str, Any]) -> None: country = args["country"][0] country = base64.b32decode(country) country = country.decode("utf-8") @@ -372,9 +373,9 @@ def buildStatesList(args: dict[str, Any]) -> None: xbmcplugin.endOfDirectory(addon_handle) -def buildStationsSearch(args: dict[str, Any]) -> None: +def buildStationsSearch(args: Dict[str, Any]) -> None: url = "/json/stations/search" - param: dict[str, Any] = {} + param: Dict[str, Any] = {} if "url" in args: url = args["url"][0] else: @@ -390,7 +391,7 @@ def buildStationsSearch(args: dict[str, Any]) -> None: xbmcplugin.endOfDirectory(addon_handle) -def playStation(args: dict[str, Any]) -> None: +def playStation(args: Dict[str, Any]) -> None: stationuuid = args["stationuuid"][0] data = downloadApiFile("/json/url/" + str(stationuuid), None) dataDecoded = json.loads(data) @@ -426,7 +427,7 @@ def buildMyStations() -> None: xbmcplugin.endOfDirectory(addon_handle) -def addStation(args: dict[str, Any]) -> None: +def addStation(args: Dict[str, Any]) -> None: favicon = args["favicon"][0] if "favicon" in args else "" addToMyStations( args["stationuuid"][0], @@ -437,7 +438,7 @@ def addStation(args: dict[str, Any]) -> None: ) -def deleteStation(args: dict[str, Any]) -> None: +def deleteStation(args: Dict[str, Any]) -> None: delFromMyStations(args["stationuuid"][0]) @@ -461,7 +462,7 @@ def addCustomStation() -> None: xbmc.executebuiltin("Container.Refresh(" + refresh_url + ")") -def router(mode: str | None, args: dict[str, Any]) -> None: +def router(mode: "str | None", args: Dict[str, Any]) -> None: if mode is None: buildMenu() elif mode == "tags": diff --git a/plugin.audio.radiobrowser/resources/.zip b/plugin.audio.radiobrowser/resources/.zip deleted file mode 100644 index 21c6ce1..0000000 Binary files a/plugin.audio.radiobrowser/resources/.zip and /dev/null differ