|
a/src/cdplugins/qobuz/session.py |
|
b/src/cdplugins/qobuz/session.py |
|
... |
|
... |
3 |
# much alone as possible.
|
3 |
# much alone as possible.
|
4 |
from __future__ import print_function
|
4 |
from __future__ import print_function
|
5 |
|
5 |
|
6 |
import sys
|
6 |
import sys
|
7 |
import json
|
7 |
import json
|
8 |
from upmplgmodels import Artist, Album, Track, Playlist, SearchResult, Category
|
8 |
from upmplgmodels import Artist, Album, Track, Playlist, SearchResult, \
|
|
|
9 |
Category, Genre
|
9 |
from qobuz.api import raw
|
10 |
from qobuz.api import raw
|
10 |
|
11 |
|
11 |
class Session(object):
|
12 |
class Session(object):
|
12 |
def __init__(self):
|
13 |
def __init__(self):
|
13 |
self.api = None
|
14 |
self.api = None
|
|
... |
|
... |
35 |
|
36 |
|
36 |
def get_album_tracks(self, albid):
|
37 |
def get_album_tracks(self, albid):
|
37 |
data = self.api.album_get(album_id = albid)
|
38 |
data = self.api.album_get(album_id = albid)
|
38 |
album = _parse_album(data)
|
39 |
album = _parse_album(data)
|
39 |
return [_parse_track(t, album) for t in data['tracks']['items']]
|
40 |
return [_parse_track(t, album) for t in data['tracks']['items']]
|
|
|
41 |
|
|
|
42 |
def get_featured_albums(self, genre_id=None):
|
|
|
43 |
data = self.api.album_getFeatured(type='editor-picks',
|
|
|
44 |
genre_id=genre_id, limit=50)
|
|
|
45 |
if data and 'albums' in data:
|
|
|
46 |
return [_parse_album(alb) for alb in data['albums']['items']]
|
|
|
47 |
return []
|
40 |
|
48 |
|
41 |
def get_playlist_tracks(self, plid):
|
49 |
def get_playlist_tracks(self, plid):
|
42 |
data = self.api.playlist_get(playlist_id = plid, extra = 'tracks')
|
50 |
data = self.api.playlist_get(playlist_id = plid, extra = 'tracks')
|
43 |
#print("PLAYLIST: %s" % json.dumps(data, indent=4), file=sys.stderr)
|
51 |
#print("PLAYLIST: %s" % json.dumps(data, indent=4), file=sys.stderr)
|
44 |
return [_parse_track(t) for t in data['tracks']['items']]
|
52 |
return [_parse_track(t) for t in data['tracks']['items']]
|
|
... |
|
... |
88 |
if 'playlists' in data:
|
96 |
if 'playlists' in data:
|
89 |
return [_parse_playlist(pl) for pl in \
|
97 |
return [_parse_playlist(pl) for pl in \
|
90 |
data['playlists']['items']]
|
98 |
data['playlists']['items']]
|
91 |
return []
|
99 |
return []
|
92 |
|
100 |
|
|
|
101 |
def get_genres(self, parent=None):
|
|
|
102 |
data = self.api.genre_list(parent_id=parent)
|
|
|
103 |
return [_parse_genre(g) for g in data['genres']['items']]
|
|
|
104 |
|
93 |
def search(self, query, tp):
|
105 |
def search(self, query, tp):
|
94 |
data = self.api.catalog_search(query=query, type=tp)
|
106 |
data = self.api.catalog_search(query=query, type=tp)
|
95 |
try:
|
107 |
try:
|
96 |
ar = [_parse_artist(i) for i in data['artists']['items']]
|
108 |
ar = [_parse_artist(i) for i in data['artists']['items']]
|
97 |
except:
|
109 |
except:
|
|
... |
|
... |
112 |
|
124 |
|
113 |
|
125 |
|
114 |
def _parse_artist(json_obj):
|
126 |
def _parse_artist(json_obj):
|
115 |
artist = Artist(id=json_obj['id'], name=json_obj['name'])
|
127 |
artist = Artist(id=json_obj['id'], name=json_obj['name'])
|
116 |
return artist
|
128 |
return artist
|
|
|
129 |
|
|
|
130 |
def _parse_genre(data):
|
|
|
131 |
return Genre(id=data['id'], name=data['name'])
|
117 |
|
132 |
|
118 |
def _parse_album(json_obj, artist=None, artists=None):
|
133 |
def _parse_album(json_obj, artist=None, artists=None):
|
119 |
if artist is None and 'artist' in json_obj:
|
134 |
if artist is None and 'artist' in json_obj:
|
120 |
artist = _parse_artist(json_obj['artist'])
|
135 |
artist = _parse_artist(json_obj['artist'])
|
121 |
#if artists is None:
|
136 |
#if artists is None:
|