Exemplo n.º 1
0
 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
Exemplo n.º 2
0
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
Exemplo n.º 3
0
 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)
Exemplo n.º 4
0
 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