Skip to content

Commit e355293

Browse files
Fix file sorting
1 parent fd732f4 commit e355293

File tree

3 files changed

+26
-15
lines changed

3 files changed

+26
-15
lines changed

.pre-commit-config.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
repos:
22
- repo: https://github.com/astral-sh/ruff-pre-commit
3-
rev: v0.14.13
3+
rev: v0.14.14
44
hooks:
55
- id: ruff-format
66
- id: ruff-check

perdoo/comic/archive/session.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,8 @@ def __enter__(self) -> Self:
3434
self._temp_dir = TemporaryDirectory()
3535
self._folder = Path(self._temp_dir.name)
3636
with CONSOLE.status(
37-
f"Extracting {self._archive.filepath} to {self._folder}", spinner="simpleDotsScrolling"
37+
f"Extracting '{self._archive.filepath}' to '{self._folder}'",
38+
spinner="simpleDotsScrolling",
3839
):
3940
self._archive.extract_files(destination=self._folder)
4041
self._extracted = True
@@ -50,7 +51,7 @@ def __exit__(
5051
try:
5152
if exc_type is None and self._extracted and self.updated:
5253
with CONSOLE.status(
53-
f"Archiving {self._folder} to {self._archive.filepath}",
54+
f"Archiving '{self._folder}' to '{self._archive.filepath}'",
5455
spinner="simpleDotsScrolling",
5556
):
5657
filepath = self._archive.archive_files(
@@ -80,20 +81,21 @@ def read(self, filename: str) -> bytes:
8081
return (self._folder / filename).read_bytes()
8182

8283
def write(self, filename: str, data: bytes) -> None:
84+
LOGGER.info("Writing '%s'", filename)
8385
if self._archive.IS_EDITABLE:
8486
self._archive.write_file(filename, data)
8587
else:
8688
(self._folder / filename).write_bytes(data)
8789

8890
def remove(self, filename: str) -> None:
89-
LOGGER.info("Removing %s", filename)
91+
LOGGER.info("Removing '%s'", filename)
9092
if self._archive.IS_EDITABLE:
9193
self._archive.remove_file(filename)
9294
else:
9395
(self._folder / filename).unlink(missing_ok=True)
9496

9597
def rename(self, old_name: str, new_name: str) -> None:
96-
LOGGER.info("Renaming %s to %s", old_name, new_name)
98+
LOGGER.info("Renaming '%s' to '%s'", old_name, new_name)
9799
if self._archive.IS_EDITABLE:
98100
self._archive.rename_file(old_name=old_name, new_name=new_name)
99101
else:

perdoo/comic/comic.py

Lines changed: 19 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
from pathlib import Path
66
from typing import Final, Literal
77

8+
from natsort import humansorted, ns
9+
810
from perdoo.comic.archive import Archive, CB7Archive, CBTArchive, CBZArchive
911
from perdoo.comic.archive.session import ArchiveSession
1012
from perdoo.comic.metadata import ComicInfo, MetronInfo
@@ -47,18 +49,25 @@ def read_metadata(self, session: ArchiveSession) -> tuple[MetronInfo | None, Com
4749
return metroninfo, comicinfo
4850

4951
def list_images(self) -> list[Path]:
50-
return [
51-
Path(name)
52-
for name in self.archive.list_filenames()
53-
if Path(name).suffix.lower() in IMAGE_EXTENSIONS
54-
]
52+
return humansorted(
53+
[
54+
Path(name)
55+
for name in self.archive.list_filenames()
56+
if Path(name).suffix.lower() in IMAGE_EXTENSIONS
57+
],
58+
alg=ns.NA | ns.G | ns.P,
59+
)
5560

5661
def list_extras(self) -> list[Path]:
57-
return [
58-
Path(name)
59-
for name in self.archive.list_filenames()
60-
if name not in METADATA_FILENAMES and Path(name).suffix.lower() not in IMAGE_EXTENSIONS
61-
]
62+
return humansorted(
63+
[
64+
Path(name)
65+
for name in self.archive.list_filenames()
66+
if name not in METADATA_FILENAMES
67+
and Path(name).suffix.lower() not in IMAGE_EXTENSIONS
68+
],
69+
alg=ns.NA | ns.G | ns.P,
70+
)
6271

6372
def validate_naming(self, naming: str) -> bool:
6473
template = Path(naming).stem

0 commit comments

Comments
 (0)