From c56b68bb0cc9121f2a346b4ef77ec19920e88129 Mon Sep 17 00:00:00 2001 From: localhost_frssoft Date: Sun, 18 Jun 2023 00:53:00 +0300 Subject: [PATCH] Check tracks count before return tag --- src/fw_api.py | 3 ++- src/fw_tags.py | 11 +++++++---- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/src/fw_api.py b/src/fw_api.py index 98038ed..9705dfa 100644 --- a/src/fw_api.py +++ b/src/fw_api.py @@ -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, diff --git a/src/fw_tags.py b/src/fw_tags.py index b200542..d11ac0d 100644 --- a/src/fw_tags.py +++ b/src/fw_tags.py @@ -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