Compare commits

...

4 commits

4 changed files with 21 additions and 11 deletions

View file

@ -111,12 +111,13 @@ def get_audio_file(track_uuid, listen_url=False, download=False,
@logger.catch
def get_tracks(page=None, ordering=None, q=None,
def get_tracks(page=None, ordering=None, q=None, page_size=None,
artist=None, album=None, library=None,
tag=None, favourites=None, include_channels=None, pg=None):
'''This function get tracks by params'''
params = {
'page': page,
'page_size': page_size,
'ordering': ordering,
'q': q,
'artist': artist,
@ -169,7 +170,7 @@ def get_recently_listened(page=None, q=None, scope=None, include_channels=None,
@logger.catch
def get_artists(page=None, q=None, artist=None, album=None,
def get_artists(page=None, q=None, artist=None, album=None, tag=None,
library=None, scope=None, favourites=None, refresh=False, pg=None):
'''This function get artists by params'''
params = {
@ -177,6 +178,7 @@ def get_artists(page=None, q=None, artist=None, album=None,
'q': q,
'artist': artist,
'album': album,
'tag': tag,
'library': library,
'scope': scope,
'favourites': favourites,
@ -272,9 +274,10 @@ def list_libraries(page=None, page_size=None, q=None, scope='all', pg=None):
@logger.catch
def get_tags(q=None, pg=None):
def get_tags(q=None, ordering='-creation_date', pg=None):
params = {
'q': q,
'ordering': ordering
}
if pg:
r = current_instance.s.get(pg)

View file

@ -2,6 +2,7 @@ from src.fw_api import get_artists, get_tracks, get_audio_file
from src.fw_api_hints import hint_scope
from src.fw_albums import list_albums
from src.fw_libraries import libraries
from src.fw_tags import list_tags
from src.mpv_control import player, player_menu, track_url_to_uuid
from pyfzf.pyfzf import FzfPrompt
from loguru import logger
@ -10,12 +11,12 @@ fzf = FzfPrompt()
@logger.catch
def list_artists(pg=None, search=None, library=None, scope=None):
artists = get_artists(q=search, library=library, pg=pg, scope=scope)
def list_artists(pg=None, search=None, library=None, scope=None, tag=None):
artists = get_artists(q=search, library=library, pg=pg, scope=scope, tag=tag)
artists_next = artists.get('next')
artists_prev = artists.get('previous')
artists_results = artists.get('results')
view = ['Search', 'Library', 'Limit by scope']
view = ['Search', 'Tag', 'Library', 'Limit by scope']
if artists_next:
view.append('Next page')
if artists_prev:
@ -39,6 +40,8 @@ def list_artists(pg=None, search=None, library=None, scope=None):
elif select == 'Search':
print('Search by artist:')
list_artists(search=input())
elif select == 'Tag':
list_artists(tag=list_tags())
elif select == 'Library':
select_lib = libraries()
list_artists(library=select_lib)

View file

@ -25,8 +25,9 @@ def libraries(pg=None, radio=False):
index = libs.index(lib_i)
lib_name = lib_i.get('name')
lib_tracks_count = lib_i.get('uploads_count')
lib_access = lib_i.get('privacy_level')
lib_by = lib_i.get('actor').get('full_username')
libraries_listing.append(f'{index}.{lib_name} | {lib_by} | {lib_tracks_count}')
libraries_listing.append(f'{index}.{lib_name} | {lib_by} | {lib_tracks_count} | {lib_access}')
lib_select = fzf.prompt(
libraries_listing,
f'--header=\'found {libs_count} libraries\nmap: library name | owner | tracks count\'')

View file

@ -1,4 +1,4 @@
from src.fw_api import get_tags
from src.fw_api import get_tags, get_tracks
from pyfzf.pyfzf import FzfPrompt
from loguru import logger
@ -6,7 +6,7 @@ fzf = FzfPrompt()
@logger.catch
def list_tags(pg=None, search=None):
def list_tags(pg=None, search=None, error_given=''):
tags = get_tags(q=search, pg=pg)
tags_next = tags.get('next')
tags_prev = tags.get('previous')
@ -21,7 +21,7 @@ def list_tags(pg=None, search=None):
index = tags_results.index(i)
tag_name = i.get('name')
view.append(f'{index}.{tag_name}')
select = fzf.prompt(view)[0].split('.', 1)[0]
select = fzf.prompt(view, f"--header=\'{error_given}\'")[0].split('.', 1)[0]
if select == 'Next page':
return list_tags(pg=tags_next)
elif select == 'Prev page':
@ -30,4 +30,7 @@ def list_tags(pg=None, search=None):
print('Search by tag:')
return list_tags(search=input())
else:
return tags_results[int(select)].get('name')
selected_tag = tags_results[int(select)].get('name')
if get_tracks(tag=selected_tag, page_size=1)['count'] == 0:
return list_tags(pg=pg, search=search, error_given='This tag no contain tracks, select another')
return selected_tag