[fix] hostnames plugin: AttributeError: 'NoneType' object has no attribute 'netloc'
Closes: https://github.com/searxng/searxng/issues/4245 Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
This commit is contained in:
		
							parent
							
								
									36a1ef1239
								
							
						
					
					
						commit
						aa85679aff
					
				| @ -100,5 +100,6 @@ def response(resp) -> EngineResults: | |||||||
|     if autotranslate.ok and autotranslate.text: |     if autotranslate.ok and autotranslate.text: | ||||||
|         item_list.insert(0, results.types.Translations.Item(text=autotranslate.text)) |         item_list.insert(0, results.types.Translations.Item(text=autotranslate.text)) | ||||||
| 
 | 
 | ||||||
|  |     if item_list: | ||||||
|         results.add(results.types.Translations(translations=item_list, url=resp.search_params["url"])) |         results.add(results.types.Translations(translations=item_list, url=resp.search_params["url"])) | ||||||
|     return results |     return results | ||||||
|  | |||||||
| @ -19,7 +19,7 @@ ahmia_blacklist: list = [] | |||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| def on_result(_request, _search, result) -> bool: | def on_result(_request, _search, result) -> bool: | ||||||
|     if not result.get('is_onion') or not result.get('parsed_url'): |     if not getattr(result, 'is_onion', None) or not getattr(result, 'parsed_url', None): | ||||||
|         return True |         return True | ||||||
|     result_hash = md5(result['parsed_url'].hostname.encode()).hexdigest() |     result_hash = md5(result['parsed_url'].hostname.encode()).hexdigest() | ||||||
|     return result_hash not in ahmia_blacklist |     return result_hash not in ahmia_blacklist | ||||||
|  | |||||||
| @ -139,7 +139,7 @@ low_priority: set = _load_regular_expressions('low_priority') or set()  # type: | |||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| def _matches_parsed_url(result, pattern): | def _matches_parsed_url(result, pattern): | ||||||
|     return parsed in result and pattern.search(result[parsed].netloc) |     return result[parsed] and (parsed in result and pattern.search(result[parsed].netloc)) | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| def on_result(_request, _search, result) -> bool: | def on_result(_request, _search, result) -> bool: | ||||||
| @ -151,7 +151,7 @@ def on_result(_request, _search, result) -> bool: | |||||||
|             # logger.debug(result['url']) |             # logger.debug(result['url']) | ||||||
| 
 | 
 | ||||||
|         for url_field in _url_fields: |         for url_field in _url_fields: | ||||||
|             if not result.get(url_field): |             if not getattr(result, url_field, None): | ||||||
|                 continue |                 continue | ||||||
| 
 | 
 | ||||||
|             url_src = urlparse(result[url_field]) |             url_src = urlparse(result[url_field]) | ||||||
| @ -164,7 +164,7 @@ def on_result(_request, _search, result) -> bool: | |||||||
|             return False |             return False | ||||||
| 
 | 
 | ||||||
|         for url_field in _url_fields: |         for url_field in _url_fields: | ||||||
|             if not result.get(url_field): |             if not getattr(result, url_field, None): | ||||||
|                 continue |                 continue | ||||||
| 
 | 
 | ||||||
|             url_src = urlparse(result[url_field]) |             url_src = urlparse(result[url_field]) | ||||||
|  | |||||||
| @ -116,6 +116,10 @@ class Translations(BaseAnswer, kw_only=True): | |||||||
|     translations: list[Translations.Item] |     translations: list[Translations.Item] | ||||||
|     """List of translations.""" |     """List of translations.""" | ||||||
| 
 | 
 | ||||||
|  |     def __post_init__(self): | ||||||
|  |         if not self.translations: | ||||||
|  |             raise ValueError("Translation does not have an item in the list translations") | ||||||
|  | 
 | ||||||
|     class Item(msgspec.Struct, kw_only=True): |     class Item(msgspec.Struct, kw_only=True): | ||||||
|         """A single element of the translations / a translation.  A translation |         """A single element of the translations / a translation.  A translation | ||||||
|         consists of at least a mandatory ``text`` property (the translation) , |         consists of at least a mandatory ``text`` property (the translation) , | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user