diff --git a/couchpotato/core/_base/_core.py b/couchpotato/core/_base/_core.py index 730bc884..0a98103b 100644 --- a/couchpotato/core/_base/_core.py +++ b/couchpotato/core/_base/_core.py @@ -51,6 +51,7 @@ class Core(Plugin): addEvent('app.api_url', self.createApiUrl) addEvent('app.version', self.version) addEvent('app.load', self.checkDataDir) + addEvent('app.load', self.cleanUpFolders) addEvent('setting.save.core.password', self.md5Password) addEvent('setting.save.core.api_key', self.checkApikey) @@ -75,6 +76,9 @@ class Core(Plugin): return True + def cleanUpFolders(self): + self.deleteEmptyFolder(Env.get('app_dir'), show_error = False) + def available(self, **kwargs): return { 'success': True diff --git a/couchpotato/core/_base/updater/main.py b/couchpotato/core/_base/updater/main.py index 17ed1bdd..cba91b7e 100644 --- a/couchpotato/core/_base/updater/main.py +++ b/couchpotato/core/_base/updater/main.py @@ -142,6 +142,10 @@ class Updater(Plugin): 'success': success } + def doShutdown(self): + self.updater.deletePyc(show_logs = False) + return super(Updater, self).doShutdown() + class BaseUpdater(Plugin): @@ -176,7 +180,7 @@ class BaseUpdater(Plugin): def check(self): pass - def deletePyc(self, only_excess = True): + def deletePyc(self, only_excess = True, show_logs = True): for root, dirs, files in scandir.walk(ss(Env.get('app_dir'))): @@ -186,7 +190,7 @@ class BaseUpdater(Plugin): for excess_pyc_file in excess_pyc_files: full_path = os.path.join(root, excess_pyc_file) - log.debug('Removing old PYC file: %s', full_path) + if show_logs: log.debug('Removing old PYC file: %s', full_path) try: os.remove(full_path) except: @@ -212,9 +216,6 @@ class GitUpdater(BaseUpdater): log.info('Updating to latest version') self.repo.pull() - # Delete leftover .pyc files - self.deletePyc() - return True except: log.error('Failed updating via GIT: %s', traceback.format_exc()) diff --git a/couchpotato/core/plugins/base.py b/couchpotato/core/plugins/base.py index 2bd15e55..ace9de37 100644 --- a/couchpotato/core/plugins/base.py +++ b/couchpotato/core/plugins/base.py @@ -17,6 +17,7 @@ from couchpotato.environment import Env import requests from requests.packages.urllib3 import Timeout from requests.packages.urllib3.exceptions import MaxRetryError +from scandir import scandir from tornado import template from tornado.web import StaticFileHandler @@ -146,6 +147,26 @@ class Plugin(object): return False + def deleteEmptyFolder(self, folder, show_error = True): + folder = sp(folder) + + for root, dirs, files in scandir.walk(folder): + + for dir_name in dirs: + full_path = os.path.join(root, dir_name) + if len(os.listdir(full_path)) == 0: + try: + os.rmdir(full_path) + except: + if show_error: + log.error('Couldn\'t remove empty directory %s: %s', (full_path, traceback.format_exc())) + + try: + os.rmdir(folder) + except: + if show_error: + log.error('Couldn\'t remove empty directory %s: %s', (folder, traceback.format_exc())) + # http request def urlopen(self, url, timeout = 30, data = None, headers = None, files = None, show_error = True): url = urllib2.quote(ss(url), safe = "%/:=&?~#+!$,;'@()*[]") diff --git a/couchpotato/core/plugins/renamer.py b/couchpotato/core/plugins/renamer.py index be9170c0..1701c034 100644 --- a/couchpotato/core/plugins/renamer.py +++ b/couchpotato/core/plugins/renamer.py @@ -823,25 +823,6 @@ Remove it if you want it to be renamed (again, or at least let it try again) return string - def deleteEmptyFolder(self, folder, show_error = True): - folder = sp(folder) - - loge = log.error if show_error else log.debug - for root, dirs, files in scandir.walk(folder): - - for dir_name in dirs: - full_path = os.path.join(root, dir_name) - if len(os.listdir(full_path)) == 0: - try: - os.rmdir(full_path) - except: - loge('Couldn\'t remove empty directory %s: %s', (full_path, traceback.format_exc())) - - try: - os.rmdir(folder) - except: - loge('Couldn\'t remove empty directory %s: %s', (folder, traceback.format_exc())) - def checkSnatched(self, fire_scan = True): if self.checking_snatched: