예제 #1
0
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)
예제 #2
0
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)