]> gitweb.erp-flowers.ru Git - erp24_rep/yii-erp24/.git/commitdiff
Парсинг видео
authorVladimir Fomichev <vladimir.fomichev@erp-flowers.ru>
Tue, 2 Sep 2025 13:31:25 +0000 (16:31 +0300)
committerVladimir Fomichev <vladimir.fomichev@erp-flowers.ru>
Tue, 2 Sep 2025 13:31:25 +0000 (16:31 +0300)
erp24/services/MarketplaceService.php
erp24/services/ProductParserService.php

index 3fa395dd3a92775e1f10f5a6acc782a84ff27088..934f82685d96388da0635270301eb9615867318f 100644 (file)
@@ -528,7 +528,7 @@ class MarketplaceService
         $shop->addChild('name', 'Интернет магазин База Цветов 24');
         $shop->addChild('company', 'Интернет магазин База Цветов 24');
         $shop->addChild('url', 'https://bazacvetov24.ru');
-        $shop->addChild('platform', 'BSM/Yandex/Market');
+        //$shop->addChild('platform', 'BSM/Yandex/Market');
 
         // Добавление валюты
         $currencies = $shop->addChild('currencies');
index d05f2fa0bf783a6e818c1d36f9502e5c0ce14a8b..29bd650b84f974a4dce35f953899e8dae691b998 100644 (file)
@@ -15,11 +15,14 @@ class ProductParserService {
 
         $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),
         ];
     }
 
@@ -30,34 +33,41 @@ class ProductParserService {
     }
 
 
-
-
-
-    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