Пример #1
0
def load_defaults():
    const.args = handle.get_arguments(to_group=False, raw_args='')
    const.args.folder = 'test'
    const.args.overwrite = 'skip'
    const.args.log_level = handle.logging.DEBUG

    spotdl.args = const.args
    spotdl.log = const.logzero.setup_logger(formatter=const.formatter,
                                            level=const.args.log_level)
Пример #2
0
def load_defaults():
    const.args = handle.get_arguments(raw_args='',
                                      to_group=False,
                                      to_merge=False)
    const.args.overwrite = 'skip'

    spotdl.args = const.args
    spotdl.log = const.logzero.setup_logger(formatter=const.formatter,
                                            level=const.args.log_level)
Пример #3
0
def main():
    const.args = handle.get_arguments()

    const.log = const.logzero.setup_logger(formatter=const.formatter,
                                           level=const.args.log_level)

    log = const.log
    log.debug('Python version: {}'.format(sys.version))
    log.debug('Platform: {}'.format(platform.platform()))
    log.debug(pprint.pformat(const.args.__dict__))

    try:
        if const.args.song:
            download_single(raw_song=const.args.song)
    except KeyboardInterrupt as e:
        log.exception(e)
        sys.exit(3)
    pass
Пример #4
0
def main():
    const.args = handle.get_arguments()

    if const.args.version:
        print('spotdl {version}'.format(version=__version__))
        sys.exit()

    internals.filter_path(const.args.folder)
    youtube_tools.set_api_key()

    const.log = const.logzero.setup_logger(formatter=const._formatter,
                                           level=const.args.log_level)
    global log
    log = const.log
    log.debug('Python version: {}'.format(sys.version))
    log.debug('Platform: {}'.format(platform.platform()))
    log.debug(pprint.pformat(const.args.__dict__))

    try:
        if const.args.song:
            download_single(raw_song=const.args.song)
        elif const.args.list:
            download_list(text_file=const.args.list)
        elif const.args.playlist:
            spotify_tools.write_playlist(playlist_url=const.args.playlist)
        elif const.args.album:
            spotify_tools.write_album(album_url=const.args.album)
        elif const.args.username:
            spotify_tools.write_user_playlist(username=const.args.username)

        # actually we don't necessarily need this, but yeah...
        # explicit is better than implicit!
        sys.exit(0)

    except KeyboardInterrupt as e:
        log.exception(e)
        sys.exit(3)
Пример #5
0
            if not const.args.input_ext == const.args.output_ext:
                os.remove(os.path.join(const.args.folder, input_song))

            if not const.args.no_metadata and meta_tags is not None:
                metadata.embed(os.path.join(const.args.folder, output_song), meta_tags)

            if const.args.preserve_spaces and "_" in output_song:
                song_path = os.path.join(const.args.folder, output_song.replace('_', ' '))
                os.rename(os.path.join(const.args.folder, output_song), song_path)

        else:
            log.error('No audio streams available')


if __name__ == '__main__':
    const.args = handle.get_arguments()
    internals.filter_path(const.args.folder)

    const.log = const.logzero.setup_logger(formatter=const.formatter,
                                      level=const.args.log_level)
    log = const.log
    log.debug('Python version: {}'.format(sys.version))
    log.debug('Platform: {}'.format(platform.platform()))
    log.debug(pprint.pformat(const.args.__dict__))

    try:
        if const.args.song:
            grab_single(raw_song=const.args.song)
        elif const.args.list:
            grab_list(text_file=const.args.list)
        elif const.args.playlist:
Пример #6
0
def test_grouped_arguments(tmpdir):
    sys.path[0] = str(tmpdir)
    with pytest.raises(SystemExit):
        handle.get_arguments(to_group=True, to_merge=True)
Пример #7
0
# -*- coding: UTF-8 -*-

from core import const
from core import handle
import spotdl

import os

const.args = handle.get_arguments(to_group=False, raw_args='')
const.args.folder = 'test'
const.args.overwrite = 'skip'
const.args.log_level = handle.logging.DEBUG

spotdl.args = const.args
spotdl.log = const.logzero.setup_logger(formatter=const.formatter,
                                        level=const.args.log_level)

raw_song = "Tony's Videos VERY SHORT VIDEO 28.10.2016"


def test_youtube_url():
    expect_url = 'http://youtube.com/watch?v=qOOcy2-tmbk'
    url = spotdl.youtube_tools.generate_youtube_url(raw_song, meta_tags=None)
    assert url == expect_url


def test_youtube_title():
    global content
    global title
    expect_title = "Tony's Videos VERY SHORT VIDEO 28.10.2016"
    content = spotdl.youtube_tools.go_pafy(raw_song, meta_tags=None)
Пример #8
0
def main():
    const.args = handle.get_arguments()

    if const.args.version:
        print('spotdl {version}'.format(version=__version__))
        sys.exit()

    internals.filter_path(const.args.folder)

    const.log = const.logzero.setup_logger(formatter=const._formatter,
                                           level=const.args.log_level)
    global log
    log = const.log
    log.debug('Python version: {}'.format(sys.version))
    log.debug('Platform: {}'.format(platform.platform()))
    log.debug(pprint.pformat(const.args.__dict__))

    try:
        if const.args.song:
            download_single(raw_song=const.args.song)
        elif const.args.list:
            if os.path.isdir(const.args.list):
                files = [
                    f for f in os.listdir(const.args.list)
                    if re.match(r'.*\.txt', f)
                    and not re.match(r'requirements\.txt', f)
                ]
                shuffle(files)
                timeout = time.time() + int(
                    os.getenv('MAX_DOWNLOAD_TIME_MIN', '300')) * 60
                index = 0
                while len(files) > 0:
                    list_file = files[index]
                    if time.time() > timeout:
                        log.info(
                            'Total timeout! Stopping download of playlists.')
                        break
                    folder = os.path.join(const.args.folder,
                                          list_file).rstrip('.txt')
                    internals.filter_path(folder)
                    if download_list(os.path.join(const.args.list, list_file),
                                     folder):
                        files.pop(index)
                    else:
                        index = index + 1
                    if index >= len(files):
                        index = 0
            else:
                download_list(text_file=const.args.list)
        elif const.args.playlist:
            spotify_tools.write_playlist(playlist_url=const.args.playlist)
        elif const.args.album:
            spotify_tools.write_album(album_url=const.args.album)
        elif const.args.username:
            if not os.path.exists('./playlists'):
                os.makedirs('./playlists')
            spotify_tools.write_user_playlist(username=const.args.username,
                                              path='./playlists')

        # actually we don't necessarily need this, but yeah...
        # explicit is better than implicit!
        sys.exit(0)

    except KeyboardInterrupt as e:
        log.exception(e)
        sys.exit(3)