diff --git a/moveSeasoned.py b/moveSeasoned.py index bbaf43b..709495a 100755 --- a/moveSeasoned.py +++ b/moveSeasoned.py @@ -3,9 +3,10 @@ # @Author: KevinMidboe # @Date: 2017-04-12 23:27:51 # @Last Modified by: KevinMidboe -# @Last Modified time: 2017-06-12 20:28:03 +# @Last Modified time: 2017-06-27 15:58:09 -import sys, sqlite3, json, os +import sys, sqlite3, json, os.path +import logging import env_variables as env class episode(object): @@ -44,24 +45,53 @@ class episode(object): def fix_ownership(path): - uid = int(os.environ.get('SUDO_UID')) - gid = int(os.environ.get('SUDO_GID')) - os.chown(path, '1000', '113') + # TODO find this from username from config + uid = 1000 + gid = 113 + os.chown(path, uid, gid) def moveStray(strayId): ep = episode(strayId) for item in ep.video_files: - os.rename(ep.typeDir('parent', mergeItem=item[0]), ep.typeDir('episode', mergeItem=item[1], create=True)) + try: + old_dir = ep.typeDir('parent', mergeItem=item[0]) + new_dir = ep.typeDir('episode', mergeItem=item[1], create=True) + os.rename(old_dir, new_dir) + except FileNotFoundError: + logging.warning(old_dir + ' does not exits, cannot be moved.') for item in ep.subtitles: - os.rename(ep.typeDir('parent', mergeItem=item[0]), ep.typeDir('episode', mergeItem=item[1], create=True)) + try: + old_dir = ep.typeDir('parent', mergeItem=item[0]) + new_dir = ep.typeDir('episode', mergeItem=item[1], create=True) + os.rename(old_dir, new_dir) + except FileNotFoundError: + logging.warning(old_dir + ' does not exits, cannot be moved.') for item in ep.trash: - os.remove(ep.typeDir('parent', mergeItem=item)) + try: + os.remove(ep.typeDir('parent', mergeItem=item)) + except FileNotFoundError: + logging.warning(ep.typeDir('parent', mergeItem=item) + 'does not exist, cannot be removed.') - fix_ownership(ep.typeDir('parent')) - os.rmdir(ep.typeDir('parent')) + fix_ownership(ep.typeDir('episode')) + for root, dirs, files in os.walk(ep.typeDir('episode')): + for item in files: + fix_ownership(os.path.join(ep.typeDir('episode'), item)) + + + # TODO because we might jump over same files, the dir might no longer + # be empty and cannot remove dir like this. + try: + os.rmdir(ep.typeDir('parent')) + except FileNotFoundError: + logging.warning('Cannot remove ' + ep.typeDir('parent') + ', file no longer exists.') if __name__ == '__main__': + if (os.path.exists(env.logfile)): + logging.basicConfig(filename=env.logfile, level=logging.INFO) + else: + print('Logfile could not be found at ' + env.logfile + '. Verifiy presence or disable logging in config.') + moveStray(sys.argv[-1])