def download(link, yt_title, args) -> str: """Download the song by using the passed link. The song will be saved with the passed title. Return the saved path of the song. """ logger.info('Downloading {}{}{} in {}{}kbps{}'.format( Fore.LIGHTMAGENTA_EX, yt_title, Style.RESET_ALL, Fore.LIGHTYELLOW_EX, defaults.DEFAULT.SONG_QUALITY, Style.RESET_ALL)) path = yt.dw(link, args.proxy, yt_title, args.format) if type(path) is not str: # Probably an error occured raise DownloadError(link, path) logger.info('Downloaded!') return path
def main(): """Run on program call.""" args = arguments() song_name = args.SONG_NAME # Check if --setup is passed if args.setup: setupConfig.make_config() exit(0) # After this part song name is required if song_name is None: prepend.PREPEND(2) print("Please pass a song name. This is necessary", "to search in itunes.") exit(1) if not args.nolocal: # Search for the song locally if not cache.main(song_name): exit(0) is_quiet = args.quiet url = args.url # If the url is passed then get the data if url is not None: data = [] # Get video data from youtube temp_data = yt.scan_video(yt.get_href(url)) data.append(temp_data) # link to dw the song link = url # In this case choice will be 0 choice = 0 else: if is_quiet: prepend.PREPEND(1) print('Quiet is enabled') prepend.PREPEND(1) print('Searching Youtube for ', end='') print(Fore.LIGHTYELLOW_EX, end='') print(song_name, end='') print(Style.RESET_ALL) data, urls = yt.search(song_name) if len(data) > 1 and not is_quiet: # Ask for a choice choice = song.getChoice(data, 'mp3') else: choice = 0 link = 'https://youtube.com{}'.format(urls[int(choice)]) # Declare a var to store the name of the yt video yt_title = data[choice]['title'] prepend.PREPEND(1) print('Downloading ', end='') print(Fore.LIGHTMAGENTA_EX, end='') print(yt_title, end=' ') print(Style.RESET_ALL, end='') print('in', end=' ') print(Fore.LIGHTYELLOW_EX, end='') print(defaults.DEFAULT.SONG_QUALITY + 'kbps', end='') print(Style.RESET_ALL) path = yt.dw(link, yt_title) if not path: prepend.PREPEND(2) print('Something went wrong while downloading!\a') sys.exit(0) else: prepend.PREPEND(1) print('Downloaded!') prepend.PREPEND(1) print('Converting to mp3...') conv_name = utility.convert_to_mp3(path) if not conv_name: prepend.PREPEND(2) print('Something went wrong while converting!\a') prepend.PREPEND(1) print('Getting song data...') # TRACK_INFO = song.getData(song_name) TRACK_INFO = metadata.SEARCH_SONG(song_name) # declare a variable to store the option option = 0 if TRACK_INFO is False: # prepend.PREPEND(2) # print('Data \a') # exit(0) pass elif len(TRACK_INFO) == 0: prepend.PREPEND(2) print('No data was found!\a') sys.exit(0) else: prepend.PREPEND(1) print('Setting data...') option = song.setData(TRACK_INFO, is_quiet, conv_name) if type(option) is not int: prepend.PREPEND(2) print('Something went wrong while writing data!\a') sys.exit(0) # Get the directory where song is moved DIR = dir.cleanup(TRACK_INFO, option) prepend.PREPEND(1) print('Moving to {}...'.format(DIR)) if not DIR: prepend.PREPEND(2) print('Something went wrong while moving!\a') sys.exit(0) else: prepend.PREPEND(1) print('Done')