mirror of
http://gitea.phreedom.club/localhost_frssoft/funkwlmpv
synced 2024-11-03 03:07:17 +00:00
84 lines
2.7 KiB
Python
84 lines
2.7 KiB
Python
from src.fw_api import s, select_instance, instance, federate_search_by_url
|
|
from src.fw_radios import list_radios
|
|
from src.fw_artists import list_artists
|
|
from src.fw_albums import list_albums
|
|
from src.fw_tracks import list_tracks
|
|
from src.fw_channels import list_channels
|
|
from src.fw_playlists import list_playlists
|
|
import src.settings as settings
|
|
import src.mpv_control
|
|
import json, sys
|
|
from loguru import logger
|
|
from pyfzf.pyfzf import FzfPrompt
|
|
|
|
fzf = FzfPrompt()
|
|
|
|
def main():
|
|
while True:
|
|
menu = ['Radios',
|
|
'Artists',
|
|
'Albums',
|
|
'Tracks',
|
|
'Channels',
|
|
'Playlists',
|
|
'Search',
|
|
'Switch instance']
|
|
if not s.headers.get('Authorization'):
|
|
menu.append('Sign in')
|
|
if not src.mpv_control.player.core_idle:
|
|
menu.insert(0, 'Player')
|
|
ids = fzf.prompt(menu)
|
|
|
|
selected = ids[0]
|
|
if selected == 'Radios':
|
|
list_radios()
|
|
if selected == 'Artists':
|
|
list_artists()
|
|
if selected == 'Albums':
|
|
list_albums()
|
|
if selected == 'Tracks':
|
|
list_tracks()
|
|
if selected == 'Channels':
|
|
list_channels()
|
|
if selected == 'Playlists':
|
|
list_playlists()
|
|
if selected == 'Search':
|
|
search_type = fzf.prompt(('Federated', 'All types'))[0]
|
|
if search_type == 'Federated':
|
|
print('Input url:')
|
|
returned_obj = federate_search_by_url(input())
|
|
logger.info(str(returned_obj))
|
|
|
|
if selected == 'Switch instance':
|
|
with open('config.json', 'rt') as f:
|
|
conf = json.loads(f.read())
|
|
list_instances = conf.get('public_list_instances') + settings.get_new_funkwhale_servers()
|
|
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 selected == 'Player':
|
|
src.mpv_control.player_menu(storage=src.mpv_control.player_fw_storage.storage)
|
|
|
|
|
|
|
|
if __name__ == '__main__':
|
|
main()
|