class SpotifyTest(unittest.TestCase): def setup(self): self.spotify = Spotify() self.spotify.authenticate() def test_constructor(self): Spotify() def test_authenticate(self): self.setup() def test_whoami(self): self.setup() user = self.spotify.whoami() def test_get_user_playlists(self): self.setup() user = self.spotify.whoami() self.spotify.get_user_playlists(user) def test_get_user_tracks(self): self.setup() user = self.spotify.whoami() self.spotify.get_user_tracks(user)
def main(argv): parser = setup_parser() args = parser.parse_args(argv[1:]) spotify = Spotify() spotify.authenticate() if not os.path.exists(args.out): os.makedirs(args.out) for track_list in spotify.get_user_tracks(): for track in track_list['items']: track = track['track'] artist = None title = None try: artist = to_ascii(track['artists'][0]['name'].encode('utf-8')) title = to_ascii(track['name'].encode('utf-8')) assert artist and title except Exception, e: logger.critical('FAIL/%s\n - %s', json.dumps(track, indent=4), e) raise e print json.dumps(track, indent=4) sys.exit(-1) name = '%s - %s.mp3' % (title, artist) out = os.path.join(args.out, '%s' % (name)) try: cmdline = 'youtube.py --artist="%s" --track="%s" --out="%s"' % (artist, title, out) logger.debug('Downloading %s' % (out)) youtube.main(shlex.split(cmdline)) logger.info('OK/%s' % (name)) except youtube.FileExistsException, e: logger.info('SKIP/%s - %s', name, e) except youtube.NoSearchResultException, e: logger.critical('FAIL/%s - %s', name, e)