21 MOPIDY_API =
'/mopidy/rpc' 23 _base_dict = {
'jsonrpc':
'2.0',
'id': 1,
'params': {}}
29 self.
url = url + MOPIDY_API
37 d[
'method'] =
'core.library.search' 38 d[
'params'] = {
'artist': [artist]}
39 r = requests.post(self.
url, data=json.dumps(d))
40 return r.json()[
'result'][1][
'artists']
44 d[
'method'] =
'core.playlists.as_list' 45 r = requests.post(self.
url, data=json.dumps(d))
47 return r.json()[
'result']
49 return [l
for l
in r.json()[
'result']
if filter +
':' in l[
'uri']]
53 d[
'method'] =
'core.library.search' 54 d[
'params'] = {
'album': [album]}
55 r = requests.post(self.
url, data=json.dumps(d))
56 lst = [res[
'albums']
for res
in r.json()[
'result']
if 'albums' in res]
60 return [i
for sl
in lst
for i
in sl
if filter +
':' in i[
'uri']]
64 d[
'method'] =
'core.library.find_exact' 65 d[
'params'] = {
'uris': uris}
66 r = requests.post(self.
url, data=json.dumps(d))
71 d[
'method'] =
'core.library.browse' 72 d[
'params'] = {
'uri': uri}
73 r = requests.post(self.
url, data=json.dumps(d))
74 if 'result' in r.json():
75 return r.json()[
'result']
82 d[
'method'] =
'core.tracklist.clear' 83 r = requests.post(self.
url, data=json.dumps(d))
88 d[
'method'] =
'core.tracklist.add' 89 if isinstance(uri, str):
90 d[
'params'] = {
'uri': uri}
91 elif type(uri) == list:
92 d[
'params'] = {
'uris': uri}
95 r = requests.post(self.
url, data=json.dumps(d))
102 d[
'method'] =
'core.playback.play' 103 r = requests.post(self.
url, data=json.dumps(d))
108 d[
'method'] =
'core.playback.next' 109 r = requests.post(self.
url, data=json.dumps(d))
114 d[
'method'] =
'core.playback.previous' 115 r = requests.post(self.
url, data=json.dumps(d))
120 d[
'method'] =
'core.playback.stop' 121 r = requests.post(self.
url, data=json.dumps(d))
127 d[
'method'] =
'core.playback.get_current_track' 128 r = requests.post(self.
url, data=json.dumps(d))
129 return r.json()[
'result']
136 d[
'method'] =
'core.mixer.set_volume' 137 d[
'params'] = {
'volume': percent}
138 r = requests.post(self.
url, data=json.dumps(d))
149 d[
'method'] =
'core.playback.pause' 150 r = requests.post(self.
url, data=json.dumps(d))
155 d[
'method'] =
'core.playback.resume' 156 r = requests.post(self.
url, data=json.dumps(d))
160 d[
'method'] =
'core.playlists.get_items' 161 d[
'params'] = {
'uri': uri}
162 r = requests.post(self.
url, data=json.dumps(d))
163 if 'result' in r.json():
164 return [e[
'uri']
for e
in r.json()[
'result']]
170 ret = [t[
'uri']
for t
in tracks
if t[
'type'] ==
'track']
172 sub_tracks = [t[
'uri']
for t
in tracks
if t[
'type'] !=
'track']
178 p = self.
browse(
'local:directory?type=album')
179 return {e[
'name']: e
for e
in p
if e[
'type'] ==
'album'}
182 p = self.
browse(
'local:directory?type=artist')
183 return {e[
'name']: e
for e
in p
if e[
'type'] ==
'artist'}
186 p = self.
browse(
'local:directory?type=genre')
187 return {e[
'name']: e
for e
in p
if e[
'type'] ==
'directory'}
191 return {e[
'name']: e
for e
in p}
195 return {e[
'name'].split(
'(by')[0].strip().lower(): e
for e
in p}
198 p = self.
browse(
'gmusic:album')
199 p = {e[
'name']: e
for e
in p
if e[
'type'] ==
'directory'}
200 return {e.split(
' - ')[1]: p[e]
for e
in p}
203 p = self.
browse(
'gmusic:artist')
204 return {e[
'name']: e
for e
in p
if e[
'type'] ==
'directory'}
207 p = self.
browse(
'gmusic:radio')
208 return {e[
'name']: e
for e
in p
if e[
'type'] ==
'directory'}
def clear_list(self, force=False)
def get_playlists(self, filter=None)
def find_artist(self, artist)
def find_album(self, album, filter=None)
def get_local_albums(self)
def get_gmusic_artists(self)
def get_spotify_playlists(self)
def get_gmusic_albums(self)
def get_gmusic_radio(self)
def get_local_playlists(self)
def get_tracks(self, uri)
def set_volume(self, percent)
def get_local_artists(self)
def get_local_genres(self)
def find_exact(self, uris='null')
def currently_playing(self)