+class BandcampAlbumIE(InfoExtractor):
+    IE_NAME = 'Bandcamp:album'
+    _VALID_URL = r'http://.*?\.bandcamp\.com/album/(?P<title>.*)'
+
+    _TEST = {
+        'url': 'http://blazo.bandcamp.com/album/jazz-format-mixtape-vol-1',
+        'playlist': [
+            {
+                'file': '1353101989.mp3',
+                'md5': '39bc1eded3476e927c724321ddf116cf',
+                'info_dict': {
+                    'title': 'Intro',
+                }
+            },
+            {
+                'file': '38097443.mp3',
+                'md5': '1a2c32e2691474643e912cc6cd4bffaa',
+                'info_dict': {
+                    'title': 'Kero One - Keep It Alive (Blazo remix)',
+                }
+            },
+        ],
+        'params': {
+            'playlistend': 2
+        },
+        'skip': 'Bancamp imposes download limits. See test_playlists:test_bandcamp_album for the playlist test'
+    }
+
+    def _real_extract(self, url):
+        mobj = re.match(self._VALID_URL, url)
+        title = mobj.group('title')
+        webpage = self._download_webpage(url, title)
+        tracks_paths = re.findall(r'<a href="(.*?)" itemprop="url">', webpage)
+        if not tracks_paths:
+            raise ExtractorError('The page doesn\'t contain any tracks')
+        entries = [
+            self.url_result(compat_urlparse.urljoin(url, t_path), ie=BandcampIE.ie_key())
+            for t_path in tracks_paths]
+        title = self._search_regex(r'album_title : "(.*?)"', webpage, 'title')
+        return {
+            '_type': 'playlist',
+            'title': title,
+            'entries': entries,
+        }