Пример #1
0
    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
Пример #2
0
    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
Пример #3
0
 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
Пример #4
0
    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
Пример #5
0
 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)
Пример #6
0
 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
Пример #7
0
 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
Пример #8
0
 def get_user_data(self):
     data = api.get('/user/login',
                    username=api.username,
                    password=api.password)
     if not data:
         return None
     return data['user']
Пример #9
0
 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
Пример #10
0
 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
Пример #11
0
 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'])
Пример #12
0
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()
Пример #13
0
 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
Пример #14
0
 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
Пример #15
0
 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'])
Пример #16
0
 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
Пример #17
0
 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
Пример #18
0
 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
Пример #19
0
    def get_business():
        ''' Bussiness definitions '''

        try:
            return api.get('business')
        except Exception as e:
            print(e)

        return {}
Пример #20
0
    def get_clusters(cluster):
        ''' Get business clusters '''

        try:
            return api.get('cluster/' + str(cluster))
        except Exception as e:
            print(e)

        return {}
Пример #21
0
    def get_config(business, rule):
        ''' Return configuration '''

        try:
            return api.get('rule/' + str(business) + '/' + rule)
        except Exception as e:
            print(e)

        return {}
Пример #22
0
 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
Пример #23
0
 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
Пример #24
0
 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
Пример #25
0
    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 {}
Пример #26
0
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
Пример #27
0
 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
Пример #28
0
 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
Пример #29
0
 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)
Пример #30
0
 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
Пример #31
0
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
Пример #32
0
 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
Пример #33
0
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)
Пример #34
0
    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 {}
Пример #35
0
 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
Пример #36
0
 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
Пример #37
0
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']
Пример #38
0
 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
Пример #40
0
 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
Пример #41
0
 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
Пример #42
0
 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
Пример #43
0
 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
Пример #44
0
 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
Пример #45
0
 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
Пример #46
0
 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
Пример #47
0
 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
Пример #48
0
 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
Пример #49
0
 def get_user_data(self):
     data = api.get('/user/login', username=api.username,
                    password=api.password)
     if not data:
         return None
     return data['user']
Пример #50
0
 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