diff --git a/src/controller/buffers.py b/src/controller/buffers.py index a9b51e1..0ff2055 100644 --- a/src/controller/buffers.py +++ b/src/controller/buffers.py @@ -594,7 +594,7 @@ class documentBuffer(feedBuffer): def download(self, *args, **kwargs): post = self.get_post() - filename = post["title"] + filename = utils.safe_filename(post["title"]) # If document does not end in .extension we must fix it so the file dialog will save it properly later. if filename.endswith(post["ext"]) == False: filename = filename+ "."+post["ext"] diff --git a/src/presenters/displayPosts/audio.py b/src/presenters/displayPosts/audio.py index 3d2caac..61352f7 100644 --- a/src/presenters/displayPosts/audio.py +++ b/src/presenters/displayPosts/audio.py @@ -73,7 +73,7 @@ class displayAudioPresenter(base.basePresenter): def get_suggested_filename(self, audio_index): post = self.post[audio_index] - return "{0} - {1}.mp3".format(post["title"], post["artist"]) + return utils.safe_filename("{0} - {1}.mp3".format(post["title"], post["artist"])) def download(self, audio_index, path): post = self.post[audio_index] diff --git a/src/sessionmanager/utils.py b/src/sessionmanager/utils.py index 8283cab..d0fc7a7 100644 --- a/src/sessionmanager/utils.py +++ b/src/sessionmanager/utils.py @@ -90,4 +90,8 @@ def transform_audio_url(url): url = url.replace("/"+parts[-2], "") else: url = url.replace("/"+parts[-3], "") - return url \ No newline at end of file + return url + +def safe_filename(filename): + allowed_symbols = ["_", ".", ",", "-", "(", ")"] + return "".join([c for c in filename if c.isalpha() or c.isdigit() or c==' ' or c in allowed_symbols]).rstrip() \ No newline at end of file