aboutsummaryrefslogtreecommitdiff
path: root/extractors/bandcamp.py
blob: 935a2d88b8fa8da4d3a1ed2c119cac520d588fca (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import re
import logging
import requests
from bs4 import BeautifulSoup

from .common import Extractor

class bandcamp(Extractor):
    pattern = re.compile(r'(http(?:s|):\/\/.*bandcamp.com)')
    filename_template = "%(artist)s/%(playlist)s/%(playlist_index)s - %(title)s.%(ext)s"

    def __init__(self, reg, url):
        super().__init__(reg, url)

    def get_albums(self):
        r = requests.get(self.root)
        soup = BeautifulSoup(r.text, 'html.parser')
        items = soup.select('a[href]')
        for item in items:
            if '/album' in item['href'] and \
                    not item['href'].startswith("http"):
                url = self.root.rstrip('/') + item['href']
                if url not in self._albums:
                    self._albums.append(url)

        if not self._albums:
            logging.warning(f"No albums found at {self.root} ????")