$xpath = new DOMXPath($dom);
+
return [
'name' => $this->extractName($xpath),
- 'image_url' => $this->extractImageUrl($xpath),
+ 'image_url' => ($this->extractImageUrls($xpath))[0],
'description' => $this->extractDescription($xpath),
'properties' => $this->extractProperties($xpath),
+ 'video_url' => $this->extractVideoUrl($xpath),
+ 'image_urls' => $this->extractImageUrls($xpath),
];
}
}
-
-
-
- private function extractImageUrl(DOMXPath $xpath): string
+ private function extractVideoUrl(DOMXPath $xpath): string
{
- $q1 = "//div[@id='js-detect-events']" .
- "//div[contains(concat(' ', normalize-space(@class), ' '), ' swiper-slide-active ')]" .
- "//img[contains(concat(' ', normalize-space(@class), ' '), ' main-image-content ')]";
-
- $img = $xpath->query($q1)->item(0);
-
- if (!$img) {
- $q2 = "//div[@id='js-detect-events']//img[contains(concat(' ', normalize-space(@class), ' '), ' main-image-content ')]";
- $img = $xpath->query($q2)->item(0);
- }
+ $video = $xpath->query("//video")->item(0);
$src = null;
- if ($img) {
- $src = $img->getAttribute('data-src');
+ if ($video) {
+ $src = $video->getAttribute('src');
+
}
+ return $src;
+ }
- if (!$src) {
- $zoom = $xpath->query("//div[@id='js-image-zoom']")->item(0);
- if ($zoom && preg_match('/background-image:\s*url\([\"\']?(.*?)[\"\']?\)/i', $zoom->getAttribute('style'), $m)) {
- $src = $m[1];
+ private function extractImageUrls(\DOMXPath $xpath): array
+ {
+ $urls = [];
+
+ $queryImages = "(
+ //div[starts-with(@id,'mainslider_') or contains(concat(' ', normalize-space(@class), ' '), ' swiper-container ')]
+ //img[contains(concat(' ', normalize-space(@class), ' '), ' main-image-content ')]
+ )";
+ foreach ($xpath->query($queryImages) as $img) {
+ /** @var \DOMElement $img */
+ $src = $img->getAttribute('src');
+ if (!$src) {
+ $src = $img->getAttribute('data-src');
+ }
+ if ($src) {
+ $urls[] = $src;
}
}
- return $src;
+
+ $urls = array_values(array_unique($urls));
+ $urls = array_values(array_filter($urls, fn($u) => preg_match('~flowwow-images\.com/data/flowers/~', $u)));
+
+ return $urls;
}
private function extractDescription(DOMXPath $xpath): string