So, I forgot add this file, oops...

This commit is contained in:
localhost_frssoft 2023-06-07 02:46:00 +03:00
parent 0677e0b863
commit 706d7684dd
1 changed files with 72 additions and 0 deletions

72
src/fw_recents.py Normal file
View File

@ -0,0 +1,72 @@
from src.fw_api import get_favorires_tracks, get_recently_listened, get_audio_file
from src.mpv_control import player, player_menu, track_url_to_uuid, player_fw_storage
from pyfzf.pyfzf import FzfPrompt
from loguru import logger
fzf = FzfPrompt()
@logger.catch
def list_fav_or_history(pg=None, search=None, scope=None, is_history_view=False):
if is_history_view:
caption = 'listened:'
tracks = get_recently_listened(q=search, scope=scope, pg=pg)
else:
caption = 'liked:'
tracks = get_favorires_tracks(q=search, scope=scope, pg=pg)
tracks_next = tracks.get('next')
tracks_prev = tracks.get('previous')
tracks_results = tracks.get('results')
view = ['Search', 'Limit by scope', 'Play this page']
if tracks_next:
view.append('Next page')
if tracks_prev:
view.append('Prev page')
for i in tracks_results:
index = tracks_results.index(i)
track_name = i['track'].get('title')
who_user = i['user'].get('username')
view.append(f'{index}.{track_name} | {caption} {who_user}')
select = fzf.prompt(view, '--multi')
if 'Next page' in select:
list_fav_or_history(pg=tracks_next, is_history_view=is_history_view)
elif 'Prev page' in select:
list_fav_or_history(pg=tracks_prev, is_history_view=is_history_view)
elif 'Search' in select:
print('Search by track:')
list_fav_or_history(search=input(), is_history_view=is_history_view)
elif 'Limit by scope' in select:
print('''
Limit the results to a given user or pod:
Use all (or do not specify the property to disable scope filtering)
Use me to retrieve content relative to the current user
Use subscribed to retrieve content in libraries you follow
Use actor:alice@example.com to retrieve content relative to the account `alice@example.com
Use domain:example.com to retrieve content relative to the domain `example.com
''')
scope = input()
list_fav_or_history(scope=scope, search=search, is_history_view=is_history_view)
elif 'Play this page' in select:
for i in tracks_results:
play_track(track=i['track'], multi=True)
elif len(select) > 1:
for i in select:
play_track(track=tracks_results[int(
i.split('.', 1)[0])]['track'], multi=True)
else:
play_track(track=tracks_results[int(
select[0].split('.', 1)[0])]['track'])
def play_track(track, multi=False):
listen_url = get_audio_file(track['listen_url'], True)
player_fw_storage.storage[track_url_to_uuid(listen_url)] = track
if multi:
player.loadfile(listen_url, 'append-play')
else:
player.loadfile(listen_url, 'append-play')
track_name = track.get('title')
player_menu(f"{track_name} playing...", player_fw_storage.storage)