From 59f83c403430335606a26a0d4aad15b58bb32556 Mon Sep 17 00:00:00 2001
From: Marcel van der Veldt <m.vanderveldt@outlook.com>
Date: Wed, 25 Mar 2015 12:46:08 +0100
Subject: [PATCH] better way to clean file names

---
 resources/lib/CreateFiles.py | 17 ++++++-----------
 1 file changed, 6 insertions(+), 11 deletions(-)

diff --git a/resources/lib/CreateFiles.py b/resources/lib/CreateFiles.py
index bc29af0e..3eb1f191 100644
--- a/resources/lib/CreateFiles.py
+++ b/resources/lib/CreateFiles.py
@@ -100,7 +100,7 @@ class CreateFiles():
             if str(item.get("ParentIndexNumber")) != None:
                 filenamestr = self.CleanName(utils.convertEncoding(item.get("SeriesName"))) + " S" + str(item.get("ParentIndexNumber")) + "E" + str(item.get("IndexNumber")) + " (" + item["Id"] + ").nfo"
             else:
-                filenamestr = self.CleanName(utils.convertEncoding(item.get("SeriesName"))) + " S0E0 " + utils.convertEncoding(self.CleanName(item["Name"])) + " (" + item["Id"] + ").nfo"
+                filenamestr = self.CleanName(utils.convertEncoding(item.get("SeriesName"))) + " S0E0 " + self.CleanName(utils.convertEncoding(item["Name"])) + " (" + item["Id"] + ").nfo"
             nfoFile = os.path.join(itemPath,filenamestr)
             rootelement = "episodedetails"
             
@@ -297,13 +297,8 @@ class CreateFiles():
                             themeUrl =  PlayUtils().getPlayUrl(server,themeItems[0]["Id"],themeItems[0])
                             xbmcvfs.copy(themeUrl,themeFile)
         
-    def CleanName(self, name):
-        name = name.replace(":", "-")
-        name = name.replace("\\", "-")
-        name = name.replace("/", "-")
-        name = name.replace("*", "-")
-        name = name.replace("?", "-")
-        name = name.replace("<", "-")
-        name = name.replace(">", "-")
-        name = name.replace("|", "-")
-        return name    
+    def CleanName(self, filename):
+        validFilenameChars = "-_.() %s%s" % (string.ascii_letters, string.digits)
+        cleanedFilename = unicodedata.normalize('NFKD', filename).encode('ASCII', 'ignore')
+        return ''.join(c for c in cleanedFilename if c in validFilenameChars)
+