Ejemplo n.º 1
0
 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()
Ejemplo n.º 2
0
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)
Ejemplo n.º 3
0
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
Ejemplo n.º 4
0
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()
Ejemplo n.º 5
0
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')