-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathspotifyapi.py
More file actions
55 lines (47 loc) · 1.7 KB
/
spotifyapi.py
File metadata and controls
55 lines (47 loc) · 1.7 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
import sys
import spotipy
import spotipy.util as util
import unicodedata
#import traceback
class SpotifyApi:
def __init__(self, username):
self.username = username
self.token = None
self.sp = spotipy.Spotify(auth=self.token)
def renew_token(self):
scope = 'user-library-read user-modify-playback-state'
self.token = util.prompt_for_user_token(self.username, scope)
self.sp = spotipy.Spotify(auth=self.token)
def escape_unicode(self, text):
return unicodedata.normalize('NFKD', unicode(text)).encode('ascii', 'ignore')
def get_song_name(self, track_id):
try:
results = self.sp.track(track_id)
name = self.escape_unicode(results['name'])
artist = self.escape_unicode(results['artists'][0]['name'])
return name + " - " + artist
except:
#traceback.print_exc()
self.renew_token()
return self.get_song_name(track_id)
def transfer_playback(self, device_id):
try:
self.sp.transfer_playback(device_id)
except:
#traceback.print_exc()
self.renew_token()
self.transfer_playback(device_id)
def start_playback(self, device_id, album):
try:
self.sp.start_playback(device_id, album)
except:
#traceback.print_exc()
self.renew_token()
self.start_playback(device_id, album)
def set_volume(self, volume_percent, device_id):
try:
self.sp.volume(volume_percent, device_id)
except:
#traceback.print_exc()
self.renew_token()
self.set_volume(volume_percent, device_id)