mirror of
http://gitea.phreedom.club/localhost_frssoft/funkwlmpv
synced 2024-11-25 11:01:27 +00:00
mpv player menu
This commit is contained in:
parent
a654768958
commit
7f2a3ae4c9
|
@ -1,6 +1,11 @@
|
|||
from src.utils import download_track
|
||||
from loguru import logger
|
||||
from pyfzf.pyfzf import FzfPrompt
|
||||
import mpv
|
||||
|
||||
fzf = FzfPrompt()
|
||||
|
||||
|
||||
def mpv_log(loglevel, component, message):
|
||||
if loglevel == 'info':
|
||||
logger.info(f'{component} {message}')
|
||||
|
@ -9,3 +14,45 @@ def mpv_log(loglevel, component, message):
|
|||
|
||||
player = mpv.MPV(log_handler=mpv_log, ytdl=False,
|
||||
prefetch_playlist=True)
|
||||
|
||||
|
||||
def set_http_header(headers=[]):
|
||||
player.http_header_fields = headers
|
||||
|
||||
|
||||
def player_menu(header=None, storage={}):
|
||||
while True:
|
||||
try:
|
||||
select = fzf.prompt(('Next', 'Prev', 'Pause', 'Download', 'Info', 'Exit'), f"--header=\'{header}\'")[0]
|
||||
if select == 'Next':
|
||||
player.playlist_next()
|
||||
elif select == 'Prev':
|
||||
player.playlist_prev()
|
||||
elif select == 'Pause':
|
||||
if player.pause:
|
||||
player.pause = False
|
||||
else:
|
||||
player.pause = True
|
||||
elif select == 'Download':
|
||||
print('Downloading...')
|
||||
name_downloaded = download_track(player.filename)
|
||||
print(f'Downloaded: {name_downloaded}')
|
||||
elif select == 'Info':
|
||||
track = storage.get(player.filename)
|
||||
for i in ('title', 'fid', 'license', 'album', 'artist'):
|
||||
if i in ('album', 'artist'):
|
||||
name_aa = track.get(i).get('name')
|
||||
if not name_aa:
|
||||
name_aa = track.get(i).get('title')
|
||||
print(i + ': '+ name_aa)
|
||||
key = track.get(i)
|
||||
if key and isinstance(key, str):
|
||||
print(i + ': ' + key)
|
||||
input()
|
||||
elif select == 'Exit':
|
||||
player.playlist_clear()
|
||||
player.stop()
|
||||
break
|
||||
except KeyboardInterrupt:
|
||||
break
|
||||
|
||||
|
|
|
@ -1,17 +1,17 @@
|
|||
from src.fw_api import s
|
||||
import src.fw_api
|
||||
from urllib.parse import unquote
|
||||
|
||||
|
||||
def get_remote_file_name(url):
|
||||
'''This function return filename by content-disposition header'''
|
||||
r = s.head(url)
|
||||
r = src.fw_api.s.head(url)
|
||||
content_dispos = r.headers.get('content-disposition')
|
||||
if content_dispos.startswith('attachment; filename*=UTF-8\'\''):
|
||||
return unquote(content_dispos.split('attachment; filename*=UTF-8\'\'')[-1])
|
||||
|
||||
|
||||
def download_track(url, name=None):
|
||||
r = s.get(url)
|
||||
r = src.fw_api.s.get(url)
|
||||
if not name:
|
||||
name = get_remote_file_name(url)
|
||||
if not name:
|
||||
|
|
Loading…
Reference in a new issue