From 586130b112f2dacd654a6aa3fd871d89759dcfc7 Mon Sep 17 00:00:00 2001 From: yosh Date: Fri, 22 Mar 2024 18:58:58 -0400 Subject: [PATCH] download_label: fix for new bandcamp data-client-items change --- free_bandcamp_downloader/__main__.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/free_bandcamp_downloader/__main__.py b/free_bandcamp_downloader/__main__.py index af49565..0412c89 100644 --- a/free_bandcamp_downloader/__main__.py +++ b/free_bandcamp_downloader/__main__.py @@ -37,6 +37,7 @@ Formats: import atexit import dataclasses import glob +import html import json import os import pprint @@ -271,8 +272,12 @@ class BCFreeDownloader: r = self.session.get(url) r.raise_for_status() soup = BeautifulSoup(r.text, "html.parser") - for album_title in soup.find_all("p", class_="title"): - album_link = urljoin(url, album_title.parent.attrs["href"]) + grid = soup.find("ol", id="music-grid") + albums = [li.a["href"] for li in grid.find_all("li")] + if grid.has_attr("data-client-items"): + albums += [obj["page_url"] for obj in json.loads(html.unescape(grid["data-client-items"]))] + for album_link in albums: + album_link = urljoin(url, album_link) logger.info(f"Downloading {album_link}") try: self.download_album(album_link, force)