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())
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())