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