From db97114fb44a9af2ff18d2214de516142e542d27 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sat, 15 Jul 2023 21:41:35 +0200 Subject: [PATCH] Use preview image and other additional images provided by the info provider --- .../DTOtoEntityConverter.php | 24 +++++++++++++++++++ .../Providers/TMEProvider.php | 17 ++++++++++--- 2 files changed, 38 insertions(+), 3 deletions(-) diff --git a/src/Services/InfoProviderSystem/DTOtoEntityConverter.php b/src/Services/InfoProviderSystem/DTOtoEntityConverter.php index b0e10d6a..5518c880 100644 --- a/src/Services/InfoProviderSystem/DTOtoEntityConverter.php +++ b/src/Services/InfoProviderSystem/DTOtoEntityConverter.php @@ -162,6 +162,30 @@ final class DTOtoEntityConverter $entity->addParameter($this->convertParameter($parameter)); } + //Add preview image + $image_type = $this->getImageType(); + + if ($dto->preview_image_url) { + $preview_image = new PartAttachment(); + $preview_image->setURL($dto->preview_image_url); + $preview_image->setName('Main image'); + $preview_image->setAttachmentType($image_type); + + $entity->addAttachment($preview_image); + $entity->setMasterPictureAttachment($preview_image); + } + + //Add other images + foreach ($dto->images ?? [] as $image) { + //Ensure that the image is not the same as the preview image + if ($image->url === $dto->preview_image_url) { + continue; + } + + $entity->addAttachment($this->convertFile($image, $image_type)); + } + + //Add datasheets $datasheet_type = $this->getDatasheetType(); foreach ($dto->datasheets ?? [] as $datasheet) { diff --git a/src/Services/InfoProviderSystem/Providers/TMEProvider.php b/src/Services/InfoProviderSystem/Providers/TMEProvider.php index 0662175c..1540e82a 100644 --- a/src/Services/InfoProviderSystem/Providers/TMEProvider.php +++ b/src/Services/InfoProviderSystem/Providers/TMEProvider.php @@ -86,7 +86,7 @@ class TMEProvider implements InfoProviderInterface $result[] = new SearchResultDTO( provider_key: $this->getProviderKey(), provider_id: $product['Symbol'], - name: $product['OriginalSymbol'] ?? $product['Symbol'], + name: !empty($product['OriginalSymbol']) ? $product['OriginalSymbol'] : $product['Symbol'], description: $product['Description'], category: $product['Category'], manufacturer: $product['Producer'], @@ -122,7 +122,7 @@ class TMEProvider implements InfoProviderInterface return new PartDetailDTO( provider_key: $this->getProviderKey(), provider_id: $product['Symbol'], - name: $product['OriginalSymbol'] ?? $product['Symbol'], + name: !empty($product['OriginalSymbol']) ? $product['OriginalSymbol'] : $product['Symbol'], description: $product['Description'], category: $product['Category'], manufacturer: $product['Producer'], @@ -132,6 +132,7 @@ class TMEProvider implements InfoProviderInterface provider_url: $productInfoPage, footprint: $footprint, datasheets: $files['datasheets'], + images: $files['images'], parameters: $parameters, vendor_infos: [$this->getVendorInfo($id, $productInfoPage)], mass: $product['WeightUnit'] === 'g' ? $product['Weight'] : null, @@ -142,7 +143,7 @@ class TMEProvider implements InfoProviderInterface * Fetches all files for a given product id * @param string $id * @return array> An array with the keys 'datasheet' - * @phpstan-return array{datasheets: list} + * @phpstan-return array{datasheets: list, images: list} */ public function getFiles(string $id): array { @@ -164,9 +165,19 @@ class TMEProvider implements InfoProviderInterface ); } + //Extract images + $imageList = $files['AdditionalPhotoList']; + $images = []; + foreach($imageList as $image) { + $images[] = new FileDTO( + url: $this->normalizeURL($image['HighResolutionPhoto']), + ); + } + return [ 'datasheets' => $datasheets, + 'images' => $images, ]; }