Improve rar error messages

This commit is contained in:
Timmy Welch 2023-10-04 19:08:17 -07:00
parent 5688cdea89
commit b6d5fe7013
2 changed files with 52 additions and 20 deletions

View File

@ -64,18 +64,25 @@ class RarArchiver(Archiver):
f"-z{tmp_file}",
str(self.path),
]
subprocess.run(
result = subprocess.run(
proc_args,
startupinfo=self.startupinfo,
stdout=subprocess.DEVNULL,
stdin=subprocess.DEVNULL,
stderr=subprocess.DEVNULL,
check=True,
capture_output=True,
encoding="utf-8",
)
if result.returncode != 0:
logger.error(
"Error writing comment to rar archive [exitcode: %d]: %s :: %s",
result.returncode,
self.path,
result.stderr,
)
return False
if platform.system() == "Darwin":
time.sleep(1)
except (subprocess.CalledProcessError, OSError) as e:
except OSError as e:
logger.exception("Error writing comment to rar archive [%s]: %s", e, self.path)
return False
else:
@ -134,9 +141,9 @@ class RarArchiver(Archiver):
result = subprocess.run(
[self.exe, "d", "-c-", self.path, archive_file],
startupinfo=self.startupinfo,
stdout=subprocess.DEVNULL,
stdin=subprocess.DEVNULL,
stderr=subprocess.DEVNULL,
capture_output=True,
encoding="utf-8",
)
if platform.system() == "Darwin":
@ -164,15 +171,18 @@ class RarArchiver(Archiver):
[self.exe, "a", f"-si{archive_name}", f"-ap{archive_parent}", "-c-", "-ep", self.path],
input=data,
startupinfo=self.startupinfo,
stdout=subprocess.DEVNULL,
stderr=subprocess.DEVNULL,
capture_output=True,
)
if platform.system() == "Darwin":
time.sleep(1)
if result.returncode != 0:
logger.error(
"Error writing rar archive [exitcode: %d]: %s :: %s", result.returncode, self.path, archive_file
"Error writing rar archive [exitcode: %d]: %s :: %s :: %s",
result.returncode,
self.path,
archive_file,
result.stderr,
)
return False
else:
@ -219,12 +229,17 @@ class RarArchiver(Archiver):
[self.exe, "a", "-r", "-c-", str(rar_path.absolute()), "."],
cwd=rar_cwd.absolute(),
startupinfo=self.startupinfo,
stdout=subprocess.DEVNULL,
stdin=subprocess.DEVNULL,
stderr=subprocess.DEVNULL,
capture_output=True,
encoding="utf-8",
)
if result.returncode != 0:
logger.error("Error while copying to rar archive [exitcode: %d]: %s", result.returncode, self.path)
logger.error(
"Error while copying to rar archive [exitcode: %d]: %s: %s",
result.returncode,
self.path,
result.stderr,
)
return False
self.path.unlink(missing_ok=True)

View File

@ -20,6 +20,7 @@ import os
import pathlib
import shutil
import sys
import traceback
from typing import cast
from comicapi import filenamelexer, filenameparser, utils
@ -194,8 +195,11 @@ class ComicArchive:
if filename:
try:
image_data = self.archiver.read_file(filename) or b""
except Exception:
logger.error("Error reading in page %d. Substituting logo page.", index)
except Exception as e:
tb = traceback.extract_tb(e.__traceback__)
logger.error(
"%s:%s: Error reading in page %d. Substituting logo page.", tb[1].filename, tb[1].lineno, index
)
image_data = ComicArchive.logo_data
return image_data
@ -325,7 +329,8 @@ class ComicArchive:
self.reset_cache()
return write_success
except Exception as e:
logger.error("Error saving CBI! for %s: %s", self.path, e)
tb = traceback.extract_tb(e.__traceback__)
logger.error("%s:%s: Error saving CBI! for %s: %s", tb[1].filename, tb[1].lineno, self.path, e)
return False
@ -365,7 +370,8 @@ class ComicArchive:
try:
raw_cix = self.archiver.read_file(self.ci_xml_filename) or b""
except Exception as e:
logger.error("Error reading in raw CIX! for %s: %s", self.path, e)
tb = traceback.extract_tb(e.__traceback__)
logger.error("%s:%s: Error reading in raw CIX! for %s: %s", tb[1].filename, tb[1].lineno, self.path, e)
raw_cix = b""
return raw_cix
@ -382,7 +388,8 @@ class ComicArchive:
self.reset_cache()
return write_success
except Exception as e:
logger.error("Error saving CIX! for %s: %s", self.path, e)
tb = traceback.extract_tb(e.__traceback__)
logger.error("%s:%s: Error saving CIX! for %s: %s", tb[1].filename, tb[1].lineno, self.path, e)
return False
@ -440,7 +447,10 @@ class ComicArchive:
if raw_bytes:
raw_comet = raw_bytes.decode("utf-8")
except OSError as e:
logger.exception("Error reading in raw CoMet!: %s", e)
tb = traceback.extract_tb(e.__traceback__)
logger.error(
"%s:%s: Error reading in raw CoMet! for %s: %s", tb[1].filename, tb[1].lineno, self.path, e
)
return raw_comet
def write_comet(self, metadata: GenericMetadata) -> bool:
@ -490,7 +500,14 @@ class ComicArchive:
if d:
data = d.decode("utf-8")
except Exception as e:
logger.warning("Error reading in Comet XML for validation! from %s: %s", self.path, e)
tb = traceback.extract_tb(e.__traceback__)
logger.warning(
"%s:%s: Error reading in Comet XML for validation! from %s: %s",
tb[1].filename,
tb[1].lineno,
self.path,
e,
)
if CoMet().validate_string(data):
# since we found it, save it!
self.comet_filename = n