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 @@
+
+