def create(self, name=None): username = api.username password = api.password friendpl = api.get('/playlist/getUserPlaylists', username=name) if not friendpl: return False user = api.get('/user/login', username=username, password=password) if user['user']['login'] == name: return False if not user: return False friends = user['user']['player_settings'] if not 'friends' in friends: friends = [] else: friends = friends['friends'] if name in friends: return False friends.append(name) newdata = {'friends': friends} #easyapi.get(name='user') if not api.user_update(player_settings=json.dumps(newdata)): return False # qobuz.registry.delete(name='user') executeBuiltin(containerRefresh()) return True
def fetch(self, Dir, lvl, whiteFlag, blackFlag): limit = getSetting('pagination_limit', isInt=True) self.data = None query = self.query if not query: from gui.util import Keyboard k = Keyboard('', 'My %s' % self.search_type) k.doModal() if not k.isConfirmed(): return False query = k.getText() query.strip() info(self, 'search_type: %s, query: %s' % (self.search_type, query)) source = self.source kwargs = { 'query': query, 'limit': limit, } if source is not None: kwargs['source'] = source data = None self.data = data if self.search_type == 'albums': data = api.get('/collection/getAlbums', **kwargs) elif self.search_type == 'artists': data = api.get('/collection/getArtists', **kwargs) elif self.search_type == 'tracks': data = api.get('/collection/getTracks', **kwargs) # try: # self.data = data['items'] # return True # except Exception as e: # warn(self, 'Exception: %s' % e) self.data = data return False
def create(self, name=None): username = api.username password = api.password friendpl = api.get("/playlist/getUserPlaylists", username=name) if not friendpl: return False user = api.get("/user/login", username=username, password=password) if user["user"]["login"] == name: return False if not user: return False friends = user["user"]["player_settings"] if not "friends" in friends: friends = [] else: friends = friends["friends"] if name in friends: return False friends.append(name) newdata = {"friends": friends} # easyapi.get(name='user') if not api.user_update(player_settings=json.dumps(newdata)): return False # qobuz.registry.delete(name='user') executeBuiltin(containerRefresh()) return True
def fetch(self, Dir, lvl, whiteFlag, blackFlag): limit = getSetting('pagination_limit', isInt=True) self.data = None query = self.query if not query: from gui.util import Keyboard k = Keyboard('', 'My %s' % self.search_type) k.doModal() if not k.isConfirmed(): return False query = k.getText() query.strip() info(self, 'search_type: %s, query: %s' % (self.search_type, query)) source = self.source kwargs = {'query': query, 'limit': limit, } if source is not None: kwargs['source'] = source data = None self.data = data if self.search_type == 'albums': data = api.get('/collection/getAlbums', **kwargs) elif self.search_type == 'artists': data = api.get('/collection/getArtists', **kwargs) elif self.search_type == 'tracks': data = api.get('/collection/getTracks', **kwargs) # try: # self.data = data['items'] # return True # except Exception as e: # warn(self, 'Exception: %s' % e) self.data = data return False
def _api(self): self.save() if 'recip' not in self.data: return res = api.get(USER, self.data['recip']) if res != None: self._pow_txt.value = str(res)
def fetch(self, Dir, lvl, whiteFlag, blackFlag): limit = getSetting('pagination_limit') stype = self.search_type query = self.get_parameter('query', unQuote=True) if not query: from gui.util import Keyboard k = Keyboard('', stype) k.doModal() if not k.isConfirmed(): return False query = k.getText() query.strip() data = api.get('/search/getResults', query=query, type=stype, limit=limit, offset=self.offset) if not data: warn(self, "Search return no data") return False if data[stype]['total'] == 0: return False if not 'items' in data[stype]: return False self.set_parameter('query', query, quote=True) self.data = data return True
def fetch(self, Dir, lvl, whiteFlag, blackFlag): data = api.get('/album/get', album_id=self.nid) if not data: warn(self, "Cannot fetch product data") return False self.data = data return True
def get_user_data(self): data = api.get('/user/login', username=api.username, password=api.password) if not data: return None return data['user']
def gui_rename(self, playlist_id = None): if not playlist_id: playlist_id = self.nid if not playlist_id: warn(self, "Can't rename playlist without id") return False from gui.util import Keyboard data = api.get('/playlist/get', playlist_id=playlist_id) if not data: warn(self, "Something went wrong while renaming playlist") return False self.data = data currentname = self.get_name() k = Keyboard(currentname, lang(30078)) k.doModal() if not k.isConfirmed(): return False newname = k.getText() newname = newname.strip() if not newname: notifyH(dialogHeading, "Don't u call ure child something?", 'icon-error-256') return False if newname == currentname: return True res = api.playlist_update(playlist_id=playlist_id, name=newname) if not res: warn(self, "Cannot rename playlist with name %s" % (newname) ) return False self.delete_cache(playlist_id) notifyH(lang(30078), (u"%s: %s") % (lang(39009), currentname)) executeBuiltin(containerRefresh()) return True
def fetch(self, Dir, lvl, whiteFlag, blackFlag): limit = getSetting('pagination_limit') data = api.get('/artist/getSimilarArtists', artist_id=self.nid, offset=self.offset, limit=limit) if not data: return False self.data = data return len(data['artists']['items'])
async def get_user(username: str): '''Get a specific user by username.''' async with api.get(API_URL + '/chat_associations', params={'username': '******' + username}, headers={'Accept': 'application/vnd.pgrst.object+json' }) as response: response.raise_for_status() return await response.json()
def fetch(self, Dir, lvl, whiteFlag, blackFlag): if blackFlag & Flag.STOPBUILD == Flag.STOPBUILD: return False data = api.get('/track/get', track_id=self.nid) if not data: return False self.data = data return True
def fetch(self, Dir, lvl, whiteFlag, blackFlag): limit = getSetting("pagination_limit") data = api.get("/artist/getSimilarArtist", artist_id=self.nid, limit=limit, offset=self.offset, extra="albums") if not data: warn(self, "Cannot fetch albums for artist: " + self.get_label()) return False self.data = data return True
def __getFileUrl(self): format_id = 6 if getSetting('streamtype') == 'flac' else 5 data = api.get('/track/getFileUrl', format_id=format_id, track_id=self.nid, user_id=api.user_id) if not data: warn(self, "Cannot get stream type for track (network problem?)") return None return data
def fetch(self, Dir, lvl, whiteFlag, blackFlag): limit = getSetting('pagination_limit') data = api.get('/purchase/getUserPurchases', limit=limit, offset=self.offset, user_id=api.user_id) if not data: warn(self, "Cannot fetch purchases data") return False self.data = data return True
def get_business(): ''' Bussiness definitions ''' try: return api.get('business') except Exception as e: print(e) return {}
def get_clusters(cluster): ''' Get business clusters ''' try: return api.get('cluster/' + str(cluster)) except Exception as e: print(e) return {}
def get_config(business, rule): ''' Return configuration ''' try: return api.get('rule/' + str(business) + '/' + rule) except Exception as e: print(e) return {}
def fetch(self, Dir, lvl, whiteFlag, blackFlag): limit = getSetting('pagination_limit') data = api.get('/artist/get', artist_id=self.nid, limit=limit, offset=self.offset, extra='albums') if not data: warn(self, "Build-down: Cannot fetch artist data") return False self.data = data return True
def fetch(self, Dir, lvl, whiteFlag, blackFlag): limit = getSetting('pagination_limit') data = api.get('/playlist/getUserPlaylists', limit=limit, offset=self.offset, user_id=api.user_id) if not data: warn(self, "Build-down: Cannot fetch user playlists data") return False self.data = data return True
def fetch(self, Dir, lvl, whiteFlag, blackFlag): limit = getSetting('pagination_limit', isInt=True) data = api.get('/playlist/get',playlist_id=self.nid, offset=self.offset, limit=limit, extra='tracks') if not data: warn(self, "Build-down: Cannot fetch playlist data") return False self.data = data return True
def verify(cluster, database): ''' Verify cluster and database exists. Return business''' try: return api.get('database/verify/' + str(cluster) + '/' + str(database)) except Exception as e: print(e) return {}
def isFreeAccount(): """Check if account if it's a Qobuz paid account """ from api import api data = api.get('/user/login', username=api.username, password=api.password) if not data: return True if not data['user']['credential']['id']: return True return False
def fetch(self, Dir, lvl, whiteFlag, blackFlag): limit = getSetting('pagination_limit') data = None if self.search_type != 'all': data = api.get('/favorite/getUserFavorites', user_id=api.user_id, type=self.search_type, limit=limit, offset=self.offset) else: data = api.get('/favorite/getUserFavorites', user_id=api.user_id, limit=limit, offset=self.offset) if not data: warn(self, "Build-down: Cannot fetch favorites data") return False self.data = data return True
def populate(self, xbmc_directory, lvl, whiteFlag, blackFlag): username = api.username password = api.password user_id = api.user_id user_data = api.get('/user/login', username=username, password=password) if not 'user' in user_data: return False friend_data = user_data['user']['player_settings']['friends'] info(self, "Build-down friends list " + repr(self.name)) if self.name: data = api.get('/playlist/getUserPlaylists', username=self.name, limit=0) else: data = api.get('/playlist/getUserPlaylists', user_id=user_id, limit=0) if not data: warn(self, "No friend data") return False # extract all owner names from the list friend_list = [] for item in data['playlists']['items']: if item['owner']['name'] == user_data['user']['login']: continue friend_list.append(item['owner']['name']) # add previously stored if (not self.name): for name in friend_data: friend_list.append(str(name)) # remove duplicates keys = {} for e in friend_list: keys[e] = 1 friend_list = keys.keys() # and add them to the directory for name in friend_list: node = getNode(Flag.FRIEND, {'query': str(name)}) if name == self.name: continue if name in friend_data: node.label = 'Friend / %s' % (node.label) self.add_child(node)
def fetch(self, Dir, lvl, whiteFlag, blackFlag): limit = getSetting("pagination_limit") data = api.get("/playlist/getPublicPlaylists", offset=self.offset, limit=limit, type="last-created") if not data: return False # @bug: we use pagination_limit as limit for the search so we don't # need offset... (Fixed if qobuz fix it :p) if not "total" in data["playlists"]: data["playlists"]["total"] = data["playlists"]["limit"] self.data = data return True
def prediction(id): data = api.get('audio-features', id) if data.ok: data = data.json() x = [data[f] for f in FEATURE_COLUMNS] y = model.predict([x]) print(y) return Response(json.dumps({ 'prediction': bool(y[0]), }), 200, HEADERS) raise Exception(data.text)
def get_databases(cluster, environment=None): ''' Return this cluster databases ''' if environment is None: environment = database.production try: return api.get('database/' + str(cluster) + '/' + environment) except Exception as e: print(e) return {}
def fetch(self, Dir, lvl, whiteFlag, blackFlag): limit = getSetting("pagination_limit") data = api.get("/genre/list", parent_id=self.nid, offset=self.offset, limit=limit) if not data: self.data = None return True # Nothing returned trigger reco build in build_down self.data = data g = self.data["genres"] if "parent" in g and int(g["parent"]["level"]) > 1: self.populate_reco(Dir, lvl, whiteFlag, blackFlag, g["parent"]["id"]) return True
async def get_user_from_discord_account(discord_user_id: int) -> Dict: async with api.get(API_URL + '/user_accounts', params={ 'type': 'eq.discord', 'account_id': 'eq.' + str(discord_user_id), 'select': 'user_accounts_pkey:users(*)' }, headers={'Accept': 'application/vnd.pgrst.object+json' }) as response: response.raise_for_status() return (await response.json())['user_accounts_pkey']
def fetch(self, Dir, lvl, whiteFlag, blackFlag): limit = getSetting('pagination_limit') data = api.get('/artist/getSimilarArtist', artist_id=self.nid, limit=limit, offset=self.offset, extra='albums') if not data: warn(self, "Cannot fetch albums for artist: " + self.get_label()) return False self.data = data return True
def fetch(self, Dir, lvl, whiteFlag, blackFlag): limit = getSetting('pagination_limit') data = api.get('/playlist/getPublicPlaylists', offset=self.offset, limit=limit, type='last-created') if not data: return False # @bug: we use pagination_limit as limit for the search so we don't # need offset... (Fixed if qobuz fix it :p) if not 'total' in data['playlists']: data['playlists']['total'] = data['playlists']['limit'] self.data = data return True
def fetch(self, Dir, lvl , whiteFlag, blackFlag): limit = getSetting('pagination_limit') data = api.get('/genre/list', parent_id=self.nid, offset=self.offset, limit=limit) if not data: self.data = None return True # Nothing return trigger reco build in build_down self.data = data g = self.data['genres'] if 'parent' in g and int(g['parent']['level']) > 1: self.populate_reco(Dir, lvl, whiteFlag, blackFlag, g['parent']['id']) return True
def populate(self, xbmc_directory, lvl, whiteFlag, blackFlag): offset = self.get_parameter('offset') or 0 #@bug: Qobuz service seam do don't return total so pagination is broken limit = getSetting('pagination_limit') data = api.get('/label/list', limit=limit, offset=offset) if not data: warn(self, "No label data") return False for item in data['labels']['items']: node = Node_label() node.data = item self.add_child(node) return True
def populate(self, Dir, lvl, whiteFlag, blackFlag): data = api.get('/playlist/getUserPlaylists', username=self.name) if not data: warn(self, "No friend data") return False if lvl != -1: self.add_child(getNode(Flag.FRIEND_LIST, self.parameters)) for pl in data['playlists']['items']: node = getNode(Flag.PLAYLIST) node.data = pl if node.get_owner() == self.label: self.nid = node.get_owner_id() self.add_child(node) return True
def populate(self, Dir, lvl, whiteFlag, blackFlag): data = api.get("/playlist/getUserPlaylists", username=self.name) if not data: warn(self, "No friend data") return False if lvl != -1: self.add_child(getNode(Flag.FRIEND_LIST, self.parameters)) for pl in data["playlists"]["items"]: node = getNode(Flag.PLAYLIST) node.data = pl if node.get_owner() == self.label: self.nid = node.get_owner_id() self.add_child(node) return True
def fetch(self, Dir, lvl, whiteFlag, blackFlag): if not (self.genre_type and self.genre_id): return True offset = self.offset or 0 limit = getSetting('pagination_limit') data = api.get('/album/getFeatured', type=RECOS_TYPE_IDS[int(self.genre_type)], genre_id=self.genre_id, limit=limit, offset=offset) if not data: warn(self, "Cannot fetch data for recommendation") return False self.data = data return True
def fetch(self, Dir, lvl, whiteFlag, blackFlag): limit = getSetting('pagination_limit') data = api.get('/genre/list', parent_id=self.nid, offset=self.offset, limit=limit) if not data: self.data = None return True # Nothing return trigger reco build in build_down self.data = data g = self.data['genres'] if 'parent' in g and int(g['parent']['level']) > 1: self.populate_reco(Dir, lvl, whiteFlag, blackFlag, g['parent']['id']) return True
def gui_remove(self, playlist_id=None): if not playlist_id: playlist_id = self.nid if not playlist_id: notifyH(dialogHeading, 'Invalid playlist %s' % (str(playlist_id))) return False import xbmcgui import xbmc cid = self.get_current_playlist() login = getSetting('username') offset = 0 limit = getSetting('pagination_limit') data = api.get('/playlist/get', playlist_id=playlist_id, limit=limit, offset=offset) name = '' if 'name' in data: name = data['name'] ok = xbmcgui.Dialog().yesno(lang(39010), lang(30052), color('FFFF0000', name)) if not ok: info(self, "Deleting playlist aborted...") return False res = False if data['owner']['name'] == login: info(self, "Deleting playlist: " + str(playlist_id)) res = api.playlist_delete(playlist_id=playlist_id) else: info(self, 'Unsuscribe playlist' + str(playlist_id)) res = api.playlist_unsubscribe(playlist_id=playlist_id) if not res: warn(self, "Cannot delete playlist with id " + str(playlist_id)) notifyH(lang(42001), lang(42004) + name, getImage('icon-error-256')) return False self.delete_cache(playlist_id) notifyH(lang(42001), (lang(42002) + "%s" + lang(42003)) % (name)) url = self.make_url(nt=Flag.USERPLAYLISTS, mode=Mode.VIEW, nm='', nid='') executeBuiltin(containerUpdate(url, True)) return False
def fetch(self, Dir, lvl, whiteFlag, blackFlag): data = api.get('/article/get', article_id=self.nid) if not data: return False self.data = data['data'] return True