funkwlmpv/funkwhale_cli.py

52 lines
1.5 KiB
Python

from src.fw_api import s, select_instance, instance
from src.fw_radios import list_radios
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')
while True:
menu =['Radios', '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 == '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: mark Read
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()