def find_artist(self): """ Find artists. """ md = MakeDict() # clear lists self.artistList.clear() self.albumList.clear() self.songList.clear() # get input get_search_edit = QtCore.QString(unicode(self.searchEdit.text())) search_url = u"https://api.deezer.com/search?q={0}".format(unicode(get_search_edit)) # load json file; validate input json_url = "" data = {} try: json_url = urllib.urlopen(search_url) data = json.load(json_url) except IOError: self.artistList.setEnabled(False) self.albumList.setEnabled(False) self.songList.setEnabled(False) self.artistList.addItem("No Internet connection found.") self.albumList.addItem("No Internet connection found.") self.songList.addItem("No Internet connection found.") print ("No Internet connection found.") # check index; validate input if not data or self.searchEdit.text().isEmpty(): return None else: li = len(data["data"]) # console information print (u"Search for: {0}".format(unicode(get_search_edit))) print search_url # get values from json file artist_name_list, artist_id_list, artist_tracklist_list = [], [], [] album_title_list, album_tracklist_list, album_cover_big_list = [], [], [] for i in range(li): artist_name = data["data"][i]["artist"]["name"] artist_name_list.append(artist_name) artist_id = data["data"][i]["artist"]["id"] artist_id_list.append(artist_id) artist_tracklist = data["data"][i]["artist"]["tracklist"] artist_tracklist_list.append(artist_tracklist) album_title = data["data"][i]["album"]["title"] album_title_list.append(album_title) album_tracklist = data["data"][i]["album"]["tracklist"] album_tracklist_list.append(album_tracklist) album_cover_big = data["data"][i]["album"]["cover_big"] album_cover_big_list.append(album_cover_big) json_url.close() # make dictionary {"artist name":[{"artist tracklist":"artist id"}], ...} self.artist_id_dict = md.make_dict(artist_name_list, artist_tracklist_list, artist_id_list) # make dictionary {"artist name":[{"album tracklist""album name"}], ...} self.album_track_dict = md.make_dict(artist_name_list, album_tracklist_list, album_title_list) # make dictionary {"artist name":[{"album_cover_big":"album name"}], ...} self.album_cover_big_dict = md.make_dict(artist_name_list, album_cover_big_list, album_title_list) # print artists to list widget [self.artistList.addItem(self.artist_id_dict.keys()[i]) for i in range(len(self.artist_id_dict))] return self.artist_id_dict, self.album_track_dict, self.album_cover_big_dict
def find_album(self): """ Find artist albums. """ md = MakeDict() self.albumList.clear() self.songList.clear() # get checked album title get_artist_name = QtCore.QString(unicode(self.artistList.currentItem().text())) # ...and get his tracklist get_artist_tracklist = self.artist_id_dict[unicode(get_artist_name)][0].keys()[0] # console information print(u"Search for {0} albums.".format(unicode(get_artist_name))) print(get_artist_tracklist) # open json file json_url = urllib.urlopen(get_artist_tracklist) data = json.load(json_url) # get values from json file artist_name_list, artist_id_list, artist_tracklist_list = [], [], [] album_title_list, album_tracklist_list, album_cover_big_list = [], [], [] for i in range(len(data["data"])): artist_name = data["data"][i]["artist"]["name"] artist_name_list.append(artist_name) artist_id = data["data"][i]["artist"]["id"] artist_id_list.append(artist_id) artist_tracklist = data["data"][i]["artist"]["tracklist"] artist_tracklist_list.append(artist_tracklist) album_title = data["data"][i]["album"]["title"] album_title_list.append(album_title) album_tracklist = data['data'][i]['album']['tracklist'] album_tracklist_list.append(album_tracklist) album_cover_big = data['data'][i]['album']['cover_big'] album_cover_big_list.append(album_cover_big) json_url.close() # extra album check # same artist names, but different ids' # make current dictionary {"artist":[{"artist tracklist":"artist id"}]} current_art_id_dict = md.make_dict(artist_name_list, artist_tracklist_list, artist_id_list) # merge inner dictionaries {"artist":[{"artist tracklist":"artist id"}]} from previous and current search... # ...make dictionary for current chosen artist {"artist tracklist":"artist id", ...}... new_art_id_dict = dict(current_art_id_dict[unicode(get_artist_name)][0].items() + self.artist_id_dict[unicode(get_artist_name)][0].items()) # delete tracklist used previous (from new_art_id_dict) del new_art_id_dict[''.join(get_artist_tracklist)] # list to string # update tracklist, album and cover # make empty lists for new album names album_title_list2, album_tracklist_list2, album_cover_big_list2 = [], [], [] # check if new_art_id_dict is not empty list if new_art_id_dict: json_url2 = urllib.urlopen(new_art_id_dict.keys()[0]) # open json file data2 = json.load(json_url2) # get values from json file for i in range(len(data2["data"])): album_title2 = data2["data"][i]["album"]["title"] album_title_list2.append(album_title2) album_tracklist2 = data2['data'][i]['album']['tracklist'] album_tracklist_list2.append(album_tracklist2) album_cover_big2 = data2['data'][i]['album']['cover_big'] album_cover_big_list2.append(album_cover_big2) json_url2.close() # get chosen artist albums titles from previous search prev_album = self.album_track_dict[unicode(get_artist_name)][0].values() # get chosen artist album tracklist from previous search prev_album_tracklist = self.album_track_dict[unicode(get_artist_name)][0].keys() # get chosen artist album cover from previous search prev_album_cover = self.album_cover_big_dict[unicode(get_artist_name)][0].keys() # make and/or update new_album_title list with album names from previous and current search # check if album_title_list2 is not empty list if album_title_list2: # make dictionary {"album tracklist":[{"album title":"album cover"}], ...} self.album_dict = md.make_dict(prev_album_tracklist + album_tracklist_list + album_tracklist_list2, prev_album + album_title_list + album_title_list2, prev_album_cover + album_cover_big_list + album_cover_big_list2) # update album names and print it to list widget self.update_album(self.album_dict) else: # make dictionary {"album tracklist":[{"album title":"album cover"}], ...} self.album_dict = md.make_dict(prev_album_tracklist + album_tracklist_list, prev_album + album_title_list, prev_album_cover + album_cover_big_list) # update album names and print it to list widget self.update_album(self.album_dict) return self.album_dict