def _move_video_file(self, video_id: int, directory: str): self.provider.register_notifications() try: filename = self.database.get_video_filename(video_id) directory = AbsolutePath.ensure_directory(directory) if not PathTree(self.database.video_folders).in_folders(directory): raise exceptions.ForbiddenVideoFolder( directory, self.database.video_folders) dst = AbsolutePath.file_path(directory, filename.file_title, filename.extension) self.copy_work = FileCopier(filename, dst, notifier=self.notifier, notify_end=False) with Profiler(self.database.lang.profile_move, notifier=self.notifier): done = self.copy_work.move() self.copy_work = None if done: old_path = self.database.change_video_path(video_id, dst) if old_path: old_path.delete() self.provider.refresh() self.notifier.notify(Done()) else: self.notifier.notify(Cancelled()) except Exception as exc: self.database.notifier.notify( End( self.database.lang.error_moving_file.format( name=type(exc).__name__, message=exc))) finally: self.db_loading_thread = None
def main(): if len(sys.argv) != 2: return folder = AbsolutePath.ensure_directory(sys.argv[1]) for basename in folder.listdir(): try: path = AbsolutePath.join(folder, basename) if not path.isfile(): continue image = Image.open(path.path) if image.is_animated: print(path) except UnidentifiedImageError: pass
def __init__(self, path, folders=None, notifier=None, lang=None): # type: (PathType, Iterable[PathType], Notifier, DefaultLanguage) -> None # Paths self.__db_folder = AbsolutePath.ensure_directory(path) self.__thumb_folder = new_sub_folder(self.__db_folder, "thumbnails").mkdir() self.__json_path = new_sub_file(self.__db_folder, "json") self.__miniatures_path = new_sub_file(self.__db_folder, "miniatures.json") self.__log_path = new_sub_file(self.__db_folder, "log") # RAM data self.__message = None self.lang = lang or DefaultLanguage # Set log file notifier = notifier or DEFAULT_NOTIFIER notifier.set_log_path(self.__log_path.path) # Load database super().__init__(self.__json_path, folders, notifier) # Set special properties with Profiler("install special properties", notifier=self.notifier): SpecialProperties.install(self)
def set_folder(self, folder: PathType): folder = AbsolutePath.ensure_directory(folder) if self.folder is None or self.folder != folder: self.folder = folder self.data = None