on master help sign in
[fix] xpath expressions to grap all items from bandcamp's response

I also found some items missing a thumbnail and I used text_extract for content and title, to remove unneeded whitespaces. BTW: added bandcamp's favicon Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>

commit062d589f865cf736620f4ff5d6a8476dfe980ba7 authorMarkus Heiser <markus.heiser@darmarit.de> dateTue 29 Dec 2020, 15:49 (6 years ago) parent4d3c399
2 files changed+8−7
searx/engines/bandcamp.py+8−7 searx/static/themes/oscar/img/icons/bandcamp.png
searx/engines/bandcamp.py+8−7
@@ -51,19 +51,20 @@ def response(resp):
5151 tree = html.fromstring(resp.text)
5252 search_results = tree.xpath('//li[contains(@class, "searchresult")]')
5353 for result in search_results:
54− link = result.xpath('//div[@class="itemurl"]/a')[0]
54+ link = result.xpath('.//div[@class="itemurl"]/a')[0]
5555 result_id = parse_qs(urlparse(link.get('href')).query)["search_item_id"][0]
56− title = result.xpath('//div[@class="heading"]/a/text()')[0]
56+ title = result.xpath('.//div[@class="heading"]/a/text()')
5757 date = dateparse(result.xpath('//div[@class="released"]/text()')[0].replace("released ", ""))
58− content = result.xpath('//div[@class="subhead"]/text()')[0]
59− thumbnail = result.xpath('//div[@class="art"]/img/@src')[0]
58+ content = result.xpath('.//div[@class="subhead"]/text()')
6059 new_result = {
6160 "url": extract_text(link),
62− "title": title,
63− "content": content,
61+ "title": extract_text(title),
62+ "content": extract_text(content),
6463 "publishedDate": date,
65− "thumbnail": thumbnail,
6664 }
65+ thumbnail = result.xpath('.//div[@class="art"]/img/@src')
66+ if thumbnail:
67+ new_result['thumbnail'] = thumbnail[0]
6768 if "album" in result.classes:
6869 new_result["embedded"] = embedded_url.format(type='album', result_id=result_id)
6970 elif "track" in result.classes:
searx/static/themes/oscar/img/icons/bandcamp.pngnew file

Binary file not shown.