Bladeren bron

artist mode finally supported

boyska 8 jaren geleden
bovenliggende
commit
fc0c73b0dd
1 gewijzigde bestanden met toevoegingen van 20 en 1 verwijderingen
  1. 20 1
      fetchcose.py

+ 20 - 1
fetchcose.py

@@ -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':