Пример #1
0
    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
Пример #2
0
    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