|
@@ -42,6 +42,25 @@ def visit_album(b, url):
|
|
|
yield visit_track(b, track_url)
|
|
|
|
|
|
|
|
|
+def visit_artist(b, url):
|
|
|
+ log.debug('Visiting artist %s' % url)
|
|
|
+ b.visit(url)
|
|
|
+ album_urls = [link['href'] for link in
|
|
|
+ b.find_by_css('.square a')
|
|
|
+ if link['href'] and '/album/' in link['href']]
|
|
|
+ nonalbumtrack_urls = [link['href'] for link in
|
|
|
+ b.find_by_css('.square a')
|
|
|
+ if link['href'] and '/track/' in link['href']]
|
|
|
+ log.debug('Found %d album + %d non-album tracks' % (len(album_urls),
|
|
|
+ len(nonalbumtrack_urls)
|
|
|
+ ))
|
|
|
+ for track_url in nonalbumtrack_urls:
|
|
|
+ yield visit_track(b, track_url)
|
|
|
+ for album_url in album_urls:
|
|
|
+ for track in visit_album(b, album_url):
|
|
|
+ yield track
|
|
|
+
|
|
|
+
|
|
|
def download_track(track):
|
|
|
log.debug('Downloading "%s"' % track['title'])
|
|
|
if 'album' in track:
|
|
@@ -132,7 +151,7 @@ with Browser(args.driver, profile_preferences=prefs) as br:
|
|
|
elif args.mode == 'album':
|
|
|
tracks = visit_album(br, args.url)
|
|
|
else:
|
|
|
- raise NotImplementedError('info retrieval ' + args.mode)
|
|
|
+ tracks = visit_artist(br, args.url)
|
|
|
|
|
|
# do something
|
|
|
if args.do == 'print':
|