2022-11-08 14:09:54 +00:00
|
|
|
from src.fw_api import s, select_instance, instance
|
2022-11-01 10:15:28 +00:00
|
|
|
from src.fw_radios import list_radios
|
2022-11-08 17:58:27 +00:00
|
|
|
from src.fw_artists import list_artists
|
2022-11-08 18:08:24 +00:00
|
|
|
from src.fw_albums import list_albums
|
2022-11-06 22:21:49 +00:00
|
|
|
import json, sys
|
2022-11-02 00:05:08 +00:00
|
|
|
from loguru import logger
|
2022-11-01 10:15:28 +00:00
|
|
|
from pyfzf.pyfzf import FzfPrompt
|
|
|
|
|
|
|
|
fzf = FzfPrompt()
|
|
|
|
|
|
|
|
def main():
|
2022-11-02 00:05:08 +00:00
|
|
|
logger.remove()
|
2022-11-06 22:21:49 +00:00
|
|
|
logger.add(sys.stderr, filter='src.fw_api')
|
|
|
|
logger.add(sys.stderr, filter='src.fw_radios')
|
2022-11-08 17:58:27 +00:00
|
|
|
logger.add(sys.stderr, filter='src.fw_artists')
|
2022-11-01 10:15:28 +00:00
|
|
|
while True:
|
2022-11-08 17:58:27 +00:00
|
|
|
menu = ['Radios',
|
|
|
|
'Artists',
|
2022-11-08 18:08:24 +00:00
|
|
|
'Albums',
|
2022-11-08 17:58:27 +00:00
|
|
|
'Switch instance']
|
2022-11-08 14:09:54 +00:00
|
|
|
if not s.headers.get('Authorization'):
|
|
|
|
menu.append('Sign in')
|
2022-11-01 10:15:28 +00:00
|
|
|
ids = fzf.prompt(menu)
|
|
|
|
|
|
|
|
selected = ids[0]
|
|
|
|
if selected == 'Radios':
|
|
|
|
list_radios()
|
2022-11-08 17:58:27 +00:00
|
|
|
if selected == 'Artists':
|
|
|
|
list_artists()
|
2022-11-08 18:08:24 +00:00
|
|
|
if selected == 'Albums':
|
|
|
|
list_albums()
|
2022-11-03 23:45:40 +00:00
|
|
|
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)
|
2022-11-08 14:09:54 +00:00
|
|
|
if selected == 'Sign in':
|
|
|
|
print(f'''
|
|
|
|
If You want sign in, please visit:
|
|
|
|
https://{instance}/settings/applications/new
|
|
|
|
And fill Name funkwhale-cli
|
2022-11-08 19:23:19 +00:00
|
|
|
Scopes: Read (only listen music), Write (optional)
|
2022-11-08 14:09:54 +00:00
|
|
|
|
|
|
|
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)
|
|
|
|
|
2022-11-01 10:15:28 +00:00
|
|
|
|
|
|
|
|
|
|
|
if __name__ == '__main__':
|
|
|
|
main()
|