def download_song(raw_song): """ Download single song :param raw_song: Song name or youtube/spotify link """ song_downloader = spotdl_downloader.Downloader(raw_song=raw_song) song_downloader.download_single()
def match_args(): if const.args.song: for track in const.args.song: track_dl = downloader.Downloader(raw_song=track) track_dl.download_single() elif const.args.list: if const.args.write_m3u: youtube_tools.generate_m3u(track_file=const.args.list) else: list_dl = downloader.ListDownloader( tracks_file=const.args.list, skip_file=const.args.skip, write_successful_file=const.args.write_successful, ) list_dl.download_list() elif const.args.clear_playlist: spotify_tools.clear_playlist(const.args.clear_playlist) elif const.args.playlist: spotify_tools.write_playlist(playlist_url=const.args.playlist, text_file=const.args.write_to) elif const.args.album: spotify_tools.write_album(album_url=const.args.album, text_file=const.args.write_to) elif const.args.all_albums: spotify_tools.write_all_albums_from_artist( artist_url=const.args.all_albums, text_file=const.args.write_to) elif const.args.username: spotify_tools.write_user_playlist(username=const.args.username, text_file=const.args.write_to)
def get_track(): const.args = handle.get_arguments() internals.filter_path(const.args.folder) youtube_tools.set_api_key() try: if const.args.song: for track in const.args.song: track_dl = downloader.Downloader(raw_song=track) track_dl.download_single() except KeyboardInterrupt as e: print("Exception occured in method 'get_track':", e) return False return True
from spotdl import handle from spotdl import const from spotdl import downloader import os import sys const.args = handle.get_arguments(to_group=True) track = downloader.Downloader(raw_song=const.args.song[0]) track_title = track.refine_songname(track.content.title) track_filename = track_title + const.args.output_ext track_download_path = os.path.join(const.args.folder, track_filename) track.download_single()
def spotify_dl(context, update, link): user_id = update.message.chat_id, status = context.bot.send_message( chat_id=update.message.chat_id, text="Downloading Song!..\nPlease wait..", reply_to_message_id=update.message.message_id) try: # modify attributes on `const.args` to change any default arguments # https://github.com/ritiek/spotify-downloader/blob/67ae7d5c4c9ed289f278a3ad6bfae658b812196f/spotdl/handle.py#L15-L36 const.args = handle.get_arguments(to_group=False) # loglevel can be one of `logging.NOTSET`, `logging.INFO`, `logging.WARNING`, `logging.ERROR`, `logging.DEBUG` const.logzero.setup_default_logger(formatter=const._formatter, level=const.logzero.logging.INFO) const.args.folder = os.getcwd() const.args.trim_silence = True #key=link.split('https://open.spotify.com/')[1].split('/')[0] #print(link) if '/track/' in link: print("Track Invoked") # raw_song can take Spotify/Youtube URLs or a string track = downloader.Downloader(raw_song=link) #print(const.args) # you probably need one of these variables track_title = track.refine_songname(track.content.title) track_filename = track_title + const.args.output_ext #track_download_path = os.path.join(const.args.folder, track_filename) # download, convert and embed metadata track.download_single() status.edit_text(text='Sending your awesome song!...\n') a = context.bot.send_audio( chat_id=update.message.chat_id, audio=open(track_filename, 'rb'), caption='Downloaded using @emojifymusicbot', timeout=1000) os.remove(track_filename) elif '/album/' in link: print("Album") cmd = ['spotdl', '--write-to', 'album.txt', '--album', link] subprocess.call(cmd) with open('album.txt', 'r') as myfile: data = myfile.read() data = data.split('\n') data.pop() os.remove('album.txt') i = 1 for link in data: try: track = downloader.Downloader(raw_song=link) #print(const.args) # you probably need one of these variables track_title = track.refine_songname(track.content.title) track_filename = track_title + const.args.output_ext #track_download_path = os.path.join(const.args.folder, track_filename) # download, convert and embed metadata track.download_single() status.edit_text(text='Sending ' + str(i) + '/' + str(len(data)) + ' songs...\n') a = context.bot.send_audio( chat_id=update.message.chat_id, audio=open(track_filename, 'rb'), caption='Downloaded using @emojifymusicbot', timeout=1000) os.remove(track_filename) except Exception as e: print(e) finally: i = i + 1 status.edit_text(text='Thanks for using @emojifymusicbot\n') elif '/playlist/' in link: cmd = ['spotdl', '--write-to', 'playlist.txt', '--playlist', link] subprocess.call(cmd) with open('playlist.txt', 'r') as myfile: data = myfile.read() data = data.split('\n') data.pop() os.remove('playlist.txt') i = 1 for link in data: try: ack = mongo.send_saved_song(link, user_id) if ack == 1: update_db(bot, update, link, 'Cached', 'from_cache') continue track = downloader.Downloader(raw_song=link) #print(const.args) # you probably need one of these variables track_title = track.refine_songname(track.content.title) track_filename = track_title + const.args.output_ext #track_download_path = os.path.join(const.args.folder, track_filename) # download, convert and embed metadata track.download_single() status.edit_text(text='Sending ' + str(i) + '/' + str(len(data)) + ' songs...\n') if '/app/' in track_filename: track_filename = str(track_filename.split('/app/')[-1]) a = context.bot.send_audio( chat_id=update.message.chat_id, audio=open(track_filename, 'rb'), caption='Downloaded using @emojifymusicbot', timeout=1000) os.remove(track_filename) except Exception as e: print(e) finally: i = i + 1 status.edit_text(text='Thanks for using @emojifymusicbot\n') except Exception as e: status.edit_text( text='Error Occured\nPlease try downloading a different song\n')