The branch, gotham has been updated
       via  041499da9b041da08f5ac99a355eaa794cf2bd4d (commit)
      from  11fce2d5922a1ce0ace5dded8ce67204d0c993a8 (commit)

- Log -----------------------------------------------------------------
http://xbmc.git.sourceforge.net/git/gitweb.cgi?p=xbmc/scripts;a=commit;h=041499da9b041da08f5ac99a355eaa794cf2bd4d

commit 041499da9b041da08f5ac99a355eaa794cf2bd4d
Author: Martijn Kaijser <[email protected]>
Date:   Fri Jun 6 17:13:23 2014 +0200

    [script.filecleaner] 4.0.1

diff --git a/script.filecleaner/addon.xml b/script.filecleaner/addon.xml
index 03a5590..dca3ef5 100644
--- a/script.filecleaner/addon.xml
+++ b/script.filecleaner/addon.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<addon id="script.filecleaner" name="XBMC File Cleaner" version="4.0.0" 
provider-name="Anthirian, drewzh">
+<addon id="script.filecleaner" name="XBMC File Cleaner" version="4.0.1" 
provider-name="Anthirian, drewzh">
     <requires>
         <import addon="xbmc.python" version="2.14.0" />
         <import addon="xbmc.json" version="6.6.0" />
diff --git a/script.filecleaner/changelog.txt b/script.filecleaner/changelog.txt
index dfdac92..840369b 100644
--- a/script.filecleaner/changelog.txt
+++ b/script.filecleaner/changelog.txt
@@ -1,3 +1,11 @@
+Version 4.0.1
+==============
+- [NEW] Specify whether to clean up or view log on manual run
+
+- [FIX] A memory leak could occur when the user enabled deleting empty folders
+- [FIX] Disabling the addon froze XBMC completely
+- [FIX] Video library was not being cleaned up afterwards
+
 Version 4.0.0
 ==============
 - [NEW] Gotham compatibility
diff --git a/script.filecleaner/default.py b/script.filecleaner/default.py
index ab50f05..bd25d17 100644
--- a/script.filecleaner/default.py
+++ b/script.filecleaner/default.py
@@ -34,6 +34,8 @@ class Cleaner(object):
     TVSHOWS = "episodes"
     CLEANING_TYPE_MOVE = "0"
     CLEANING_TYPE_DELETE = "1"
+    DEFAULT_ACTION_CLEAN = "0"
+    DEFAULT_ACTION_LOG = "1"
 
     movie_filter_fields = ["title", "plot", "plotoutline", "tagline", "votes", 
"rating", "time", "writers",
                            "playcount", "lastplayed", "inprogress", "genre", 
"country", "year", "director",
@@ -102,26 +104,30 @@ class Cleaner(object):
                                 xbmc.executebuiltin("Addon.OpenSettings(%s)" % 
__addonID__)
                             break
                         if get_setting(create_subdirs):
+                            if isinstance(title, unicode):
+                                title = title.encode("utf-8")
                             new_path = 
os.path.join(get_setting(holding_folder), str(title))
                         else:
                             new_path = get_setting(holding_folder)
                         if self.move_file(filename, new_path):
+                            debug("File(s) moved successfully.")
                             count += 1
                             if len(unstacked_path) > 1:
                                 cleaned_files.extend(unstacked_path)
                             else:
                                 cleaned_files.append(filename)
                             self.clean_related_files(filename, new_path)
-                            self.delete_empty_folders(filename)
+                            
self.delete_empty_folders(os.path.dirname(filename))
                     elif get_setting(cleaning_type) == 
self.CLEANING_TYPE_DELETE:
                         if self.delete_file(filename):
+                            debug("File(s) deleted successfully.")
                             count += 1
                             if len(unstacked_path) > 1:
                                 cleaned_files.extend(unstacked_path)
                             else:
                                 cleaned_files.append(filename)
                             self.clean_related_files(filename)
-                            self.delete_empty_folders(filename)
+                            
self.delete_empty_folders(os.path.dirname(filename))
                 else:
                     debug("%r was already deleted. Skipping." % filename, 
xbmc.LOGWARNING)
         else:
@@ -152,18 +158,19 @@ class Cleaner(object):
                     cleaning_results.extend(cleaned_files)
                     summary[video_type] = count
 
-        # Write cleaned file names to the log
+        # Check if we need to perform any post-cleaning operations
         if cleaning_results:
+            # Write cleaned file names to the log
             Log().prepend(cleaning_results)
 
-        # Finally clean the library to account for any deleted videos.
-        if get_setting(clean_xbmc_library) and cleaned_files:
-            xbmc.sleep(5000)  # Sleep 5 seconds to make sure file I/O is done.
+            # Finally clean the library to account for any deleted videos.
+            if get_setting(clean_xbmc_library):
+                xbmc.sleep(2000)  # Sleep 2 seconds to make sure file I/O is 
done.
 
-            if xbmc.getCondVisibility("Library.IsScanningVideo"):
-                debug("The video library is being updated. Skipping library 
cleanup.", xbmc.LOGWARNING)
-            else:
-                xbmc.executebuiltin("XBMC.CleanLibrary(video)")
+                if xbmc.getCondVisibility("Library.IsScanningVideo"):
+                    debug("The video library is being updated. Skipping 
library cleanup.", xbmc.LOGWARNING)
+                else:
+                    xbmc.executebuiltin("XBMC.CleanLibrary(video)")
 
         return self.summarize(summary)
 
@@ -413,7 +420,6 @@ class Cleaner(object):
                 debug("File %r no longer exists." % p, xbmc.LOGERROR)
                 success.append(False)
 
-        debug("Return statuses: %r" % success)
         return any(success)
 
     def delete_empty_folders(self, location):
@@ -431,10 +437,10 @@ class Cleaner(object):
         :return: True if the folder was deleted successfully, False otherwise.
         """
         if not get_setting(delete_folders):
-            debug("Deleting of folders is disabled.")
+            debug("Deleting of empty folders is disabled.")
             return False
 
-        folder = os.path.dirname(self.unstack(location)[0])  # Stacked paths 
should have the same parent, use any
+        folder = self.unstack(location)[0]  # Stacked paths should have the 
same parent, use any
         debug("Checking if %r is empty" % folder)
         ignored_file_types = [file_ext.strip() for file_ext in 
get_setting(ignore_extensions).split(",")]
         debug("Ignoring file types %r" % ignored_file_types)
@@ -446,7 +452,7 @@ class Cleaner(object):
         try:
             for f in files:
                 _, ext = os.path.splitext(f)
-                if ext not in ignored_file_types:
+                if ext and not ext in ignored_file_types:  # ensure f is not a 
folder and its extension is not ignored
                     debug("Found non-ignored file type %r" % ext)
                     empty = False
                     break
@@ -585,10 +591,14 @@ class Cleaner(object):
 
 if __name__ == "__main__":
     cleaner = Cleaner()
-    results = cleaner.clean_all()
-    if results:
-        # Videos were cleaned. Ask the user to view the log file.
-        if xbmcgui.Dialog().yesno(utils.translate(32514), results, 
utils.translate(32519)):
-            
xbmc.executescript("special://home/addons/script.filecleaner/viewer.py")
+    if get_setting(default_action) == cleaner.DEFAULT_ACTION_LOG:
+        
xbmc.executescript("special://home/addons/script.filecleaner/viewer.py")
     else:
-        notify(utils.translate(32520))
+        results = cleaner.clean_all()
+        if results:
+            # Videos were cleaned. Ask the user to view the log file.
+            # TODO: Listen to OnCleanFinished notifications and wait before 
asking to view the log
+            if xbmcgui.Dialog().yesno(utils.translate(32514), results, 
utils.translate(32519)):
+                
xbmc.executescript("special://home/addons/script.filecleaner/viewer.py")
+        else:
+            notify(utils.translate(32520))
diff --git a/script.filecleaner/resources/language/Dutch/strings.po 
b/script.filecleaner/resources/language/Dutch/strings.po
index 03d84b2..51c0f29 100644
--- a/script.filecleaner/resources/language/Dutch/strings.po
+++ b/script.filecleaner/resources/language/Dutch/strings.po
@@ -41,54 +41,66 @@ msgid "[B]Which videos do you want to clean?[/B]"
 msgstr "[B]Welke video's wil je opschonen?[/B]"
 
 msgctxt "#32102"
+msgid "Default action"
+msgstr "Standaardhandeling"
+
+msgctxt "#32103"
+msgid "Clean up"
+msgstr "Maak schoon"
+
+msgctxt "#32104"
+msgid "View log"
+msgstr "Bekijk logboek"
+
+msgctxt "#32105"
 msgid "Cleaning type"
 msgstr "Schoonmaaktype"
 
-msgctxt "#32103"
+msgctxt "#32106"
 msgid "Move elsewhere"
 msgstr "Verplaats naar elders"
 
-msgctxt "#32104"
+msgctxt "#32107"
 msgid "Delete permanently"
 msgstr "Verwijder permanent"
 
-msgctxt "#32105"
+msgctxt "#32108"
 msgid "[I]Please specify where to store watched videos [/I]"
 msgstr "[I]Selecteer een map waar bekeken video's bewaard worden[/I]"
 
-msgctxt "#32106"
+msgctxt "#32109"
 msgid "Holding folder location"
 msgstr "Locatie bewaarmap"
 
-msgctxt "#32107"
+msgctxt "#32110"
 msgid "Create subdirectories (i.e. [B]../Artist[/B], [B]../Movie[/B] and 
[B]../Show[/B])"
 msgstr "Maak submappen aan (bv. [B]../Artiest[/B], [B]../Film[/B] en 
[B]../Serie[/B])"
 
-msgctxt "#32108"
+msgctxt "#32111"
 msgid "Clean movies"
 msgstr "Schoon films op"
 
-msgctxt "#32109"
+msgctxt "#32112"
 msgid "Clean TV shows"
 msgstr "Schoon TV series op"
 
-msgctxt "#32110"
+msgctxt "#32113"
 msgid "Clean music videos"
 msgstr "Schoon videoclips op"
 
-msgctxt "#32111"
+msgctxt "#32114"
 msgid "Clean XBMC video library afterwards"
 msgstr "XBMC videobibliotheek opschonen na afloop"
 
-msgctxt "#32112"
+msgctxt "#32115"
 msgid "Also delete empty folders"
 msgstr "Verwijder tevens lege mappen"
 
-msgctxt "#32113"
+msgctxt "#32116"
 msgid "Ignore files with the following extensions (separate with commas)"
 msgstr "Negeer bestanden met de volgende extensies (scheiden met komma's)"
 
-msgctxt "#32114"
+msgctxt "#32117"
 msgid "Also clean related files with similar names (e.g. subtitles)"
 msgstr "Schoon tevens bestanden op met vergelijkbare namen (bv. ondertitels)"
 
@@ -259,7 +271,7 @@ msgstr " zijn opgeschoond"
 
 msgctxt "#32519"
 msgid "Would you like to view the cleaning log?"
-msgstr "Wil je de schoonmaakgeschiedenis bekijken?"
+msgstr "Wil je het schoonmaaklogboek bekijken?"
 
 msgctxt "#32520"
 msgid "No cleaning required"
diff --git a/script.filecleaner/resources/language/English/strings.po 
b/script.filecleaner/resources/language/English/strings.po
index 8862fc1..be1067d 100644
--- a/script.filecleaner/resources/language/English/strings.po
+++ b/script.filecleaner/resources/language/English/strings.po
@@ -41,54 +41,66 @@ msgid "[B]Which videos do you want to clean?[/B]"
 msgstr ""
 
 msgctxt "#32102"
-msgid "Cleaning type"
+msgid "Default action"
 msgstr ""
 
 msgctxt "#32103"
-msgid "Move elsewhere"
+msgid "Clean up"
 msgstr ""
 
 msgctxt "#32104"
-msgid "Delete permanently"
+msgid "View log"
 msgstr ""
 
 msgctxt "#32105"
-msgid "[I]Please specify where to store watched videos [/I]"
+msgid "Cleaning type"
 msgstr ""
 
 msgctxt "#32106"
-msgid "Holding folder location"
+msgid "Move elsewhere"
 msgstr ""
 
 msgctxt "#32107"
-msgid "Create subdirectories (i.e. [B]../Artist[/B], [B]../Movie[/B] and 
[B]../Show[/B])"
+msgid "Delete permanently"
 msgstr ""
 
 msgctxt "#32108"
-msgid "Clean movies"
+msgid "[I]Please specify where to store watched videos [/I]"
 msgstr ""
 
 msgctxt "#32109"
-msgid "Clean TV shows"
+msgid "Holding folder location"
 msgstr ""
 
 msgctxt "#32110"
-msgid "Clean music videos"
+msgid "Create subdirectories (i.e. [B]../Artist[/B], [B]../Movie[/B] and 
[B]../Show[/B])"
 msgstr ""
 
 msgctxt "#32111"
-msgid "Clean XBMC video library afterwards"
+msgid "Clean movies"
 msgstr ""
 
 msgctxt "#32112"
-msgid "Also delete empty folders"
+msgid "Clean TV shows"
 msgstr ""
 
 msgctxt "#32113"
-msgid "Ignore files with the following extensions (separate with commas)"
+msgid "Clean music videos"
 msgstr ""
 
 msgctxt "#32114"
+msgid "Clean XBMC video library afterwards"
+msgstr ""
+
+msgctxt "#32115"
+msgid "Also delete empty folders"
+msgstr ""
+
+msgctxt "#32116"
+msgid "Ignore files with the following extensions (separate with commas)"
+msgstr ""
+
+msgctxt "#32117"
 msgid "Also clean related files with similar names (e.g. subtitles)"
 msgstr ""
 
diff --git a/script.filecleaner/resources/language/Polish/strings.po 
b/script.filecleaner/resources/language/Polish/strings.po
index 369c357..4c3b96e 100644
--- a/script.filecleaner/resources/language/Polish/strings.po
+++ b/script.filecleaner/resources/language/Polish/strings.po
@@ -41,54 +41,66 @@ msgid "[B]Which videos do you want to clean?[/B]"
 msgstr "[B]Które wideo chcesz usunąć?[/B]"
 
 msgctxt "#32102"
+msgid "Default action"
+msgstr "Domyślna akcja"
+
+msgctxt "#32103"
+msgid "Clean up"
+msgstr "Wyczyść"
+
+msgctxt "#32104"
+msgid "View log"
+msgstr "Pokaż log"
+
+msgctxt "#32105"
 msgid "Cleaning type"
 msgstr "Typ czyszczenia"
 
-msgctxt "#32103"
+msgctxt "#32106"
 msgid "Move elsewhere"
 msgstr "Przenieś gdzie indziej"
 
-msgctxt "#32104"
+msgctxt "#32107"
 msgid "Delete permanently"
 msgstr "Usuń permanentnie"
 
-msgctxt "#32105"
+msgctxt "#32108"
 msgid "[I]Please specify where to store watched videos [/I]"
 msgstr "[I]Wskaż lokalizacje do zapisywania obejrzanych wideo [/I]"
 
-msgctxt "#32106"
+msgctxt "#32109"
 msgid "Holding folder location"
 msgstr "Lokalizacja folderu zawierającego"
 
-msgctxt "#32107"
+msgctxt "#32110"
 msgid "Create subdirectories (i.e. [B]../Artist[/B], [B]../Movie[/B] and 
[B]../Show[/B])"
 msgstr "Stwórz pod-foldery (np. [B]../Artist[/B], [B]../Movie[/B] and 
[B]../Show[/B])"
 
-msgctxt "#32108"
+msgctxt "#32111"
 msgid "Clean movies"
 msgstr "Wyczyść filmy"
 
-msgctxt "#32109"
+msgctxt "#32112"
 msgid "Clean TV shows"
 msgstr "Wyczyść seriale"
 
-msgctxt "#32110"
+msgctxt "#32113"
 msgid "Clean music videos"
 msgstr "Wyczyść teledyski"
 
-msgctxt "#32111"
+msgctxt "#32114"
 msgid "Clean XBMC video library afterwards"
 msgstr "Wyczyść bibliotekę wideo XBMC po zakończeniu"
 
-msgctxt "#32112"
+msgctxt "#32115"
 msgid "Also delete empty folders"
 msgstr "Usuń również puste foldery"
 
-msgctxt "#32113"
+msgctxt "#32116"
 msgid "Ignore files with the following extensions (separate with commas)"
 msgstr "Ignoruj pliki z następującymi rozszerzeniami (oddziel je 
przecinkiem)"
 
-msgctxt "#32114"
+msgctxt "#32117"
 msgid "Also clean related files with similar names (e.g. subtitles)"
 msgstr "Wyczyść pliki z podobną nazwą (np. napisy)"
 
diff --git a/script.filecleaner/resources/settings.xml 
b/script.filecleaner/resources/settings.xml
index ed07d44..34b574d 100644
--- a/script.filecleaner/resources/settings.xml
+++ b/script.filecleaner/resources/settings.xml
@@ -5,21 +5,21 @@
         <setting type="sep" />
         <setting label="32101" type="lsep" />
         <setting type="sep" />
+        <setting label="32102" id="default_action" type="enum" visible="true" 
lvalues="32103|32104" />
+        <setting label="32105" id="cleaning_type" type="enum" visible="true" 
lvalues="32106|32107" />
+        <setting label="32108" id="holding_info" type="lsep" subsetting="true" 
visible="eq(-1,0)" />
 
-        <setting label="32102" id="cleaning_type" type="enum" visible="true" 
lvalues="32103|32104" />
-        <setting label="32105" id="holding_info" type="lsep" subsetting="true" 
visible="eq(-1,0)" />
+        <setting label="32109" id="holding_folder" type="folder" default="" 
option="writeable" subsetting="true" visible="eq(-2,0)" />
+        <setting label="32110" id="create_subdirs" type="bool" default="false" 
subsetting="true" visible="eq(-3,0)" />
 
-        <setting label="32106" id="holding_folder" type="folder" default="" 
option="writeable" subsetting="true" visible="eq(-2,0)" />
-        <setting label="32107" id="create_subdirs" type="bool" default="false" 
subsetting="true" visible="eq(-3,0)" />
+        <setting label="32111" id="clean_movies" type="bool" default="false" 
visible="true" />
+        <setting label="32112" id="clean_tv_shows" type="bool" default="false" 
visible="true" />
+        <setting label="32113" id="clean_music_videos" type="bool" 
default="false" visible="true" />
 
-        <setting label="32108" id="clean_movies" type="bool" default="false" 
visible="true" />
-        <setting label="32109" id="clean_tv_shows" type="bool" default="false" 
visible="true" />
-        <setting label="32110" id="clean_music_videos" type="bool" 
default="false" visible="true" />
-
-        <setting label="32111" id="clean_xbmc_library" type="bool" 
default="true" visible="true" />
-        <setting label="32112" id="delete_folders" type="bool" default="false" 
visible="true" />
-        <setting label="32113" id="ignore_extensions" type="text" 
default=".nfo, .nfo-orig, .tbn, .srt, .ass, .srr, .sfv, .nzb, .jpg, .png, .txt" 
subsetting="true" visible="eq(-1,true)" />
-        <setting label="32114" id="clean_related" type="bool" default="false" 
visible="true" />
+        <setting label="32114" id="clean_xbmc_library" type="bool" 
default="true" visible="true" />
+        <setting label="32115" id="delete_folders" type="bool" default="false" 
visible="true" />
+        <setting label="32116" id="ignore_extensions" type="text" 
default=".nfo, .nfo-orig, .tbn, .srt, .ass, .srr, .sfv, .nzb, .jpg, .png, .txt" 
subsetting="true" visible="eq(-1,true)" />
+        <setting label="32117" id="clean_related" type="bool" default="false" 
visible="true" />
     </category>
 
     <!-- Frequency section -->
diff --git a/script.filecleaner/service.py b/script.filecleaner/service.py
index 4f35d53..ac5f7f3 100644
--- a/script.filecleaner/service.py
+++ b/script.filecleaner/service.py
@@ -14,7 +14,7 @@ def autostart():
     """
     cleaner = Cleaner()
 
-    service_sleep = 10
+    service_sleep = 4  # Lower than 4 causes too much stress on resource 
limited systems such as RPi
     ticker = 0
     delayed_completed = False
 
@@ -40,7 +40,7 @@ def autostart():
         else:
             xbmc.sleep(service_sleep * 1000)
 
-    debug("Abort requested. Terminating.")
+    print("Abort requested. Terminating.")
     return
 
 
diff --git a/script.filecleaner/settings.py b/script.filecleaner/settings.py
index 71da025..2365c31 100644
--- a/script.filecleaner/settings.py
+++ b/script.filecleaner/settings.py
@@ -18,6 +18,7 @@ notifications_enabled = "notifications_enabled"
 notify_when_idle = "notify_when_idle"
 debugging_enabled = "debugging_enabled"
 
+default_action = "default_action"
 cleaning_type = "cleaning_type"
 clean_xbmc_library = "clean_xbmc_library"
 clean_movies = "clean_movies"
@@ -50,7 +51,7 @@ bools = [service_enabled, delete_folders, clean_related, 
notifications_enabled,
          clean_xbmc_library, clean_movies, clean_tv_shows, clean_music_videos, 
clean_when_idle, enable_expiration,
          clean_when_low_rated, ignore_no_rating, clean_when_low_disk_space, 
create_subdirs,
          not_in_progress, exclusion_enabled]
-strings = [ignore_extensions, cleaning_type]
+strings = [ignore_extensions, cleaning_type, default_action]
 numbers = [delayed_start, scan_interval, expire_after, minimum_rating, 
disk_space_threshold]
 paths = [disk_space_check_path, holding_folder, create_subdirs, exclusion1, 
exclusion2, exclusion3]
 
@@ -71,7 +72,7 @@ def get_setting(setting):
     elif setting in strings:
         return str(Addon("script.filecleaner").getSetting(setting))
     elif setting in paths:
-        return 
xbmc.translatePath(Addon("script.filecleaner").getSetting(setting))
+        return 
xbmc.translatePath(Addon("script.filecleaner").getSetting(setting).encode("utf-8"))
     else:
         utils.debug("Failed loading %r value. Type %r cannot be handled." % 
(setting, type(setting)), xbmc.LOGWARNING)
         return None

-----------------------------------------------------------------------

Summary of changes:
 script.filecleaner/addon.xml                       |    2 +-
 script.filecleaner/changelog.txt                   |    8 +++
 script.filecleaner/default.py                      |   50 ++++++++++++--------
 .../resources/language/Dutch/strings.po            |   38 ++++++++++-----
 .../resources/language/English/strings.po          |   36 +++++++++-----
 .../resources/language/Polish/strings.po           |   36 +++++++++-----
 script.filecleaner/resources/settings.xml          |   24 +++++-----
 script.filecleaner/service.py                      |    4 +-
 script.filecleaner/settings.py                     |    5 +-
 9 files changed, 129 insertions(+), 74 deletions(-)


hooks/post-receive
-- 
Scripts

------------------------------------------------------------------------------
Learn Graph Databases - Download FREE O'Reilly Book
"Graph Databases" is the definitive new guide to graph databases and their 
applications. Written by three acclaimed leaders in the field, 
this first edition is now available. Download your free book today!
http://p.sf.net/sfu/NeoTech
_______________________________________________
Xbmc-addons mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/xbmc-addons

Reply via email to