Skip to content

Commit

Permalink
Use progressbar instead of print statements
Browse files Browse the repository at this point in the history
- Should give better information to the user on slow IO operations.
  • Loading branch information
bpepple committed Jul 6, 2024
1 parent cea1936 commit 0c61fac
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 22 deletions.
17 changes: 9 additions & 8 deletions metrontagger/duplicates.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,16 +5,20 @@

import io
from dataclasses import dataclass
from logging import getLogger
from pathlib import Path

import pandas as pd
import questionary
from darkseid.comic import Comic
from imagehash import average_hash
from PIL import Image, UnidentifiedImageError
from tqdm import tqdm

from metrontagger.styles import Styles

LOGGER = getLogger(__name__)


@dataclass
class DuplicateIssue:
Expand Down Expand Up @@ -77,15 +81,12 @@ def _image_hashes(self: Duplicates) -> list[dict[str, any]]:
"""

hashes_lst = []
for item in self._file_lst:
questionary.print("Getting page hashes.", style=Styles.INFO)
for item in tqdm(self._file_lst):
comic = Comic(item)
if not comic.is_writable():
questionary.print(f"'{comic}' is not writable. Skipping...")
LOGGER.error(f"{comic} is not writable.")
continue
questionary.print(
f"Attempting to get page hashes for '{comic}'.",
style=Styles.WARNING,
)
pages = [comic.get_page(i) for i in range(comic.get_number_of_pages())]
for i, page in enumerate(pages):
try:
Expand All @@ -103,7 +104,7 @@ def _image_hashes(self: Duplicates) -> list[dict[str, any]]:
if isinstance(e, UnidentifiedImageError)
else f"Unable to get image hash for page {i} of '{comic}'"
)
questionary.print(error_message, style=Styles.ERROR)
LOGGER.exception("%s", error_message)

return hashes_lst

Expand Down Expand Up @@ -183,7 +184,7 @@ def delete_comic_pages(dups_lst: list[DuplicateIssue]) -> None:
"""
results = [
(comic, comic.remove_pages(item.pages_index))
for item in dups_lst
for item in tqdm(dups_lst)
for comic in [Comic(item.path_)]
]

Expand Down
21 changes: 7 additions & 14 deletions metrontagger/run.py
Original file line number Diff line number Diff line change
@@ -1,13 +1,15 @@
from __future__ import annotations

import sys
from logging import getLogger
from pathlib import Path
from typing import TYPE_CHECKING

import questionary
from darkseid.comic import Comic
from darkseid.metadata import Metadata
from darkseid.utils import get_recursive_filelist
from tqdm import tqdm

from metrontagger.duplicates import DuplicateIssue, Duplicates
from metrontagger.filerenamer import FileRenamer
Expand All @@ -20,6 +22,8 @@
from metrontagger.talker import Talker
from metrontagger.validate_ci import SchemaVersion, ValidateComicInfo

LOGGER = getLogger(__name__)


class Runner:
"""Class for running Metron Tagger operations.
Expand Down Expand Up @@ -342,26 +346,15 @@ def _update_ci_xml(file_list: list[DuplicateIssue]) -> None:
None
"""

for item in file_list:
for item in tqdm(file_list):
comic = Comic(item.path_)
if comic.has_metadata():
md = comic.read_metadata()
new_md = Metadata()
new_md.set_default_page_list(comic.get_number_of_pages())
md.overlay(new_md)
if comic.write_metadata(md):
questionary.print(
f"Wrote updated metadata to '{comic}'",
style=Styles.SUCCESS,
)
else:
questionary.print(
f"Failed to updated metadata for {comic}",
style=Styles.WARNING,
)
continue
# No metadata
questionary.print(f"No metadata in {comic}. Skipping...")
if not comic.write_metadata(md):
LOGGER.error("Could not write metadata to %s", comic)

def _remove_duplicates(self: Runner, file_list: list[Path]) -> None:
"""Remove duplicate images from comic archives.
Expand Down

0 comments on commit 0c61fac

Please sign in to comment.