Merge pull request #93 from return42/genius-misc

Some minor Genius improvements
This commit is contained in:
Markus Heiser 2021-05-27 14:23:22 +00:00 committed by GitHub
commit 32b5a0ef7b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -1,12 +1,17 @@
# SPDX-License-Identifier: AGPL-3.0-or-later # SPDX-License-Identifier: AGPL-3.0-or-later
""" # lint: pylint
Genius # pylint: disable=invalid-name, missing-function-docstring
"""Genius
""" """
from json import loads from json import loads
from urllib.parse import urlencode from urllib.parse import urlencode
from datetime import datetime from datetime import datetime
from searx import logger
logger = logger.getChild('genius engine')
# about # about
about = { about = {
"website": 'https://genius.com/', "website": 'https://genius.com/',
@ -27,49 +32,54 @@ search_url = url + 'search/{index}?{query}&page={pageno}&per_page={page_size}'
def request(query, params): def request(query, params):
params['url'] = search_url.format(query=urlencode({'q': query}), params['url'] = search_url.format(
query=urlencode({'q': query}),
index='multi', index='multi',
page_size=page_size, page_size=page_size,
pageno=params['pageno']) pageno=params['pageno'],
)
return params return params
def parse_lyric(hit): def parse_lyric(hit):
try: try:
content = hit['highlights'][0]['value'] content = hit['highlights'][0]['value']
except: except Exception as e: # pylint: disable=broad-except
logger.error(e, exc_info=True)
content = '' content = ''
timestamp = hit['result']['lyrics_updated_at'] timestamp = hit['result']['lyrics_updated_at']
result = {'url': hit['result']['url'], result = {
'url': hit['result']['url'],
'title': hit['result']['full_title'], 'title': hit['result']['full_title'],
'content': content, 'content': content,
'thumbnail': hit['result']['song_art_image_thumbnail_url'], 'thumbnail': hit['result']['song_art_image_thumbnail_url'],
'template': 'videos.html'} }
if timestamp: if timestamp:
result.update({'publishedDate': datetime.fromtimestamp(timestamp)}) result.update({'publishedDate': datetime.fromtimestamp(timestamp)})
return result return result
def parse_artist(hit): def parse_artist(hit):
result = {'url': hit['result']['url'], result = {
'url': hit['result']['url'],
'title': hit['result']['name'], 'title': hit['result']['name'],
'content': '', 'content': '',
'thumbnail': hit['result']['image_url'], 'thumbnail': hit['result']['image_url'],
'template': 'videos.html'} }
return result return result
def parse_album(hit): def parse_album(hit):
result = {'url': hit['result']['url'], result = {
'url': hit['result']['url'],
'title': hit['result']['full_title'], 'title': hit['result']['full_title'],
'thumbnail': hit['result']['cover_art_url'], 'thumbnail': hit['result']['cover_art_url'],
'content': '', 'content': '',
# 'thumbnail': hit['result']['cover_art_thumbnail_url'], }
'template': 'videos.html'}
try: try:
year = hit['result']['release_date_components']['year'] year = hit['result']['release_date_components']['year']
except: except Exception as e: # pylint: disable=broad-except
pass logger.error(e, exc_info=True)
else: else:
if year: if year:
result.update({'content': 'Released: {}'.format(year)}) result.update({'content': 'Released: {}'.format(year)})