From 9d94fbf2230d755237158c37df0efc70e9e67538 Mon Sep 17 00:00:00 2001 From: Bomme <13520622+Bomme@users.noreply.github.com> Date: Thu, 13 Nov 2025 21:40:46 +0100 Subject: [PATCH 1/2] Refactor bookmark methods Replaced user-specific bookmark methods with client methods after https://github.com/MTG/freesound/commit/7ab38a569c7cbdf21424a0895a7db8fcac286fec --- download_bookmarks_example.py | 14 +++------- examples.py | 18 ------------- freesound.py | 50 ++++++++++++++++++----------------- 3 files changed, 30 insertions(+), 52 deletions(-) diff --git a/download_bookmarks_example.py b/download_bookmarks_example.py index a5926e6..e118010 100644 --- a/download_bookmarks_example.py +++ b/download_bookmarks_example.py @@ -18,29 +18,23 @@ freesound_client.set_token(access_token, "oauth") path_name = os.path.join(os.getcwd(), "tmp") -try: - os.mkdir(path_name) -except: - pass +os.makedirs(path_name, exist_ok=True) -user = freesound_client.get_user("apitest") -print("Username:", user.username) - -bookmarks_results_pager = user.get_bookmark_categories(page_size=100) +bookmarks_results_pager = freesound_client.get_my_bookmark_categories(page_size=100) print("Num categories:", bookmarks_results_pager.count) for bookmark in bookmarks_results_pager: print("\tCategory:", bookmark.name) print("\tNum sounds:", bookmark.num_sounds) - sounds_results_pager = user.get_bookmark_category_sounds(bookmark.id, fields="id,name,type", page_size=1) + sounds_results_pager = freesound_client.get_my_bookmark_category_sounds(bookmark.id, fields="id,name,type", page_size=1) while True: for sound in sounds_results_pager: print("\t\tDownloading:", sound.name) # Some sound filenames already end with the type... - if sound.name.endswith(sound.type): + if sound.name.lower().endswith(sound.type.lower()): filename = sound.name else: filename = f"{sound.name}.{sound.type}" diff --git a/examples.py b/examples.py index ecf4542..1da7b63 100644 --- a/examples.py +++ b/examples.py @@ -200,21 +200,3 @@ ) print(sound.analysis.lowlevel.spectral_flatness_db.mean) print() - -# Getting bookmark categories from a user example -print("User bookmark categories:") -print("-----------") -user = freesound_client.get_user("frederic.font") -print("User name:", user.username) -results_pager = user.get_bookmark_categories(page_size=10) -print("Num results:", results_pager.count) -print("\t----- PAGE 1 -----") -for bookmark_category in results_pager: - print( - "\t-", - bookmark_category.name, - "with", - bookmark_category.num_sounds, - ) - print("sounds at", bookmark_category.url) -print() diff --git a/freesound.py b/freesound.py index 1377dd2..176944c 100644 --- a/freesound.py +++ b/freesound.py @@ -44,11 +44,11 @@ class URIS: LOGOUT = '/api-auth/logout/' LOGOUT_AUTHORIZE = '/oauth2/logout_and_authorize/' ME = '/me/' + ME_BOOKMARK_CATEGORIES = '/me/bookmark_categories/' + ME_BOOKMARK_CATEGORY_SOUNDS = '/me/bookmark_categories//sounds/' USER = '/users//' USER_SOUNDS = '/users//sounds/' USER_PACKS = '/users//packs/' - USER_BOOKMARK_CATEGORIES = '/users//bookmark_categories/' - USER_BOOKMARK_CATEGORY_SOUNDS = '/users//bookmark_categories//sounds/' # noqa PACK = '/packs//' PACK_SOUNDS = '/packs//sounds/' PACK_DOWNLOAD = '/packs//download/' @@ -176,6 +176,30 @@ def get_pack(self, pack_id): uri = URIS.uri(URIS.PACK, pack_id) return FSRequest.request(uri, {}, self, Pack) + def get_my_bookmark_categories(self, **params): + """ + Get bookmark categories for the authenticated user. + Relevant params: page, page_size + https://freesound.org/docs/api/resources_apiv2.html#my-bookmark-categories + Requires OAuth2 authentication. + + >>> c.get_my_bookmark_categories() + """ + uri = URIS.uri(URIS.ME_BOOKMARK_CATEGORIES) + return FSRequest.request(uri, params, self, GenericPager) + + def get_my_bookmark_category_sounds(self, category_id, **params): + """ + Get sounds in a bookmark category for the authenticated user. + Relevant params: page, page_size, fields, descriptors, normalized + https://freesound.org/docs/api/resources_apiv2.html#my-bookmark-category-sounds + Requires OAuth2 authentication. + + >>> c.get_my_bookmark_category_sounds(0) + """ + uri = URIS.uri(URIS.ME_BOOKMARK_CATEGORY_SOUNDS, category_id) + return FSRequest.request(uri, params, self, Pager) + def set_token(self, token, auth_type="token"): """ Set your API key or Oauth2 token @@ -479,28 +503,6 @@ def get_packs(self, **params): uri = URIS.uri(URIS.USER_PACKS, self.username) return FSRequest.request(uri, params, self.client, GenericPager) - def get_bookmark_categories(self, **params): - """ - Get user bookmark categories. - Relevant params: page, page_size - https://freesound.org/docs/api/resources_apiv2.html#user-bookmark-categories - - >>> u.get_bookmark_categories() - """ - uri = URIS.uri(URIS.USER_BOOKMARK_CATEGORIES, self.username) - return FSRequest.request(uri, params, self.client, GenericPager) - - def get_bookmark_category_sounds(self, category_id, **params): - """ - Get user bookmarks. - Relevant params: page, page_size, fields, descriptors, normalized - https://freesound.org/docs/api/resources_apiv2.html#user-bookmark-category-sounds - - >>> p = u.get_bookmark_category_sounds(0) - """ - uri = URIS.uri(URIS.USER_BOOKMARK_CATEGORY_SOUNDS, self.username, category_id) - return FSRequest.request(uri, params, self.client, Pager) - def __repr__(self): return '' % self.username From fe0f55dccad49e8eaacd4c5b0628b3c3acb3a5fd Mon Sep 17 00:00:00 2001 From: Bomme <13520622+Bomme@users.noreply.github.com> Date: Thu, 13 Nov 2025 22:01:39 +0100 Subject: [PATCH 2/2] yapf formatting --- download_bookmarks_example.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/download_bookmarks_example.py b/download_bookmarks_example.py index e118010..5abd52c 100644 --- a/download_bookmarks_example.py +++ b/download_bookmarks_example.py @@ -27,7 +27,9 @@ print("\tCategory:", bookmark.name) print("\tNum sounds:", bookmark.num_sounds) - sounds_results_pager = freesound_client.get_my_bookmark_category_sounds(bookmark.id, fields="id,name,type", page_size=1) + sounds_results_pager = freesound_client.get_my_bookmark_category_sounds( + bookmark.id, fields="id,name,type", page_size=1 + ) while True: for sound in sounds_results_pager: