From d4a2c598cc8b8c7489cfe25efe737a61c006dbda Mon Sep 17 00:00:00 2001 From: Alex Cabal Date: Tue, 9 Jan 2024 14:21:31 -0600 Subject: [PATCH] Improve Google Books artwork normalization --- lib/Artwork.php | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/lib/Artwork.php b/lib/Artwork.php index 271e2425..ed1150a3 100644 --- a/lib/Artwork.php +++ b/lib/Artwork.php @@ -511,17 +511,20 @@ class Artwork extends PropertiesBase{ elseif($parsedUrl['host'] == 'www.google.com'){ // New style - if(!preg_match('|^/books/edition/_/[^/]+$|ius', $parsedUrl['path'])){ + if(!preg_match('|^/books/edition/[^/]+/[^/]+$|ius', $parsedUrl['path'])){ throw new Exceptions\InvalidGoogleBooksUrlException(); } + preg_match('|^/books/edition/[^/]+/([^/]+)$|ius', $parsedUrl['path'], $matches); + $id = $matches[1]; + parse_str($parsedUrl['query'] ?? '', $vars); if(!isset($vars['gbpv']) || $vars['gbpv'] !== '1' || !isset($vars['pg']) || is_array($vars['pg'])){ throw new Exceptions\InvalidGoogleBooksUrlException(); } - $outputUrl = 'https://' . $parsedUrl['host'] . $parsedUrl['path'] . '?gbpv=' . $vars['gbpv'] . '&pg=' . $vars['pg']; + $outputUrl = 'https://' . $parsedUrl['host'] . '/books/edition/_/' . $id . '?gbpv=' . $vars['gbpv'] . '&pg=' . $vars['pg']; } else{ throw new Exceptions\InvalidGoogleBooksUrlException();