From 2921d3cd17987fabf66f7a901fc8afeedb3351ef Mon Sep 17 00:00:00 2001 From: Markus Heiser Date: Sat, 19 Feb 2022 21:27:20 +0100 Subject: [PATCH] [mod] add artwork to mixcloud & soundcloud engines Signed-off-by: Markus Heiser --- searx/engines/mixcloud.py | 43 +++++++++++++++---------------------- searx/engines/soundcloud.py | 28 +++++++++++------------- 2 files changed, 29 insertions(+), 42 deletions(-) diff --git a/searx/engines/mixcloud.py b/searx/engines/mixcloud.py index af5126304..3f255697e 100644 --- a/searx/engines/mixcloud.py +++ b/searx/engines/mixcloud.py @@ -1,11 +1,11 @@ # SPDX-License-Identifier: AGPL-3.0-or-later -""" - Mixcloud (Music) +# lint: pylint +"""Mixcloud (Music) + """ -from json import loads -from dateutil import parser from urllib.parse import urlencode +from dateutil import parser # about about = { @@ -26,38 +26,29 @@ url = 'https://api.mixcloud.com/' search_url = url + 'search/?{query}&type=cloudcast&limit=10&offset={offset}' iframe_src = "https://www.mixcloud.com/widget/iframe/?feed={url}" -# do search-request + def request(query, params): offset = (params['pageno'] - 1) * 10 - params['url'] = search_url.format(query=urlencode({'q': query}), offset=offset) - return params -# get response from search-request def response(resp): results = [] + search_res = resp.json() - search_res = loads(resp.text) - - # parse results for result in search_res.get('data', []): - title = result['name'] - url = result['url'] - content = result['user']['name'] + + r_url = result['url'] publishedDate = parser.parse(result['created_time']) + res = { + 'url': r_url, + 'title': result['name'], + 'iframe_src': iframe_src.format(url=r_url), + 'img_src': result['pictures']['medium'], + 'publishedDate': publishedDate, + 'content': result['user']['name'], + } + results.append(res) - # append result - results.append( - { - 'url': url, - 'title': title, - 'iframe_src': iframe_src.format(url=url), - 'publishedDate': publishedDate, - 'content': content, - } - ) - - # return results return results diff --git a/searx/engines/soundcloud.py b/searx/engines/soundcloud.py index e189c5d8e..78947c69c 100644 --- a/searx/engines/soundcloud.py +++ b/searx/engines/soundcloud.py @@ -81,27 +81,23 @@ def request(query, params): # get response from search-request def response(resp): results = [] - search_res = loads(resp.text) # parse results for result in search_res.get('collection', []): + if result['kind'] in ('track', 'playlist'): - title = result['title'] - content = result['description'] or '' - publishedDate = parser.parse(result['last_modified']) uri = quote_plus(result['uri']) + res = { + 'url': result['permalink_url'], + 'title': result['title'], + 'content': result['description'] or '', + 'publishedDate': parser.parse(result['last_modified']), + 'iframe_src': "https://w.soundcloud.com/player/?url=" + uri, + } + img_src = result['artwork_url'] or result['user']['avatar_url'] + if img_src: + res['img_src'] = img_src + results.append(res) - # append result - results.append( - { - 'url': result['permalink_url'], - 'title': title, - 'publishedDate': publishedDate, - 'iframe_src': "https://w.soundcloud.com/player/?url=" + uri, - 'content': content, - } - ) - - # return results return results