forked from Ponysearch/Ponysearch
[feat] engine: implementation of bpb
This commit is contained in:
parent
04cfce2eb8
commit
bf75a8c2a0
4 changed files with 88 additions and 2 deletions
13
docs/dev/engines/online/bpb.rst
Normal file
13
docs/dev/engines/online/bpb.rst
Normal file
|
@ -0,0 +1,13 @@
|
|||
.. _bpb engine:
|
||||
|
||||
===
|
||||
Bpb
|
||||
===
|
||||
|
||||
.. contents:: Contents
|
||||
:depth: 2
|
||||
:local:
|
||||
:backlinks: entry
|
||||
|
||||
.. automodule:: searx.engines.bpb
|
||||
:members:
|
68
searx/engines/bpb.py
Normal file
68
searx/engines/bpb.py
Normal file
|
@ -0,0 +1,68 @@
|
|||
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
# lint: pylint
|
||||
"""BPB refers to ``Bundeszentrale für poltische Bildung``, which is a German
|
||||
governmental institution aiming to reduce misinformation by providing resources
|
||||
about politics and history.
|
||||
"""
|
||||
|
||||
from datetime import datetime
|
||||
from urllib.parse import urlencode
|
||||
|
||||
about = {
|
||||
'website': "https://www.bpb.de",
|
||||
'official_api_documentation': None,
|
||||
'use_official_api': False,
|
||||
'require_api_key': False,
|
||||
'results': 'JSON',
|
||||
'language': 'de',
|
||||
}
|
||||
|
||||
paging = True
|
||||
categories = ['general']
|
||||
|
||||
|
||||
base_url = "https://www.bpb.de"
|
||||
|
||||
|
||||
def request(query, params):
|
||||
args = {
|
||||
'query[term]': query,
|
||||
'page': params['pageno'] - 1,
|
||||
'sort[direction]': 'descending',
|
||||
'payload[nid]': 65350,
|
||||
}
|
||||
params['url'] = f"{base_url}/bpbapi/filter/search?{urlencode(args)}"
|
||||
return params
|
||||
|
||||
|
||||
def response(resp):
|
||||
results = []
|
||||
|
||||
json_resp = resp.json()
|
||||
|
||||
for result in json_resp['teaser']:
|
||||
img_src = None
|
||||
if result['teaser']['image']:
|
||||
img_src = base_url + result['teaser']['image']['sources'][-1]['url']
|
||||
|
||||
metadata = result['extension']['overline']
|
||||
authors = ', '.join(author['name'] for author in result['extension'].get('authors', []))
|
||||
if authors:
|
||||
metadata += f" | {authors}"
|
||||
|
||||
publishedDate = None
|
||||
if result['extension'].get('publishingDate'):
|
||||
publishedDate = datetime.utcfromtimestamp(result['extension']['publishingDate'])
|
||||
|
||||
results.append(
|
||||
{
|
||||
'url': base_url + result['teaser']['link']['url'],
|
||||
'title': result['teaser']['title'],
|
||||
'content': result['teaser']['text'],
|
||||
'img_src': img_src,
|
||||
'publishedDate': publishedDate,
|
||||
'metadata': metadata,
|
||||
}
|
||||
)
|
||||
|
||||
return results
|
|
@ -419,6 +419,11 @@ engines:
|
|||
require_api_key: false
|
||||
results: HTML
|
||||
|
||||
- name: bpb
|
||||
engine: bpb
|
||||
shortcut: bpb
|
||||
disabled: true
|
||||
|
||||
- name: btdigg
|
||||
engine: btdigg
|
||||
shortcut: bt
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
export SEARXNG_URL=''
|
||||
export SEARXNG_PORT='8888'
|
||||
export SEARXNG_BIND_ADDRESS='127.0.0.1'
|
||||
export GIT_URL='https://github.com/searxng/searxng'
|
||||
export GIT_BRANCH='master'
|
||||
export GIT_URL='https://github.com//Bnyro/searxng'
|
||||
export GIT_BRANCH='bpb'
|
||||
|
|
Loading…
Reference in a new issue