From de49d27846ece533dfc77fff464018493b7ec030 Mon Sep 17 00:00:00 2001 From: Bnyro Date: Sat, 16 May 2026 15:53:23 +0200 Subject: [PATCH] [fix] yandex images: crashes when parsing images without fallback source (#6084) --- searx/engines/yandex.py | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/searx/engines/yandex.py b/searx/engines/yandex.py index 84d18ebe3..5e963475b 100644 --- a/searx/engines/yandex.py +++ b/searx/engines/yandex.py @@ -87,7 +87,6 @@ def request(query, params): def response(resp): if search_type == 'web': - catch_bad_response(resp) dom = html.fromstring(resp.text) @@ -106,7 +105,6 @@ def response(resp): return results if search_type == 'images': - catch_bad_response(resp) html_data = html.fromstring(resp.text) @@ -127,22 +125,25 @@ def response(resp): for _, item_data in json_resp['initialState']['serpList']['items']['entities'].items(): title = item_data['snippet']['title'] source = item_data['snippet']['url'] - thumb = item_data['image'] - fullsize_image = item_data['viewerData']['dups'][0]['url'] - height = item_data['viewerData']['dups'][0]['h'] - width = item_data['viewerData']['dups'][0]['w'] - filesize = item_data['viewerData']['dups'][0]['fileSizeInBytes'] - humanized_filesize = humanize_bytes(filesize) + + image_source = item_data["viewerData"]["thumb"] + for i in item_data['viewerData']['dups'] + item_data['viewerData']['preview']: + if i["h"] > image_source["h"]: + image_source = i + + humanized_filesize = None + if image_source.get("fileSizeInBytes"): + humanized_filesize = humanize_bytes(image_source["fileSizeInBytes"]) results.append( { 'title': title, 'url': source, - 'img_src': fullsize_image, + 'img_src': image_source["url"], 'filesize': humanized_filesize, - 'thumbnail_src': thumb, + 'thumbnail_src': item_data["image"], 'template': 'images.html', - 'resolution': f'{width} x {height}', + 'resolution': f'{image_source["w"]} x {image_source["h"]}', } )