[feat] engine: implementation of bpb

This commit is contained in:
Bnyro 2023-10-05 17:37:59 +02:00 committed by Markus Heiser
parent 04cfce2eb8
commit bf75a8c2a0
4 changed files with 88 additions and 2 deletions

View 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
View 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

View File

@ -419,6 +419,11 @@ engines:
require_api_key: false require_api_key: false
results: HTML results: HTML
- name: bpb
engine: bpb
shortcut: bpb
disabled: true
- name: btdigg - name: btdigg
engine: btdigg engine: btdigg
shortcut: bt shortcut: bt

View File

@ -1,5 +1,5 @@
export SEARXNG_URL='' export SEARXNG_URL=''
export SEARXNG_PORT='8888' export SEARXNG_PORT='8888'
export SEARXNG_BIND_ADDRESS='127.0.0.1' export SEARXNG_BIND_ADDRESS='127.0.0.1'
export GIT_URL='https://github.com/searxng/searxng' export GIT_URL='https://github.com//Bnyro/searxng'
export GIT_BRANCH='master' export GIT_BRANCH='bpb'