def download_albumspo(self, URL, output=stock_output + "/", quality=stock_quality, recursive_quality=stock_recursive_quality, recursive_download=stock_recursive_download, not_interface=stock_not_interface, zips=stock_zip): URL = URL.split("?")[0] try: tracks = self.spo.album(URL) except Exception as a: if not "The access token expired" in str(a): raise exceptions.InvalidLink("Invalid link ;)") self.spo = Spotify(generate_token()) tracks = self.spo.album(URL) tot = tracks['total_tracks'] try: upc = tracks['external_ids']['upc'] while upc[0] == "0": upc = upc[1:] url = request("https://api.deezer.com/album/upc:%s" % upc).json() names = self.download_albumdee(url['link'], output, quality, recursive_quality, recursive_download, not_interface, zips) except KeyError: search = tot // 5 try: url = self.spo.track(tracks['tracks']['items'][search] ['external_urls']['spotify']) except: self.spo = Spotify(generate_token()) url = self.spo.track(tracks['tracks']['items'][search] ['external_urls']['spotify']) isrc = url['external_ids']['isrc'] try: ids = request("https://api.deezer.com/track/isrc:%s" % isrc, True).json()['album']['id'] tracks = request("https://api.deezer.com/album/%d" % ids, True).json() if tot != tracks['nb_tracks']: raise exceptions.TrackNotFound("") names = self.download_albumdee(tracks['link'], output, quality, recursive_quality, recursive_download, not_interface, zips) except (exceptions.TrackNotFound, exceptions.NoDataApi): raise exceptions.AlbumNotFound("Album %s not found :(" % tracks['name']) return names
def download_albumspo( self, URL, output=stock_output, quality=stock_quality, recursive_quality=stock_recursive_quality, recursive_download=stock_recursive_download, not_interface=stock_not_interface, zips=stock_zip, ): URL = URL.split("?")[0] try: tracks = self.spo.album(URL) except Exception as a: if not "The access token expired" in str(a): raise exceptions.InvalidLink("Invalid link ;)") self.spo = utils.generate_token() tracks = self.spo.album(URL) try: upc = "0%s" % tracks["external_ids"]["upc"] while upc[0] == "0": upc = upc[1:] try: upc = "upc:%s" % upc url = utils.request(self.api_album % upc, True).json() names = self.download_albumdee( url["link"], output, quality, recursive_quality, recursive_download, not_interface, zips, ) break except exceptions.NoDataApi: if upc[0] != "0": raise KeyError except KeyError: tot = tracks["total_tracks"] for a in tracks["tracks"]["items"]: try: isrc = self.spo.track( a["external_urls"]["spotify"])["external_ids"]["isrc"] except: self.spo = utils.generate_token() isrc = self.spo.track( a["external_urls"]["spotify"])["external_ids"]["isrc"] try: isrc = "isrc:%s" % isrc ids = utils.request(self.api_track % isrc, True).json()["album"]["id"] tracks = utils.request(self.api_album % str(ids), True).json() if tot == tracks["nb_tracks"]: break except exceptions.NoDataApi: pass try: if tot != tracks["nb_tracks"]: raise KeyError names = self.download_albumdee( tracks["link"], output, quality, recursive_quality, recursive_download, not_interface, zips, ) except KeyError: raise exceptions.AlbumNotFound("Album not found :(") return names