class CharterRdioAPITests(unittest.TestCase): def setUp(self): self.rdio = Rdio((RDIO_CONSUMER_KEY, RDIO_CONSUMER_SECRET), RDIO_TEST_OAUTH_TOKEN) test_playlist = self.rdio.call( 'createPlaylist', { 'name': 'charter test', 'description': 'test charts', 'tracks': 't10016979,t28083363,t7357573' }) self.playlist = test_playlist['result'] self.playlist_key = self.playlist['key'] self.charter = Charter(rdio=self.rdio) def tearDown(self): self.rdio.call('deletePlaylist', {'playlist': self.playlist_key}) def test_changing_order(self): expected_update = ['t28083363', 't7357573', 't10016979'] self.charter.updatePlaylist(self.playlist_key, expected_update) playlist = self.rdio.call('get', params={ 'keys': self.playlist_key, 'extras': '-*,name,trackKeys' }) actual_tracks = playlist['result'][self.playlist_key]['trackKeys'] self.assertListEqual(actual_tracks, expected_update)
def autheniticate_me(self): rdio = Rdio(RDIO_CREDENTIALS) try: url = rdio.begin_authentication('oob') print('Go to: ' + url) verifier = input('Then enter code: ').strip() rdio.complete_authentication(verifier) return rdio except HTTPError as e: print(e.read())
def login(): session_id = session['uuid'] removeFromStore(session_id) rdio = Rdio(RDIO_CREDS) auth_url = rdio.begin_authentication(callback_url=url_for('rdio_callback', _external=True), mode='redirect') session_data = {'expires': datetime.datetime.now() + STORE_DURATION, 'rt': rdio.token[0], 'rts': rdio.token[1]} addToStore(session_id, session_data) return redirect(auth_url)
def setUp(self): self.rdio = Rdio((RDIO_CONSUMER_KEY, RDIO_CONSUMER_SECRET), RDIO_TEST_OAUTH_TOKEN) test_playlist = self.rdio.call( 'createPlaylist', { 'name': 'charter test', 'description': 'test charts', 'tracks': 't10016979,t28083363,t7357573' }) self.playlist = test_playlist['result'] self.playlist_key = self.playlist['key'] self.charter = Charter(rdio=self.rdio)
def login(): session_id = session['uuid'] removeFromStore(session_id) rdio = Rdio(RDIO_CREDS) auth_url = rdio.begin_authentication(callback_url=url_for('rdio_callback', _external=True), mode='redirect') session_data = { 'expires': datetime.datetime.now() + STORE_DURATION, 'rt': rdio.token[0], 'rts': rdio.token[1] } addToStore(session_id, session_data) return redirect(auth_url)
def rdio_callback(): session_id = session['uuid'] session_data = memory_store[session_id] request_token = session_data.get('rt', None) request_token_secret = session_data.get('rts', None) verifier = request.args.get('oauth_verifier', None) if verifier is None or request_token is None or request_token_secret is None: logging.warn("OAuth callback error") return redirect(url_for('logout')) rdio = Rdio(RDIO_CREDS, (request_token, request_token_secret)) rdio.complete_authentication(verifier) session_data['at'] = rdio.token[0] session_data['ats'] = rdio.token[1] del session_data['rt'] del session_data['rts'] return redirect(url_for('home'))
def setUp(self): self.rdio = Rdio((RDIO_CONSUMER_KEY, RDIO_CONSUMER_SECRET), RDIO_TEST_OAUTH_TOKEN) test_playlist = self.rdio.call('createPlaylist', {'name': 'charter test', 'description': 'test charts', 'tracks': 't10016979,t28083363,t7357573'}) self.playlist = test_playlist['result'] self.playlist_key = self.playlist['key'] self.charter = Charter(rdio=self.rdio)
class CharterRdioAPITests(unittest.TestCase): def setUp(self): self.rdio = Rdio((RDIO_CONSUMER_KEY, RDIO_CONSUMER_SECRET), RDIO_TEST_OAUTH_TOKEN) test_playlist = self.rdio.call('createPlaylist', {'name': 'charter test', 'description': 'test charts', 'tracks': 't10016979,t28083363,t7357573'}) self.playlist = test_playlist['result'] self.playlist_key = self.playlist['key'] self.charter = Charter(rdio=self.rdio) def tearDown(self): self.rdio.call('deletePlaylist', {'playlist': self.playlist_key}) def test_changing_order(self): expected_update = ['t28083363', 't7357573', 't10016979'] self.charter.updatePlaylist(self.playlist_key, expected_update) playlist = self.rdio.call('get', params={'keys': self.playlist_key, 'extras': '-*,name,trackKeys'}) actual_tracks = playlist['result'][self.playlist_key]['trackKeys'] self.assertListEqual(actual_tracks, expected_update)
def rdioFromSession(session): if 'uuid' in session and session['uuid'] in memory_store: session_data = memory_store[session['uuid']] if 'at' in session_data and 'ats' in session_data: return Rdio(RDIO_CREDS, (session_data['at'], session_data['ats'])) return None
if __name__ == '__main__': from charter.charter import Charter import config from rdio.rdio import Rdio import scraper rdio = Rdio((config.RDIO_CONSUMER_KEY, config.RDIO_CONSUMER_SECRET), config.RDIO_TEST_OAUTH_TOKEN) charter = Charter(rdio=rdio) scraper.chartList() new_chart = scraper.scrapeChart('http://www.billboard.com/charts/hot-100') charter.updatePlaylist('my playlist key', new_chart)