From db17a9330fe0a351d0d40771164b4a621489f352 Mon Sep 17 00:00:00 2001 From: parker Date: Mon, 27 May 2024 16:19:17 +0200 Subject: [PATCH] Fix advanced search error --- .../Business/Parser/AdvancedSearchParser.php | 10 +++------- .../FilmAffinityApi/Business/Parser/XpathCons.php | 11 ++++++++++- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/src/Xsga/FilmAffinityApi/Business/Parser/AdvancedSearchParser.php b/src/Xsga/FilmAffinityApi/Business/Parser/AdvancedSearchParser.php index 122879b..8f8e338 100644 --- a/src/Xsga/FilmAffinityApi/Business/Parser/AdvancedSearchParser.php +++ b/src/Xsga/FilmAffinityApi/Business/Parser/AdvancedSearchParser.php @@ -51,27 +51,23 @@ public function getAdvSearchResultsDto(): SearchResultsDto // Add search result as root child. $dom->appendChild($dom->importNode($result->item($i), true)); - // Gets film release date. - $data = strtolower(preg_replace('~\s+~u', '', $dom->textContent)); - $dataAux = preg_replace("#\(\d{4}\)#", '#', $data); - $position = strpos($dataAux, '#'); - $year = substr($data, $position, 6); - // New DOMXPath instance. $domXpath = new DOMXPath($dom); // Get data. $titleResult = $domXpath->query(XpathCons::SEARCH_TITLE); $idResult = $domXpath->query(XpathCons::SEARCH_ID); + $yearResult = $domXpath->query(XpathCons::SEARCH_YEAR_ADV); // Prepare data. $title = $titleResult->item(0)->nodeValue; $id = $idResult->item(0)->getAttribute('data-movie-id'); + $year = $yearResult->item(1)->nodeValue; // Set result data. $searchResult = new SingleSearchResultDto(); $searchResult->id = (int)trim($id); - $searchResult->title = trim(str_replace(' ', ' ', trim(str_replace(' ', ' ', $title))) . ' ' . $year); + $searchResult->title = trim(str_replace(' ', ' ', trim(str_replace(' ', ' ', $title))) . ' (' . $year . ')'); // Put single result data into output DTO. $out->results[] = $searchResult; diff --git a/src/Xsga/FilmAffinityApi/Business/Parser/XpathCons.php b/src/Xsga/FilmAffinityApi/Business/Parser/XpathCons.php index d9d4420..e71a764 100644 --- a/src/Xsga/FilmAffinityApi/Business/Parser/XpathCons.php +++ b/src/Xsga/FilmAffinityApi/Business/Parser/XpathCons.php @@ -158,7 +158,7 @@ final class XpathCons public const SEARCH_RESULTS = "//div[contains(@class, 'se-it')]"; /** - * XPath query to get film year om simple search results. + * XPath query to get film year on simple search results. * * @var string * @@ -166,6 +166,15 @@ final class XpathCons */ public const SEARCH_YEAR = "//div[contains(@class, 'ye-w')]"; + /** + * XPath query to get film year on advanced search results. + * + * @var string + * + * @access public + */ + public const SEARCH_YEAR_ADV = "//span[contains(@class, 'mc-year')]"; + /** * XPath query to get film ID in search results. *