def call_video_maker(path_clips, vid_fold, overwrite=False): list_paths = sorted(listdir(path_clips)) for i in list_paths: if i == 'compare': continue p1 = path_clips + i + sep if not check_if_path(p1, ''): # if the folder does not exist, continue. continue # if: a) it has sufficient files, b) overwrite == False, then continue. if (not overwrite) and check_if_path(p1 + vid_fold, ''): len_clips = len(listdir(p1)) print(i, ' ', len_clips, ' ', len(listdir(p1 + vid_fold))) if len(listdir(p1 + vid_fold)) > len_clips-3: continue remove_empty_folders(p1) print(i, ' ', len(listdir(p1))) if len(listdir(p1)) == 0: continue try: bulkResize(p1) except TypeError as e: print('Probably there is a folder with no images {}, skipping it.'.format(p1)) print(e) continue except IOError as e: print('Probably image not found, skipping this video.') print(e) continue fr2vid_main(p1, vid_fold=vid_fold) remove_empty_folders(path_clips)
def sigal_compress(ctx, compressed_dir, albums_dir): """Compress images using Sigal, and merge with main albums directory.""" ctx.invoke(sigal_clean, dir_=compressed_dir) ctx.invoke(build, config="sigal.conf.img.py", destination=compressed_dir) remove_empty_folders(compressed_dir) copy_tree(compressed_dir, albums_dir) shutil.rmtree(compressed_dir)
def remove_file(self): for f in self.files.all(): path = f.fullpath() if os.path.exists(path): os.unlink(path) remove_empty_folders(os.path.dirname(path)) state.db.session.delete(f) user = state.user() if user in self.users: self.users.remove(user) for l in self.lists.filter_by(user_id=user.id): l.items.remove(self) state.db.session.commit() if not self.users: self.delete() else: self.update() Transfer.query.filter_by(item_id=self.id).delete() Changelog.record(user, 'removeitem', self.id)
def run_import(options=None): options = options or {} logger.debug('run_import') prefs = settings.preferences prefix = os.path.expanduser(options.get('path', prefs['importPath'])) if os.path.islink(prefix): prefix = os.path.realpath(prefix) if not prefix[-1] == os.sep: prefix += os.sep prefix_books = os.path.join(os.path.expanduser(prefs['libraryPath']), 'Books' + os.sep) prefix_imported = os.path.join(prefix_books, 'Imported' + os.sep) if prefix_books.startswith(prefix) or prefix.startswith(prefix_books): error = 'invalid path' elif not os.path.exists(prefix): error = 'path not found' elif not os.path.isdir(prefix): error = 'path must be a folder' else: error = None if error: trigger_event( 'activity', { 'activity': 'import', 'progress': [0, 0], 'status': { 'code': 404, 'text': error } }) state.activity = {} return listname = options.get('list') if listname: listitems = [] assert isinstance(prefix, str) books = [] count = 0 for root, folders, files in os.walk(prefix): for f in files: if not state.tasks.connected: return #if f.startswith('._') or f == '.DS_Store': if f.startswith('.'): continue f = os.path.join(root, f) ext = f.split('.')[-1] if ext in extensions: books.append(f) count += 1 if state.activity.get('cancel'): state.activity = {} return if count % 1000 == 0: state.activity = { 'activity': 'import', 'path': prefix, 'progress': [0, count], } trigger_event('activity', state.activity) state.activity = { 'activity': 'import', 'path': prefix, 'progress': [0, len(books)], } trigger_event('activity', state.activity) position = 0 added = 0 last = 0 for f in ox.sorted_strings(books): position += 1 if not os.path.exists(f): continue with db.session(): id = media.get_id(f) file = File.get(id) if not file: f_import = f f = f.replace(prefix, prefix_imported) ox.makedirs(os.path.dirname(f)) if options.get('mode') == 'move': shutil.move(f_import, f) else: shutil.copy(f_import, f) file = add_file(id, f, prefix_books, f_import) file.move() added += 1 if listname: listitems.append(file.item.id) if time.time() - last > 5: last = time.time() state.activity = { 'activity': 'import', 'progress': [position, len(books)], 'path': prefix, 'added': added, } trigger_event('activity', state.activity) if state.activity.get('cancel'): state.activity = {} return with db.session(): if listname and listitems: l = List.get(settings.USER_ID, listname) if l: l.add_items(listitems) trigger_event( 'activity', { 'activity': 'import', 'progress': [position, len(books)], 'path': prefix, 'status': { 'code': 200, 'text': '' }, 'added': added, }) state.activity = {} remove_empty_folders(prefix_books) if options.get('mode') == 'move': remove_empty_folders(prefix)
def run_import(options=None): options = options or {} logger.debug("run_import") prefs = settings.preferences prefix = os.path.expanduser(options.get("path", prefs["importPath"])) if os.path.islink(prefix): prefix = os.path.realpath(prefix) if not prefix[-1] == os.sep: prefix += os.sep prefix_books = os.path.join(os.path.expanduser(prefs["libraryPath"]), "Books" + os.sep) prefix_imported = os.path.join(prefix_books, "Imported" + os.sep) if prefix_books.startswith(prefix) or prefix.startswith(prefix_books): error = "invalid path" elif not os.path.exists(prefix): error = "path not found" elif not os.path.isdir(prefix): error = "path must be a folder" else: error = None if error: trigger_event("activity", {"activity": "import", "progress": [0, 0], "status": {"code": 404, "text": error}}) state.activity = {} return listname = options.get("list") if listname: listitems = [] assert isinstance(prefix, str) books = [] count = 0 for root, folders, files in os.walk(prefix): for f in files: if not state.tasks.connected: return # if f.startswith('._') or f == '.DS_Store': if f.startswith("."): continue f = os.path.join(root, f) ext = f.split(".")[-1] if ext in extensions: books.append(f) count += 1 if state.activity.get("cancel"): state.activity = {} return if count % 1000 == 0: state.activity = {"activity": "import", "path": prefix, "progress": [0, count]} trigger_event("activity", state.activity) state.activity = {"activity": "import", "path": prefix, "progress": [0, len(books)]} trigger_event("activity", state.activity) position = 0 added = 0 last = 0 for f in ox.sorted_strings(books): position += 1 if not os.path.exists(f): continue with db.session(): id = media.get_id(f) file = File.get(id) if not file: f_import = f f = f.replace(prefix, prefix_imported) ox.makedirs(os.path.dirname(f)) if options.get("mode") == "move": shutil.move(f_import, f) else: shutil.copy(f_import, f) file = add_file(id, f, prefix_books, f_import) file.move() added += 1 if listname: listitems.append(file.item.id) if time.time() - last > 5: last = time.time() state.activity = {"activity": "import", "progress": [position, len(books)], "path": prefix, "added": added} trigger_event("activity", state.activity) if state.activity.get("cancel"): state.activity = {} return with db.session(): if listname and listitems: l = List.get(settings.USER_ID, listname) if l: l.add_items(listitems) trigger_event( "activity", { "activity": "import", "progress": [position, len(books)], "path": prefix, "status": {"code": 200, "text": ""}, "added": added, }, ) state.activity = {} remove_empty_folders(prefix_books) if options.get("mode") == "move": remove_empty_folders(prefix)