From e8252246d347af59bef6cd22976a380372611982 Mon Sep 17 00:00:00 2001 From: localhost_frssoft Date: Wed, 24 Jul 2024 15:13:31 +0300 Subject: [PATCH 1/3] select instance arg --- funkwlplay.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/funkwlplay.py b/funkwlplay.py index 465e2b2..b4ad315 100644 --- a/funkwlplay.py +++ b/funkwlplay.py @@ -13,7 +13,10 @@ parser = argparse.ArgumentParser( description='Create playlist from query or just random playlist tracks from funkwhale instances') parser.add_argument('-s', '--search') parser.add_argument('-t', '--tag') +parser.add_argument('-i', '--instance') args = parser.parse_args() +if args.instance: + instances = [args.instance] def create_playlist_file(track_list): From c1d53370b2459e67e82cb4a986f630dd7cd975a5 Mon Sep 17 00:00:00 2001 From: localhost_frssoft Date: Wed, 24 Jul 2024 17:36:00 +0300 Subject: [PATCH 2/3] add recursive get tracks --- funkwlplay.py | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/funkwlplay.py b/funkwlplay.py index b4ad315..cfd4411 100644 --- a/funkwlplay.py +++ b/funkwlplay.py @@ -14,6 +14,7 @@ parser = argparse.ArgumentParser( parser.add_argument('-s', '--search') parser.add_argument('-t', '--tag') parser.add_argument('-i', '--instance') +parser.add_argument('-r', '--recursion', type=int, default=0) args = parser.parse_args() if args.instance: instances = [args.instance] @@ -49,10 +50,24 @@ def filter_tracks(tracks): tracks_stor.append(i) -def search_tracks_on_instance(instance, tag='', query=''): +def search_tracks_on_instance(instance, tag='', query='', recursion=args.recursion): tracks = requests.get(f'https://{instance}/api/v1/tracks', params={'tag': tag, 'q': query, 'local': True, 'playable': True, 'ordering': 'random'}, timeout=10).json() + count = tracks['count'] + print(f'found {count} tracks on {instance}') + if recursion == 1: + recursion_limit = 0 + while tracks['next']: + try: + if recursion_limit >= 5: + break + new_tracks = requests.get(tracks['next']).json() + tracks['results'] += new_tracks['results'] + tracks['next'] = new_tracks['next'] + recursion_limit += 1 + except Exception as E: + print(E) tracks_replacer = [] for track in tracks['results']: track['listen_url'] = f'https://{instance}' + track['listen_url'] From 50e7402c92a46ddaa8c2065532b701b0edebbb93 Mon Sep 17 00:00:00 2001 From: localhost_frssoft Date: Wed, 24 Jul 2024 17:51:53 +0300 Subject: [PATCH 3/3] add depth arg --- funkwlplay.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/funkwlplay.py b/funkwlplay.py index cfd4411..4ec6b41 100644 --- a/funkwlplay.py +++ b/funkwlplay.py @@ -15,6 +15,7 @@ parser.add_argument('-s', '--search') parser.add_argument('-t', '--tag') parser.add_argument('-i', '--instance') parser.add_argument('-r', '--recursion', type=int, default=0) +parser.add_argument('-d', '--depth', type=int, default=5) args = parser.parse_args() if args.instance: instances = [args.instance] @@ -60,7 +61,7 @@ def search_tracks_on_instance(instance, tag='', query='', recursion=args.recursi recursion_limit = 0 while tracks['next']: try: - if recursion_limit >= 5: + if recursion_limit >= args.depth: break new_tracks = requests.get(tracks['next']).json() tracks['results'] += new_tracks['results']