@ -18,6 +18,7 @@ from searx.engines.wikipedia import ( # pylint: disable=unused-import
_fetch_supported_languages ,
supported_languages_url ,
)
from hashlib import md5
# about
about = {
@ -185,6 +186,36 @@ def response(resp):
return results
_IMG_SRC_DEFAULT_URL_PREFIX = " https://commons.wikimedia.org/wiki/Special:FilePath/ "
_IMG_SRC_NEW_URL_PREFIX = " https://upload.wikimedia.org/wikipedia/commons/ "
def get_thumbnail ( img_src ) :
""" Get Thumbnail image from wikimedia commons
Images from commons . wikimedia . org are ( HTTP ) redirected to
upload . wikimedia . org . The redirected URL can be calculated by this
function .
- https : / / stackoverflow . com / a / 33691240
"""
logger . debug ( ' get_thumbnail(): %s ' , img_src )
if not img_src is None and _IMG_SRC_DEFAULT_URL_PREFIX in img_src . split ( ) [ 0 ] :
img_src_name = (
img_src . replace ( _IMG_SRC_DEFAULT_URL_PREFIX , " " )
. split ( " ? " , 1 ) [ 0 ]
. replace ( " % 20 " , " _ " )
. replace ( " % 28 " , " ( " )
. replace ( " % 29 " , " ) " )
)
img_src_name_md5 = md5 ( img_src_name . encode ( " utf-8 " ) ) . hexdigest ( )
img_src = _IMG_SRC_NEW_URL_PREFIX + img_src_name_md5 [ 0 ] + " / " + img_src_name_md5 [ 0 : 2 ] + " / " + img_src_name
logger . debug ( ' get_thumbnail() redirected: %s ' , img_src )
return img_src
def get_results ( attribute_result , attributes , language ) :
results = [ ]
infobox_title = attribute_result . get ( ' itemLabel ' )
@ -221,7 +252,7 @@ def get_results(attribute_result, attributes, language):
# replace the current image only the priority is lower
# (the infobox contain only one image).
if attribute . priority < img_src_priority :
img_src = value
img_src = get_thumbnail( value)
img_src_priority = attribute . priority
elif attribute_type == WDGeoAttribute :
# geocoordinate link