From ec6f98e3c272cd06ae59fafadaaaca77904a522b Mon Sep 17 00:00:00 2001 From: SebLaus <97241865+SebLaus@users.noreply.github.com> Date: Sun, 24 Nov 2024 18:11:57 +0100 Subject: [PATCH] Added Alternate way to get Price if no buttons available (#4342) --- bridges/IdealoBridge.php | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/bridges/IdealoBridge.php b/bridges/IdealoBridge.php index 92bb30d0bad..55cee467f0b 100644 --- a/bridges/IdealoBridge.php +++ b/bridges/IdealoBridge.php @@ -150,29 +150,34 @@ public function collectData() $ActualNewPrice = $html->find('div[id=oopStage-conditionButton-new]', 0); // Second Button contains the used product price $ActualUsedPrice = $html->find('div[id=oopStage-conditionButton-used]', 0); + // Get the first item of the offers list to have an option if there is no New/Used Button available + $altPrice = $html->find('.productOffers-listItemOfferPrice', 0); if ($ActualNewPrice) { $PriceNew = $ActualNewPrice->find('strong', 0)->plaintext; // Save current price $this->saveCacheValue($KeyNEW, $PriceNew); - } else if ($ActualNewPrice === null && $ActualUsedPrice !== null) { - // In case there is no actual New Price and a Ured Price exists, then delete the previous value in the cache - $this->cache->delete($this->getShortName() . '_' . $KeyNEW); + } else if ($altPrice) { + // Get price from first List item if no New/used Buttons available + $PriceNew = trim($altPrice->plaintext); + $this->saveCacheValue($KeyNEW, $PriceNew); + } else if (($ActualNewPrice === null || $altPrice === null) && $ActualUsedPrice !== null) { + // In case there is no actual New Price and a Used Price exists, then delete the previous value in the cache + $this->cache->delete($this->getShortName() . '_' . $KeyNEW); } - // Second Button contains the used product price if ($ActualUsedPrice) { $PriceUsed = $ActualUsedPrice->find('strong', 0)->plaintext; // Save current price $this->saveCacheValue($KeyUSED, $PriceUsed); - } else if ($ActualUsedPrice === null && $ActualNewPrice !== null) { + } else if ($ActualUsedPrice === null && ($ActualNewPrice !== null || $altPrice !== null)) { // In case there is no actual Used Price and a New Price exists, then delete the previous value in the cache - $this->cache->delete($this->getShortName() . '_' . $KeyUSED); + $this->cache->delete($this->getShortName() . '_' . $KeyUSED); } - // Only continue if a price has changed and there exists a New or Used price (sometimes no new Price _and_ Used Price are shown) - if (!($ActualNewPrice === null && $ActualUsedPrice === null ) && ($PriceNew != $OldPriceNew || $PriceUsed != $OldPriceUsed)) { + // Only continue if a price has changed and there exists a New, Used or Alternative price (sometimes no new Price _and_ Used Price are shown) + if (!($ActualNewPrice === null && $ActualUsedPrice === null && $altPrice === null) && ($PriceNew != $OldPriceNew || $PriceUsed != $OldPriceUsed)) { // Get Product Image $image = $html->find('.datasheet-cover-image', 0)->src;