mirror of
https://github.com/searxng/searxng.git
synced 2026-05-07 18:03:51 +02:00
[mod] yep: fix engine due to new API layout (#6048)
Apparently, YEP no longer supports images and news search. Also, the naming of the query parameters changed a bit. Closes: https://github.com/searxng/searxng/issues/6047
This commit is contained in:
+22
-52
@@ -1,10 +1,17 @@
|
|||||||
# SPDX-License-Identifier: AGPL-3.0-or-later
|
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||||||
"""Yep (general, images, news)"""
|
"""Yep (general, images, news)"""
|
||||||
|
|
||||||
from datetime import datetime
|
import typing as t
|
||||||
|
|
||||||
from urllib.parse import urlencode
|
from urllib.parse import urlencode
|
||||||
|
|
||||||
|
from searx.result_types import EngineResults
|
||||||
from searx.utils import html_to_text
|
from searx.utils import html_to_text
|
||||||
|
|
||||||
|
if t.TYPE_CHECKING:
|
||||||
|
from searx.extended_types import SXNG_Response
|
||||||
|
from searx.search.processors import OnlineParams
|
||||||
|
|
||||||
about = {
|
about = {
|
||||||
'website': 'https://yep.com/',
|
'website': 'https://yep.com/',
|
||||||
'official_api_documentation': 'https://docs.developer.yelp.com',
|
'official_api_documentation': 'https://docs.developer.yelp.com',
|
||||||
@@ -14,69 +21,32 @@ about = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
base_url = "https://api.yep.com"
|
base_url = "https://api.yep.com"
|
||||||
search_type = "web" # 'web', 'images', 'news'
|
|
||||||
|
|
||||||
safesearch = True
|
safesearch = True
|
||||||
safesearch_map = {0: 'off', 1: 'moderate', 2: 'strict'}
|
safesearch_map = {0: 'off', 1: 'moderate', 2: 'strict'}
|
||||||
|
|
||||||
enable_http2 = False
|
enable_http2 = False
|
||||||
|
|
||||||
|
results_per_page = 20
|
||||||
|
|
||||||
def request(query, params):
|
|
||||||
args = {
|
def request(query: str, params: 'OnlineParams') -> None:
|
||||||
'client': 'web',
|
args = {'query': query, 'safeSearch': safesearch_map[params['safesearch']], 'limit': results_per_page}
|
||||||
'no_correct': 'false',
|
|
||||||
'q': query,
|
|
||||||
'safeSearch': safesearch_map[params['safesearch']],
|
|
||||||
'type': search_type,
|
|
||||||
}
|
|
||||||
params['url'] = f"{base_url}/fs/2/search?{urlencode(args)}"
|
params['url'] = f"{base_url}/fs/2/search?{urlencode(args)}"
|
||||||
params['headers']['Referer'] = 'https://yep.com/'
|
params['headers']['Referer'] = 'https://yep.com/'
|
||||||
params['headers']['Origin'] = 'https://yep.com'
|
params['headers']['Origin'] = 'https://yep.com'
|
||||||
return params
|
|
||||||
|
|
||||||
|
|
||||||
def _web_result(result):
|
def response(resp: 'SXNG_Response') -> EngineResults:
|
||||||
return {
|
res = EngineResults()
|
||||||
'url': result['url'],
|
|
||||||
'title': result['title'],
|
|
||||||
'content': html_to_text(result['snippet']),
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
def _images_result(result):
|
|
||||||
return {
|
|
||||||
'template': 'images.html',
|
|
||||||
'url': result['host_page'],
|
|
||||||
'title': result.get('title', ''),
|
|
||||||
'content': '',
|
|
||||||
'img_src': result['image_id'],
|
|
||||||
'thumbnail_src': result['src'],
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
def _news_result(result):
|
|
||||||
return {
|
|
||||||
'url': result['url'],
|
|
||||||
'title': result['title'],
|
|
||||||
'content': html_to_text(result['snippet']),
|
|
||||||
'publishedDate': datetime.strptime(result['first_seen'][:19], '%Y-%m-%dT%H:%M:%S'),
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
def response(resp):
|
|
||||||
results = []
|
|
||||||
|
|
||||||
for result in resp.json()[1]['results']:
|
for result in resp.json()[1]['results']:
|
||||||
if search_type == "web":
|
res.add(
|
||||||
if result['type'] != 'Organic':
|
res.types.MainResult(
|
||||||
continue
|
url=result['url'],
|
||||||
results.append(_web_result(result))
|
title=result['title'],
|
||||||
elif search_type == "images":
|
content=html_to_text(result['snippet']),
|
||||||
results.append(_images_result(result))
|
)
|
||||||
elif search_type == "news":
|
)
|
||||||
results.append(_news_result(result))
|
|
||||||
else:
|
|
||||||
raise ValueError(f"Unsupported yep search type: {search_type}")
|
|
||||||
|
|
||||||
return results
|
return res
|
||||||
|
|||||||
@@ -688,22 +688,6 @@ engines:
|
|||||||
engine: yep
|
engine: yep
|
||||||
shortcut: yep
|
shortcut: yep
|
||||||
categories: general
|
categories: general
|
||||||
search_type: web
|
|
||||||
timeout: 15
|
|
||||||
disabled: true
|
|
||||||
|
|
||||||
- name: yep images
|
|
||||||
engine: yep
|
|
||||||
shortcut: yepi
|
|
||||||
categories: images
|
|
||||||
search_type: images
|
|
||||||
disabled: true
|
|
||||||
|
|
||||||
- name: yep news
|
|
||||||
engine: yep
|
|
||||||
shortcut: yepn
|
|
||||||
categories: news
|
|
||||||
search_type: news
|
|
||||||
disabled: true
|
disabled: true
|
||||||
|
|
||||||
- name: currency
|
- name: currency
|
||||||
|
|||||||
Reference in New Issue
Block a user