Skip to content

Commit f74d40c

Browse files
committed
[WIP] Pass unverified state further, improve logging for such cases.
1 parent 1a541d9 commit f74d40c

File tree

4 files changed

+21
-6
lines changed

4 files changed

+21
-6
lines changed

whipper/command/cd.py

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -231,6 +231,9 @@ class Rip(_CD):
231231
skipped_tracks = []
232232
# this holds tracks that fail to rip -
233233
# currently only used when the --keep-going option is used
234+
unverified_tracks = []
235+
# this holds tracks that failed to verify -
236+
# currently only used when the --keep-unverified option is used
234237
description = """
235238
Rips a CD.
236239
@@ -500,12 +503,12 @@ def _ripIfNotRipped(number):
500503
number, tries)
501504
if self.options.keep_unverified and not number == 0:
502505
logger.warning("track %d failed to rip. keeping unverified file.", number)
503-
logger.debug("adding %s to skipped_tracks",
506+
logger.debug("adding %s to unverified_tracks",
504507
trackResult)
505-
self.skipped_tracks.append(trackResult)
506-
logger.debug("skipped_tracks = %s",
507-
self.skipped_tracks)
508-
trackResult.skipped = True
508+
self.unverified_tracks.append(trackResult)
509+
logger.debug("unverified_tracks = %s",
510+
self.unverified_tracks)
511+
trackResult.unverified = True
509512
elif self.options.keep_going:
510513
logger.warning("track %d failed to rip.", number)
511514
logger.debug("adding %s to skipped_tracks",
@@ -518,7 +521,7 @@ def _ripIfNotRipped(number):
518521
raise RuntimeError("track can't be ripped. "
519522
"Rip attempts number is equal "
520523
"to {}".format(self.options.max_retries))
521-
if trackResult in self.skipped_tracks:
524+
if trackResult in (self.skipped_tracks or self.unverified_tracks):
522525
print("Skipping CRC comparison for track %d "
523526
"due to rip failure" % number)
524527
else:
@@ -586,6 +589,8 @@ def _ripIfNotRipped(number):
586589
logger.debug('writing m3u file for %r', discName)
587590
self.program.write_m3u(discName)
588591

592+
if len(self.unverified_tracks) > 0:
593+
self.program.unverified_tracks = self.unverified_tracks
589594
if len(self.skipped_tracks) > 0:
590595
logger.warning("the generated cue sheet references %d track(s) "
591596
"which failed to rip so the associated file(s) "
@@ -601,6 +606,7 @@ def _ripIfNotRipped(number):
601606

602607
self.program.writeLog(discName, self.logger)
603608

609+
# TODO: Return non-zero in case of unverified tracks?
604610
if len(self.skipped_tracks) > 0:
605611
logger.warning('%d tracks have been skipped from this rip attempt',
606612
len(self.skipped_tracks))

whipper/common/program.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ class Program:
6060
outdir = None
6161
result = None
6262
skipped_tracks = None
63+
unverified_tracks = None
6364

6465
def __init__(self, config, record=False):
6566
"""

whipper/result/logger.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ class WhipperLogger(result.Logger):
1616
_inARDatabase = 0
1717
_errors = False
1818
_skippedTracks = False
19+
_unverifiedTracks = False
1920

2021
def log(self, ripResult, epoch=time.time()):
2122
"""Return logfile as string."""
@@ -142,6 +143,8 @@ def logRip(self, ripResult, epoch):
142143
message = "There were errors"
143144
elif self._skippedTracks:
144145
message = "Some tracks were not ripped (skipped)"
146+
elif self._unverifiedTracks:
147+
message = "Some tracks could not be verified (but were kept)"
145148
else:
146149
message = "No errors occurred"
147150
data["Health status"] = message
@@ -250,6 +253,10 @@ def trackLog(self, trackResult):
250253
if trackResult.skipped:
251254
track["Status"] = "Track not ripped (skipped)"
252255
self._skippedTracks = True
256+
# Check if the track has failed verification, but has been kept
257+
elif trackResult.unverified:
258+
track["Status"] = "Copy NOT OK (unverified file kept)"
259+
self._unverifiedTracks = True
253260
# Check if Test & Copy CRCs are equal
254261
elif trackResult.testcrc == trackResult.copycrc:
255262
track["Status"] = "Copy OK"

whipper/result/result.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ class TrackResult:
3939
AR = None
4040
classVersion = 3
4141
skipped = False
42+
unverified = False
4243

4344
def __init__(self):
4445
"""

0 commit comments

Comments
 (0)