From 64e51f2bedb840a4ad00fa0f2926e699d6a2f5d6 Mon Sep 17 00:00:00 2001 From: Jakob Linskeseder Date: Sat, 18 Apr 2020 16:14:39 +0200 Subject: [PATCH] Make it possible to clear cache The "Discover" route and the client ID are cached and it should be possible to delete cached files. Resolves #10 --- .../resource.language.de_de/strings.po | 13 +++++++++++++ .../resource.language.en_gb/strings.po | 13 +++++++++++++ .../resource.language.nl_nl/strings.po | 13 +++++++++++++ resources/lib/kodi/vfs.py | 19 ++++++++++++++++++- resources/plugin.py | 5 +++++ resources/routes.py | 1 + resources/settings.xml | 2 ++ 7 files changed, 65 insertions(+), 1 deletion(-) diff --git a/resources/language/resource.language.de_de/strings.po b/resources/language/resource.language.de_de/strings.po index f9cdfe4..1615055 100644 --- a/resources/language/resource.language.de_de/strings.po +++ b/resources/language/resource.language.de_de/strings.po @@ -66,6 +66,14 @@ msgctxt "#30064" msgid "disabled" msgstr "deaktiviert" +msgctxt "#30070" +msgid "Cache" +msgstr "Cache" + +msgctxt "#30071" +msgid "Clear cache" +msgstr "Cache leeren" + # GUI - Root msgctxt "#30101" msgid "Search" @@ -117,6 +125,11 @@ msgctxt "#30302" msgid "New & hot" msgstr "Neu und angesagt" +# GUI - Settings +msgctxt "#30501" +msgid "Cache cleared" +msgstr "Cache gelöscht" + # GUI - Generic msgctxt "#30901" msgid "Next page" diff --git a/resources/language/resource.language.en_gb/strings.po b/resources/language/resource.language.en_gb/strings.po index 8ed4e7e..d51c27c 100644 --- a/resources/language/resource.language.en_gb/strings.po +++ b/resources/language/resource.language.en_gb/strings.po @@ -66,6 +66,14 @@ msgctxt "#30064" msgid "disabled" msgstr "" +msgctxt "#30070" +msgid "Cache" +msgstr "" + +msgctxt "#30071" +msgid "Clear cache" +msgstr "" + # GUI - Root msgctxt "#30101" msgid "Search" @@ -117,6 +125,11 @@ msgctxt "#30302" msgid "New & hot" msgstr "" +# GUI - Settings +msgctxt "#30501" +msgid "Cache cleared" +msgstr "" + # GUI - Generic msgctxt "#30901" msgid "Next page" diff --git a/resources/language/resource.language.nl_nl/strings.po b/resources/language/resource.language.nl_nl/strings.po index 5fd84e7..85ae710 100644 --- a/resources/language/resource.language.nl_nl/strings.po +++ b/resources/language/resource.language.nl_nl/strings.po @@ -65,6 +65,14 @@ msgctxt "#30064" msgid "disabled" msgstr "uitgeschakeld" +msgctxt "#30070" +msgid "Cache" +msgstr "" + +msgctxt "#30071" +msgid "Clear cache" +msgstr "Cache wissen" + # GUI - Root msgctxt "#30101" msgid "Search" @@ -116,6 +124,11 @@ msgctxt "#30302" msgid "New & hot" msgstr "Nieuw & Populair" +# GUI - Settings +msgctxt "#30501" +msgid "Cache cleared" +msgstr "Cache gewist" + # GUI - Generic msgctxt "#30901" msgid "Next page" diff --git a/resources/lib/kodi/vfs.py b/resources/lib/kodi/vfs.py index 585e7cf..7442e4a 100644 --- a/resources/lib/kodi/vfs.py +++ b/resources/lib/kodi/vfs.py @@ -24,7 +24,24 @@ def write(self, filename, string): file = xbmcvfs.File(filepath, "w") success = file.write(string) file.close() - return success + return filepath if success else False + + def remove_dir(self, path): + dir_list, file_list = xbmcvfs.listdir(path) + + for file in file_list: + xbmcvfs.delete(os.path.join(path, file)) + + for directory in dir_list: + self.remove_dir(os.path.join(path, directory)) + + xbmcvfs.rmdir(path) + + def destroy(self): + """ + Deletes the VFS folder and all files in it. + """ + self.remove_dir(self.path) def get_mtime(self, filename): """ diff --git a/resources/plugin.py b/resources/plugin.py index 733de44..2931c75 100644 --- a/resources/plugin.py +++ b/resources/plugin.py @@ -167,6 +167,11 @@ def run(): else: xbmc.log("Invalid user action", xbmc.LOGERROR) + elif path == PATH_SETTINGS_CACHE_CLEAR: + vfs_cache.destroy() + dialog = xbmcgui.Dialog() + dialog.ok("SoundCloud", addon.getLocalizedString(30501)) + else: xbmc.log("Path not found", xbmc.LOGERROR) diff --git a/resources/routes.py b/resources/routes.py index 91cc003..1a3db6d 100644 --- a/resources/routes.py +++ b/resources/routes.py @@ -4,4 +4,5 @@ PATH_PLAY = "/play/" PATH_SEARCH = "/search/" PATH_SEARCH_LEGACY = "/search/query/" +PATH_SETTINGS_CACHE_CLEAR = "/settings/cache/clear/" PATH_USER = "/user/" diff --git a/resources/settings.xml b/resources/settings.xml index 5f4aa60..b1ad982 100644 --- a/resources/settings.xml +++ b/resources/settings.xml @@ -11,5 +11,7 @@ + +