From deaf37d5a9894e49921f2930dff2e0b588682315 Mon Sep 17 00:00:00 2001 From: itismadness Date: Thu, 14 Aug 2025 16:20:05 +0000 Subject: [PATCH] allow omitting 'Log checksum' string in foreign logs For EAC logs, it's expected that for logs with checksum the string will be '==== Log checksum ... ===='. For foreign logs, it's also assumed that it'll be like that, but given the nature of translation files, it's possible that 'Log checksum' wasn't translated and omitted and thus doesn't appear there, however the checksum is still valid. --- src/Logchecker.php | 17 ++-- tests/logs/eac/details/jp_2.json | 11 +++ tests/logs/eac/html/jp_2.log | 136 +++++++++++++++++++++++++++++++ 3 files changed, 159 insertions(+), 5 deletions(-) create mode 100644 tests/logs/eac/details/jp_2.json create mode 100644 tests/logs/eac/html/jp_2.log diff --git a/src/Logchecker.php b/src/Logchecker.php index c4ff52c..ce5b557 100644 --- a/src/Logchecker.php +++ b/src/Logchecker.php @@ -407,9 +407,16 @@ class Logchecker $this->log = str_replace(array("\r\n", "\r"), array("\n", ""), $this->log); + // Some foreign logs end up omitting "Log checksum" for whatever reason (probably bad translation file) + // so we allow it to be missing for those, but english should always have it, and it's also the bulk of + // our log uploads anyway. + $eacChecksumString = $this->language === 'en' + ? "/(====[ ]+Log checksum [\d\w ]+[ ]+====)/i" + : "/(====[ ]+[\d\w ]+[ ]+====)/i"; + // Split the log apart - if (preg_match("/[\=]+\s+Log checksum/i", $this->log)) { // eac checksum - $this->logs = preg_split("/(\n\=+\s+Log checksum.*)/i", $this->log, -1, PREG_SPLIT_DELIM_CAPTURE); + if (preg_match($eacChecksumString, $this->log)) { // eac checksum + $this->logs = preg_split("/(\n====[ ]+[\d\w ]+[ ]+====)/i", $this->log, -1, PREG_SPLIT_DELIM_CAPTURE); } elseif ( preg_match( "/[\-]+BEGIN XLD SIGNATURE[\S\n\-]+END XLD SIGNATURE[\-]+/i", @@ -446,7 +453,7 @@ class Logchecker unset($this->logs[$Key]); } elseif ( $this->checksumStatus === Check\Checksum::CHECKSUM_OK - && preg_match("/[\=]+\s+Log checksum/i", $Log) + && preg_match($eacChecksumString, $Log) ) { $this->logs[$Key - 1] .= $Log; unset($this->logs[$Key]); @@ -477,7 +484,7 @@ class Logchecker # that 0.99 included (-30 points) $this->account("EAC version older than 0.99", 30); } - } elseif (!preg_match('/(\=+\s+Log checksum.*)/i', $Log)) { + } elseif (!preg_match($eacChecksumString, $Log)) { // Above version 1 and no checksum $this->checksumStatus = Check\Checksum::CHECKSUM_MISSING; } @@ -563,7 +570,7 @@ class Logchecker } $Class = $this->checksumStatus === Check\Checksum::CHECKSUM_OK ? 'good' : 'bad'; - $Log = preg_replace('/(\=+\s+Log checksum.*)/i', "$1", $Log, 1, $eacCount); + $Log = preg_replace($eacChecksumString, "$1", $Log, 1, $eacCount); $Log = preg_replace( '/([\-]+BEGIN XLD SIGNATURE[\S\n\-]+END XLD SIGNATURE[\-]+)/i', "$1", diff --git a/tests/logs/eac/details/jp_2.json b/tests/logs/eac/details/jp_2.json new file mode 100644 index 0000000..db97d7d --- /dev/null +++ b/tests/logs/eac/details/jp_2.json @@ -0,0 +1,11 @@ +{ + "ripper": "EAC", + "version": "1.8", + "language": "jp", + "combined": false, + "score": 100, + "checksum": "checksum_ok", + "details": [ + "[Notice] Translated log from \u65e5\u672c\u8a9e (Japanese) to English." + ] +} \ No newline at end of file diff --git a/tests/logs/eac/html/jp_2.log b/tests/logs/eac/html/jp_2.log new file mode 100644 index 0000000..68a3e8c --- /dev/null +++ b/tests/logs/eac/html/jp_2.log @@ -0,0 +1,136 @@ +Exact Audio Copy V1.8 from 15. July 2024 + +EAC extraction logfile from : 27. April 2025, 23:59 + +Monochrome Fox / Burning Red + +Used Drive : : ATAPI iHAS324 B Adapter: 1 ID: 0 (not found in database) + +Read mode : Secure +Utilize accurate stream : Yes +Defeat audio cache : Yes +Make use of C2 pointers : No + +Read offset correction : 6 +Overread into Lead-In and Lead-Out : No +Fill up missing offset samples with silence : Yes +Delete leading and trailing silent blocks : No +Null samples used in CRC calculations : Yes +Used interface : Native Win32 interface for XP/Vista/Win 7 +Gap handling : Appended to previous track + +Used output format : User Defined Encoder +Selected bitrate : 896 kBit/s +Quality : High +Add ID3 tag : No +Command line compressor : C:\Program Files (x86)\Exact Audio Copy\Flac\flac.exe +Additional command line options : -8 -V -T "ARTIST=%artist%" -T "TITLE=%title%" -T "ALBUM=%albumtitle%" -T "DATE=%year%" -T +"TrackNUMBER=%Tracknr%" -T "GENRE=%genre%" -T "PERFORMER=%albuminterpret%" -T "COMPOSER=%composer%" %haslyrics%--tag-from-file=LYRICS="%lyricsfile%"%haslyrics% -T "ALBUMARTIST=%albumartist%" -T "DISCNUMBER=%cdnumber%" -T "TOTALDISCS=%totalcds%" -T "TOTALTrackS=%numTracks%" -T "COMMENT=%comment%" %source% -o %dest% + + +TOC of the extracted CD + + Track | Start | Length | Start sector | End sector + ----------------------------------------------- + 1 | 0:00.00 | 4:48.00 | 0 | 21599 + 2 | 4:48.00 | 4:40.00 | 21600 | 42599 + 3 | 9:28.00 | 4:30.00 | 42600 | 62849 + 4 | 13:58.00 | 4:48.00 | 62850 | 84449 + 5 | 18:46.00 | 4:40.00 | 84450 | 105449 + 6 | 23:26.00 | 4:30.00 | 105450 | 125699 + + +Track 1 + + Filename Z:\Music\Burning Red\01 Burning Red.wav + + Pre-gap length 0:00:02.00 + + Peak level 100.0 % + Extraction speed 5.8 X + Track quality 100.0 % + Test CRC BF74E49F + Copy CRC BF74E49F + Track not present in AccurateRip database + Copy OK + +Track 2 + + Filename Z:\Music\Burning Red\02 シクラメン.wav + + Peak level 100.0 % + Extraction speed 6.2 X + Track quality 100.0 % + Test CRC 50959519 + Copy CRC 50959519 + Track not present in AccurateRip database + Copy OK + +Track 3 + + Filename Z:\Music\Burning Red\03 Can we say, ''See you again''.wav + + Peak level 100.0 % + Extraction speed 6.5 X + Track quality 100.0 % + Test CRC 91395EF1 + Copy CRC 91395EF1 + Track not present in AccurateRip database + Copy OK + +Track 4 + + Filename Z:\Music\Burning Red\04 Burning Red[Instrumental].wav + + Peak level 100.0 % + Extraction speed 7.3 X + Track quality 100.0 % + Test CRC 3DC78F9A + Copy CRC 3DC78F9A + Track not present in AccurateRip database + Copy OK + +Track 5 + + Filename Z:\Music\Burning Red\05 シクラメン[Instrumental].wav + + Peak level 100.0 % + Extraction speed 7.7 X + Track quality 100.0 % + Test CRC DDFD8730 + Copy CRC DDFD8730 + Track not present in AccurateRip database + Copy OK + +Track 6 + + Filename Z:\Music\Burning Red\06 Can we say, ''See you again''[Instrumental].wav + + Peak level 100.0 % + Extraction speed 8.2 X + Track quality 100.0 % + Test CRC C9882387 + Copy CRC C9882387 + Track not present in AccurateRip database + Copy OK + + +None of the Tracks are present in the AccurateRip database + +No errors occurred + +End of status report + +---- AcoustID Plugin V1.2.0 + +Submitting 6 results to AcoustID + +AcoustID successfully submitted + + +---- CUETools DB Plugin V2.2.6 + +[CTDB TOCID: GVkkACY1LQIdTg3Z78v_T9UJMv0-] disk not present in database +Submit result: GVkkACY1LQIdTg3Z78v_T9UJMv0- has been uploaded + +==== BFD4FF0569E8A2DFE2C415F36B87548CE6FBD2930322D4CD34D3EAD2D7877094 ==== \ No newline at end of file