Compare commits

...

3 Commits

3 changed files with 17 additions and 91 deletions
-75
View File
@@ -1,75 +0,0 @@
# SPDX-License-Identifier: AGPL-3.0-or-later
"""Ask.com"""
from urllib.parse import urlencode
import dateutil
from lxml import html
from searx import utils
# Metadata
about = {
"website": "https://www.ask.com/",
"wikidata_id": 'Q847564',
"official_api_documentation": None,
"use_official_api": False,
"require_api_key": False,
"results": "HTML",
}
# Engine Configuration
categories = ['general']
paging = True
max_page = 5
"""Ask.com has at max 5 pages."""
# Base URL
base_url = "https://www.ask.com/web"
def request(query, params):
query_params = {
"q": query,
"page": params["pageno"],
}
params["url"] = f"{base_url}?{urlencode(query_params)}"
return params
def response(resp):
start_tag = 'window.MESON.initialState = {'
end_tag = '}};'
dom = html.fromstring(resp.text)
script = utils.eval_xpath_getindex(dom, '//script', 0, default=None).text
pos = script.index(start_tag) + len(start_tag) - 1
script = script[pos:]
pos = script.index(end_tag) + len(end_tag) - 1
script = script[:pos]
json_resp = utils.js_obj_str_to_python(script)
results = []
for item in json_resp['search']['webResults']['results']:
pubdate_original = item.get('pubdate_original')
if pubdate_original:
pubdate_original = dateutil.parser.parse(pubdate_original)
metadata = [item.get(field) for field in ['category_l1', 'catsy'] if item.get(field)]
results.append(
{
"url": item['url'].split('&ueid')[0],
"title": item['title'],
"content": item['abstract'],
"publishedDate": pubdate_original,
# "thumbnail": item.get('image_url') or None, # these are not thumbs / to large
"metadata": ' | '.join(metadata),
}
)
return results
+12 -11
View File
@@ -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"]}',
}
)
+5 -5
View File
@@ -469,11 +469,6 @@ engines:
engine: arxiv
shortcut: arx
- name: ask
engine: ask
shortcut: ask
disabled: true
- name: azure
engine: azure
shortcut: az
@@ -1203,6 +1198,7 @@ engines:
categories: [general, web]
search_type: web
shortcut: ka
inactive: true
- name: karmasearch images
engine: karmasearch
@@ -1210,18 +1206,21 @@ engines:
search_type: images
shortcut: kai
paging: false
inactive: true
- name: karmasearch videos
engine: karmasearch
categories: [videos, web]
search_type: videos
shortcut: kav
inactive: true
- name: karmasearch news
engine: karmasearch
categories: [news, web]
search_type: news
shortcut: kan
inactive: true
- name: kickass
engine: kickass
@@ -2149,6 +2148,7 @@ engines:
- name: yahoo news
engine: yahoo_news
shortcut: yhn
inactive: true
- name: youtube
shortcut: yt