From e8252246d347af59bef6cd22976a380372611982 Mon Sep 17 00:00:00 2001
From: localhost_frssoft <userquicker@disroot.org>
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 <userquicker@disroot.org>
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 <userquicker@disroot.org>
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']