Skip to content

Commit

Permalink
Fix engines
Browse files Browse the repository at this point in the history
drakeerv committed Oct 31, 2024
1 parent ee81d61 commit 0ccb38e
Showing 4 changed files with 70 additions and 28 deletions.
Original file line number Diff line number Diff line change
@@ -29,7 +29,7 @@ local function get_key(data, key)
return value
end

add_engine('json_engine', function(client, query, opts)
add_engine('json', function(client, query, opts)
local url = Url.from_template(tostring(opts.url), {
query = query.query,
page = tostring(query.page),
30 changes: 20 additions & 10 deletions plugins/engines/mediawiki.lua
Original file line number Diff line number Diff line change
@@ -1,26 +1,36 @@
-- -- Wikipedia scraper for Searched
-- -- Qwant engine for Searched
-- -- Licensed MIT.
-- -- (c) 2024 Dragynfruit

add_engine('mediawiki', function(client, query, opts)
--assert(type(opts['url']) == 'string', '"url" extra must be set to a string')

add_engine('json', function(client, query, opts)
local url = Url.from_template(tostring(opts.url), {
query = query.query,
page = tostring(query.page),
}):string()

local res = client:get(url, {})
local data = parse_json(res)

if opts.results_key then
data = get_key(data, opts.results_key)
end

local results = {}
if data[2] ~= nil then
for i, _ in ipairs(data[2]) do
if data[4] ~= nil and data[4][i] ~= nil then
for i = 1, #data do
if data[i] ~= nil then
local result = data[i]
local result_url = get_key(result, opts.url_key)

if result_url ~= nil then
if opts.url_prefix then
result_url = opts.url_prefix .. result_url
end

results[i] = {
title = data[2][i],
url = data[4][i],
title = get_key(result, opts.title_key),
url = result_url,
general = {
snippet = data[3][i],
snippet = get_key(result, opts.snippet_key),
},
}
end
33 changes: 33 additions & 0 deletions plugins/engines/qwant.lua
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
-- -- JSON engine for Searched
-- -- Licensed MIT.
-- -- (c) 2024 Dragynfruit

add_engine('qwant', function(client, query, opts)
local url = Url.from_template('https://api.qwant.com/v3/search/web?locale=en_us&count=10&p={page}&q={query}', {
query = query.query,
page = tostring(query.page),
}):string()

local res = client:get(url, {})
local data = parse_json(res)
local mainline = data.data.result.items.mainline

local results = {}
local i = 1
for _, item in ipairs(mainline) do
if item.type == 'web' then
for _, result in ipairs(item.items) do
results[i] = {
title = result.title,
url = result.url,
general = {
snippet = result.desc,
},
}
i = i + 1
end
end
end

return results
end)
33 changes: 16 additions & 17 deletions plugins/providers.toml
Original file line number Diff line number Diff line change
@@ -8,7 +8,7 @@ kinds = ["sear"]

[wikipedia]
name = "Wikipedia (English)"
engine = "json_engine"
engine = "json"
description = "The free encyclopedia"
kinds = ["sear"]
[wikipedia.extra]
@@ -27,7 +27,7 @@ kinds = ["sear"]
safe_search = "yes"

[wiby]
engine = "json_engine"
engine = "json"
name = "Wiby"
description = "A search engine for finding old websites"
kinds = ["sear"]
@@ -41,7 +41,7 @@ kinds = ["sear"]
snippet_key = "Snippet"

[crowdview]
engine = "json_engine"
engine = "json"
name = "CrowdView"
description = "A search engine for forum threads"
kinds = ["sear"]
@@ -53,22 +53,22 @@ kinds = ["sear"]
snippet_key = "snippet"

[encyclosearch]
engine = "json_engine"
engine = "json"
name = "EncycloSearch"
description = "A search engine for encyclopedias"
kinds = ["sear"]
[encyclosearch.features]
pagination = "1"

[encyclosearch.extra]
url = "https://encyclosearch.org/encyclosphere/search?q={query}&page={page}&resultsPerPage=15"
url = "https://encyclosearch.org/encyclosphere/search?resultsPerPage=15&q={query}&page={page}"
results_key = "Results"
url_key = "SourceURL"
title_key = "Title"
snippet_key = "Description"

[mdn]
engine = "json_engine"
engine = "json"
name = "MDN"
description = "Mozilla Developer Network"
kinds = ["sear"]
@@ -84,7 +84,7 @@ kinds = ["sear"]
snippet_key = "summary"

[mankier]
engine = "json_engine"
engine = "json"
name = "Mankier"
description = "A search engine for linux man pages"
kinds = ["sear"]
@@ -98,7 +98,7 @@ kinds = ["sear"]
# these are kind of broken because they can have multiple results under instances
# vvvvvvvvvvvvvvvvvvvvvvvvvvv
[openaire_data]
engine = "json_engine"
engine = "json"
name = "OpenAIRE Datasets"
description = "A search engine for datasets"
kinds = ["sear"]
@@ -113,7 +113,7 @@ kinds = ["sear"]
snippet_key = "metadata/oaf:entity/oaf:result/description/$"

[openaire_pubs]
engine = "json_engine"
engine = "json"
name = "OpenAIRE Publications"
description = "A search engine for publications"
kinds = ["sear"]
@@ -129,7 +129,7 @@ kinds = ["sear"]
# ^^^^^^^^^^^^^^^^^^^^^^^

[packagist]
engine = "json_engine"
engine = "json"
name = "Packagist"
description = "A search engine for PHP packages"
kinds = ["sear"]
@@ -144,17 +144,16 @@ kinds = ["sear"]
snippet_key = "description"

[qwant]
engine = "json_engine"
name = "Qwant"
description = "A privacy-respecting search engine"
kinds = ["sear"]
[qwant.features]
pagination = "1"
safe_search = "multilevel"

[qwant.extra]
url = "https://api.qwant.com/v3/search/web?locale=en_us&count=10&p={page}&q={query}"
results_key = "data/result/items/mainline/2/items"
url_key = "url"
title_key = "title"
snippet_key = "desc"
# [qwant.extra]
# url = "https://api.qwant.com/v3/search/web?locale=en_us&count=10&p={page}&q={query}"
# results_key = "data/result/items/mainline/2/items"
# url_key = "url"
# title_key = "title"
# snippet_key = "desc"

0 comments on commit 0ccb38e

Please sign in to comment.