mirror of
https://gitea.phreedom.club/localhost_frssoft/funkwlmpv
synced 2025-07-31 13:55:13 +00:00
renamed funkwhale-cli -> funkwlmpv
This commit is contained in:
parent
230d92f399
commit
a99cd9fd57
5 changed files with 6 additions and 6 deletions
144
funkwlmpv
Executable file
144
funkwlmpv
Executable file
|
@ -0,0 +1,144 @@
|
|||
#!/usr/bin/env python3
|
||||
|
||||
from src.fw_api import current_instance, get_instance_settings, get_node_info
|
||||
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
|
||||
from src.fw_recents import list_fav_or_history
|
||||
from src.fw_instances import instances_menu
|
||||
import src.mpv_control
|
||||
import json
|
||||
import os
|
||||
from shlex import quote
|
||||
from shutil import get_terminal_size
|
||||
from pyfzf.pyfzf import FzfPrompt
|
||||
|
||||
os.environ['FZF_DEFAULT_OPTS'] = "--margin 2,0,0,0 --preview-window down:2:hidden:wrap --bind ?:toggle-preview --preview 'echo {}'"
|
||||
fzf = FzfPrompt()
|
||||
|
||||
os.system('clear')
|
||||
if get_terminal_size().columns > 32:
|
||||
print('\n\n')
|
||||
os.system('cat .icon.txt')
|
||||
|
||||
def main():
|
||||
|
||||
while True:
|
||||
support_message = ''
|
||||
instance_title = ''
|
||||
menu = ['Radios',
|
||||
'Artists',
|
||||
'Albums',
|
||||
'Tracks',
|
||||
'Channels',
|
||||
'Playlists',
|
||||
'Favorites',
|
||||
'Recently listened',
|
||||
'About instance',
|
||||
'Switch instance']
|
||||
try:
|
||||
ins_nodeinfo = get_node_info()
|
||||
support_message = ins_nodeinfo['metadata']['instanceSupportMessage']
|
||||
instance_title = ins_nodeinfo['metadata']['nodeName']
|
||||
instance_stats = []
|
||||
for k, v in ins_nodeinfo['metadata']['library'].items():
|
||||
if k == 'anonymousCanListen' and v == False and not current_instance.s.headers.get('Authorization'):
|
||||
instance_stats.append(f'!!! {k}: {v} !!!')
|
||||
menu = ['Switch instance', 'About instance']
|
||||
continue
|
||||
instance_stats.append(f'{k}: {v}')
|
||||
instance_stats.append(ins_nodeinfo['software']['version'])
|
||||
instance_stats = '\n'.join(instance_stats)
|
||||
|
||||
main_menu_header = quote(f'''{instance_title}\n{instance_stats}'''.strip())
|
||||
except Exception as E:
|
||||
splitted = ':\n'.join(str(E).split(':'))
|
||||
main_menu_header = quote(f'''Connection failed:\n{splitted}'''.strip())
|
||||
menu = ['Switch instance']
|
||||
|
||||
if not current_instance.s.headers.get('Authorization'):
|
||||
menu.append('Sign in')
|
||||
if support_message != '':
|
||||
menu.append('Donate')
|
||||
if src.mpv_control.player.playlist_playing_pos != -1:
|
||||
menu.insert(0, 'Player')
|
||||
selected = fzf.prompt(menu, f"--header={main_menu_header}")
|
||||
if selected == []:
|
||||
print('bye-bye :3')
|
||||
break
|
||||
else:
|
||||
selected = selected[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 == 'Favorites':
|
||||
list_fav_or_history()
|
||||
if selected == 'Recently listened':
|
||||
list_fav_or_history(is_history_view=True)
|
||||
if selected == 'Switch instance':
|
||||
instances_menu()
|
||||
if selected == 'Sign in':
|
||||
print(f'''
|
||||
If You want sign in, please visit:
|
||||
https://{current_instance.instance}/settings/applications/new
|
||||
And fill Name funkwlmpv
|
||||
Scopes:
|
||||
Read | Write (optional):
|
||||
write:libraries
|
||||
write:favorites
|
||||
write:listenings
|
||||
write:follows
|
||||
write:filters
|
||||
|
||||
Insert token from "Access token" here''')
|
||||
register_token = input()
|
||||
with open('.auth.json', 'rt') as f:
|
||||
tkns = json.load(f)
|
||||
with open('.auth.json', 'wt') as f:
|
||||
tkns[current_instance.instance] = register_token
|
||||
f.write(json.dumps(tkns, indent=4))
|
||||
del tkns
|
||||
del register_token
|
||||
del f
|
||||
os.system('clear')
|
||||
|
||||
current_instance.select_instance(current_instance.instance)
|
||||
if selected == 'Donate':
|
||||
os.system(f'less <<EOF\nSupport instance message:\n{support_message}\nEOF')
|
||||
if selected == 'About instance':
|
||||
ins_settings = get_instance_settings()
|
||||
about_instance_info = []
|
||||
for i in ins_settings:
|
||||
k, v = i.get('verbose_name'), i.get('value')
|
||||
about_instance_info.append(f'{k}: {v}')
|
||||
about_instance_info.append('|||||Some stats:')
|
||||
if ins_nodeinfo['metadata'].get('usage'):
|
||||
for k, v in ins_nodeinfo['metadata']['usage'].items():
|
||||
about_instance_info.append(f'{k}: {v}')
|
||||
for k, v in ins_nodeinfo['metadata']['library'].items():
|
||||
about_instance_info.append(f'{k}: {v}')
|
||||
for k, v in ins_nodeinfo['usage'].items():
|
||||
about_instance_info.append(f'{k}: {v}')
|
||||
about_instance_info = '\n'.join(about_instance_info)
|
||||
os.system(f'less <<EOF\n{about_instance_info}\nEOF')
|
||||
del about_instance_info
|
||||
if selected == 'Player':
|
||||
src.mpv_control.player_menu(
|
||||
storage=src.mpv_control.player_fw_storage.storage)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
Loading…
Add table
Add a link
Reference in a new issue