def main(search, verbose): print('*** Searching for lyrics. ***') ly = Lyrics() lyrics = ly.get_lyrics(search) YT_search = search if lyrics == []: print("INFO: Could not found lyrics for your search.") lyric = None else: lyric = lyrics[0] if verbose: # list lyrics for user to choose for i, lyric in enumerate(lyrics, start=1): print(f'{i}. {lyric["author"]} {lyric["songName"]}') print('0. For no lyrics.') num = int(input('Choose lyrics: ')) if num == 0: lyric = None YT_search = search elif num > len(lyrics) or num < 0: sys.exit('ERROR: Wrong input.') else: lyric = lyrics[num - 1] YT_search = f'{lyric["author"]} {lyric["songName"]}' else: print(f'Found: {lyric["author"]} - {lyric["songName"]}') print('Done.\n') # search youtube print(f"*** Searching Youtube for '{YT_search}'. ***") youtube = Youtube() songs = youtube.search(YT_search, sortByViews=False) song = songs[0] if verbose: # list youtube songs for use to choose for i, song in enumerate(songs, start=1): print( f'{i}. {song["title"]}, {song["views"]} views, {song["link"]}') print('0. Exit.') num = int(input('Choose lyrics: ')) if num == 0: print('INFO: Exiting.') sys.exit(0) elif num > len(lyrics) or num < 0: exit('ERROR: Wrong input.') else: song = songs[num - 1] else: print( f'Found {song["title"]}, {song["views"]} views, {song["link"]}\n') print('Done.\n') # download a song from youtube print('*** Downloading and converting to mp3. ***') filepath, folder = youtube.download_and_convert_to_mp3( song['link'], DOWNLOAD_FOLDER) print('Done.\n') print('*** Filtering vocals. This could take a minute. ***') filter = Filter() vocals, instrum = filter.extract_vocals(filepath, folder) filter.mix_vocals_with_instrum(folder, vocals, instrum) print(f'Done.\n') if lyric is not None: print('*** Saving lyrics to file ***') ly.save(folder, lyric) print('Done saving lyrics to file.\n') absPath = os.path.abspath(folder) print(f'Output folder: {absPath}')