diff --git a/composer.json b/composer.json index 6b29c47..774e708 100644 --- a/composer.json +++ b/composer.json @@ -1,7 +1,7 @@ { "name": "orpheusnet/logchecker", "description": "Logchecker for validating logs generated from supported ripping programs (like EAC and XLD)", - "version": "0.8.4", + "version": "0.8.5", "license": "Unlicense", "type": "library", "authors": [ diff --git a/src/Logchecker.php b/src/Logchecker.php index 8409582..350528e 100644 --- a/src/Logchecker.php +++ b/src/Logchecker.php @@ -116,6 +116,11 @@ class Logchecker { } private function convert_encoding() { + // Whipper uses UTF-8 so we don't need to bother checking, especially as it's + // possible a log may be falsely detected as a different encoding by chardet + if (strpos($this->Log, "Log created by: whipper") !== false) { + return; + } // To parse the log, we want to deal with the log in UTF-8. EAC by default should // always output to UTF-16 and XLD to UTF-8, but sometimes people view the log and // re-encode them to something else (like Windows-1251), and we need to use chardet @@ -159,8 +164,15 @@ class Logchecker { } private function whipper_parse() { + // Whipper 0.7.x has an issue where it can produce invalid YAML + // as it hand writes out the values without dealing properly + // with the escaping the output, so we fix that here + $log = preg_replace_callback('/^ Release: (.+)$/m', function ($match) { + return " Release: ".Yaml::dump($match[1]); + }, $this->Log); + try { - $Yaml = Yaml::parse($this->Log); + $Yaml = Yaml::parse($log); } catch (ParseException $exception) { $this->account('Could not parse whipper log.', 100);