from src.fw_api import s, select_instance, instance from src.fw_radios import list_radios from src.fw_artists import list_artists from src.fw_albums import list_albums import json, sys from loguru import logger from pyfzf.pyfzf import FzfPrompt fzf = FzfPrompt() def main(): logger.remove() logger.add(sys.stderr, filter='src.fw_api') logger.add(sys.stderr, filter='src.fw_radios') logger.add(sys.stderr, filter='src.fw_artists') while True: menu = ['Radios', 'Artists', 'Albums', 'Switch instance'] if not s.headers.get('Authorization'): menu.append('Sign in') ids = fzf.prompt(menu) selected = ids[0] if selected == 'Radios': list_radios() if selected == 'Artists': list_artists() if selected == 'Albums': list_albums() if selected == 'Switch instance': with open('config.json', 'rt') as f: conf = json.loads(f.read()) list_instances = conf.get('public_list_instances') instance = fzf.prompt(list_instances, '--header \'Select instance\'')[0] select_instance(instance) if selected == 'Sign in': print(f''' If You want sign in, please visit: https://{instance}/settings/applications/new And fill Name funkwhale-cli Scopes: Read (only listen music), Write (optional) Insert token from "Access token" here''') register_token = input() with open('.auth.json', 'rt') as f: tkns = json.loads(f.read()) with open('.auth.json', 'wt') as f: tkns[instance] = register_token f.write(json.dumps(tkns)) del tkns del register_token del f select_instance(instance) if __name__ == '__main__': main()