-
Notifications
You must be signed in to change notification settings - Fork 0
/
initializer.py
49 lines (39 loc) · 1.67 KB
/
initializer.py
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
import spotipy
import yaml
class SpotifySession:
def __init__(self, config_file=None):
self.yaml_data = {}
if config_file:
self.config_file = config_file
else:
self.config_file = "config_data.yaml"
self._read_config()
self.session = self.init_spotify_session()
def _read_config(self):
with open(self.config_file, "r") as stream:
self.yaml_data = yaml.safe_load(stream)
def config_data(self, param=None):
if not self.yaml_data:
self._read_config()
if not param:
return self.yaml_data
return self.yaml_data[param]
def init_spotify_session(self, username=None, scope=None, client_id=None, client_secret=None, redirect_uri=None):
if not username:
username = self.config_data(param="username")
if not scope:
scope = self.config_data(param="scope")
if not client_id:
client_id = self.config_data(param="client_id")
if not client_secret:
client_secret = self.config_data(param="client_secret")
if not redirect_uri:
redirect_uri = self.config_data(param="redirect_uri")
token = spotipy.util.prompt_for_user_token(username=username,
scope=scope,
client_id=client_id,
client_secret=client_secret,
redirect_uri=redirect_uri)
session = spotipy.Spotify(auth=token)
session.trace = self.config_data(param="trace")
return session