diff --git a/.gitignore b/.gitignore index 96aee98..8196f52 100644 --- a/.gitignore +++ b/.gitignore @@ -9,4 +9,5 @@ update_pypi_and_github.py # Currently in progress /flexx-app/ -/.idea/ \ No newline at end of file +/.idea/ +*test* diff --git a/irs/__main__.py b/irs/__main__.py index c64613d..ec73ff3 100644 --- a/irs/__main__.py +++ b/irs/__main__.py @@ -77,7 +77,7 @@ def main(): import pkg_resources print ("\n\n" + color("Ingenious Redistribution System", ["HEADER", "BOLD"])) print ("Homepage: " + color("https://github.com/kepoorhampond/irs", ["OKGREEN"])) - print ("License: " + color("The GNU", ["YELLOW"]) + " (http://www.gnu.org/licenses/gpl.html)") + print ("License: " + color("GNU", ["YELLOW"]) + " (http://www.gnu.org/licenses/gpl.html)") print ("Version: " + pkg_resources.get_distribution("irs").version) print ("\n") exit(0) @@ -90,11 +90,6 @@ def main(): parser.error("error: must supply -A/--album or -s/--song if specifying -a/--artist") exit(1) - - - elif not args.artist and not args.playlist: - manager.console() - elif args.playlist: manager.rip_playlist() @@ -105,6 +100,8 @@ def main(): elif args.song: manager.rip_mp3() + else: + manager.console() if __name__ == "__main__": main() diff --git a/irs/manager.py b/irs/manager.py index 1582578..bbcfbf1 100644 --- a/irs/manager.py +++ b/irs/manager.py @@ -193,19 +193,32 @@ class Manager: results = spotify.search(q=search, type='album') items = results['albums']['items'] if len(items) > 0: - album = items[0] + print (bc.HEADER + "Album results:") + choice = "" + while choice not in tuple(range(0, 5)): + for index, album in enumerate(items[:5]): + print (bc.HEADER + "\t" + str(index) + ") " + album["name"]) + choice = int(input(bc.YELLOW + "\nEnter album number: " + bc.ENDC)) + + album = items[choice] album_id = (album['uri']) contents = spotify.album_tracks(album_id)["items"] contents = contents[0:-1] names = [] for song in contents: - names.append(song["name"]) - return names + song = song["name"] + song = song.split(" - ")[0] + names.append(song) + return names, album_id - def get_album_art(self, artist, album): + def get_album_art(self, artist, album, id=None): spotify = spotipy.Spotify() - results = spotify.search(q="album:" + album, type='album') + if id: + album = spotify.album(id) + return album["images"][0]["url"] + + results = spotify.search(q=artist + " " + album, type='album') items = results['albums']['items'] if len(items) > 0: album = items[0]['images'][0]['url'] @@ -214,7 +227,7 @@ class Manager: def rip_album(self): search = self.args.artist + " " + self.args.album - songs = self.get_album_contents(search) + songs, album_uri = self.get_album_contents(search) if not songs: print (bc.FAIL + "Could not find album." + bc.ENDC) @@ -226,7 +239,7 @@ class Manager: print (bc.OKBLUE + " - " + song + bc.ENDC) print (bc.YELLOW + "\nFinding album cover ... " + bc.ENDC, end="\r") - album_art_url = self.get_album_art(self.args.artist, self.args.album) + album_art_url = self.get_album_art(self.args.artist, self.args.album, id=album_uri) print (bc.OKGREEN + "Album cover found: " + bc.ENDC + album_art_url) for track_number, song in enumerate(songs): diff --git a/irs/metadata.py b/irs/metadata.py index b2f493e..a76a34b 100644 --- a/irs/metadata.py +++ b/irs/metadata.py @@ -84,6 +84,20 @@ class Metadata: return True + def get_album_art(self, artist, album, id=None): + spotify = spotipy.Spotify() + + if id: + album = spotify.album(id) + return album["images"][0]["url"] + + results = spotify.search(q=artist + " " + album, type='album') + items = results['albums']['items'] + if len(items) > 0: + album = items[0]['images'][0]['url'] + return album + + def add_album_art(self, image_url): mp3 = EasyMP3(self.location, ID3=ID3) @@ -93,7 +107,7 @@ class Metadata: pass if not image_url: - image_url = self.get_albumart_url(album) + image_url = self.get_album_art(self.args.artist, self.mp3["album"][0]) mp3.tags.add( APIC( diff --git a/irs/utils.py b/irs/utils.py index 0d35be7..f172f31 100644 --- a/irs/utils.py +++ b/irs/utils.py @@ -1,4 +1,4 @@ -import sys +import sys, os def strip_special_chars(string): special_chars = "\ / : * ? \" < > | - ( )".split(" ") @@ -87,3 +87,26 @@ def search_google(self, search_terms=""): headers=hdr)).read(), 'html.parser').findAll(text=True) return list(filter(visible, texts)) + +def unorganize(file_name, location, song_number, artist): + + locations = location.split("/") + + folder_name = ("playlist - " + file_name)[:40] + + if not os.path.isdir(folder_name): + os.makedirs(folder_name) + + os.rename(location, "%s/%s - %s" % (folder_name, song_number, locations[-1])) + + if remove: + import shutil # Only import this if I have to. + shutil.rmtree(locations[0]) + + +def finish_unorganize(file_name): + folder_name = ("playlist - " + file_name)[:40] + + os.rename(file_name, folder_name + "/" + file_name) + + os.rename(folder_name, folder_name.replace("playlist - ", ""))