Beispiel #1
0
def song(platform_flag: str, song_id: str, **kwargs) -> None:
    platform_id = _get_platform_id(platform_flag)
    if platform_id is None:
        logging.critical(
            'Unexpected music platform: "{}"'.format(platform_flag))
        sys.exit(1)

    conf.settings.update(kwargs)
    client = conf.get_client(platform_id)
    loop = asyncio.get_event_loop()
    try:
        logging.info('Fetch song {} from {}'.format(
            song_id, conf.get_site(platform_id)))
        resp = loop.run_until_complete(client.get_song(song_id))
        loop.run_until_complete(cli.concurrent_download(client, '.', resp))
    except exceptions.ClientError as e:
        logging.critical(e)
    finally:
        loop.run_until_complete(client.close())
Beispiel #2
0
def search(platform_flag, keyword) -> None:
    platform_id = _get_platform_id(platform_flag)
    if platform_id is None:
        logging.critical(
            'Unexpected music platform: "{}"'.format(platform_flag))
        sys.exit(1)

    client = conf.get_client(platform_id)
    loop = asyncio.get_event_loop()
    try:
        resp = loop.run_until_complete(client.search_song(keyword))
        for i, v in enumerate(resp.songs):
            print('[{:02d}] {} - {} - {} {}'.format(i + 1, v.name, v.artist,
                                                    v.album, v.id))
        if platform_flag is None:
            print('\nCommand: mxget song --id [id]')
        else:
            print('\nCommand: mxget song --from {} --id [id]'.format(
                platform_flag))
    except exceptions.ClientError as e:
        logging.critical(e)
    finally:
        loop.run_until_complete(client.close())