diff --git a/docs/.doctrees/api/minim.discogs.API.doctree b/docs/.doctrees/api/minim.discogs.API.doctree index b6ae716..24831fa 100644 Binary files a/docs/.doctrees/api/minim.discogs.API.doctree and b/docs/.doctrees/api/minim.discogs.API.doctree differ diff --git a/docs/.doctrees/environment.pickle b/docs/.doctrees/environment.pickle index 2809788..5e0a628 100644 Binary files a/docs/.doctrees/environment.pickle and b/docs/.doctrees/environment.pickle differ diff --git a/docs/.doctrees/notebooks/getting_started.doctree b/docs/.doctrees/notebooks/getting_started.doctree index 72d8f14..6a49739 100644 Binary files a/docs/.doctrees/notebooks/getting_started.doctree and b/docs/.doctrees/notebooks/getting_started.doctree differ diff --git a/docs/.doctrees/notebooks/user_guide/editing_audio_metadata.doctree b/docs/.doctrees/notebooks/user_guide/editing_audio_metadata.doctree index b76e27e..764f9ab 100644 Binary files a/docs/.doctrees/notebooks/user_guide/editing_audio_metadata.doctree and b/docs/.doctrees/notebooks/user_guide/editing_audio_metadata.doctree differ diff --git a/docs/.doctrees/notebooks/user_guide/getting_recommendations.doctree b/docs/.doctrees/notebooks/user_guide/getting_recommendations.doctree index cc8e7f1..637462f 100644 Binary files a/docs/.doctrees/notebooks/user_guide/getting_recommendations.doctree and b/docs/.doctrees/notebooks/user_guide/getting_recommendations.doctree differ diff --git a/docs/_modules/minim/discogs.html b/docs/_modules/minim/discogs.html index 1c53551..422732e 100644 --- a/docs/_modules/minim/discogs.html +++ b/docs/_modules/minim/discogs.html @@ -337,13 +337,11 @@
To view and make changes to account information and resources, users
must either provide a personal access token to this class's
- constructor as a keyword argument or store it as
- :code:`DISCOGS_PERSONAL_ACCESS_TOKEN` in the operating system's
- environment variables, or undergo the OAuth 1.0a flow, which require
- valid client credentials, using Minim. If an existing OAuth access
- token/secret pair is available, it can be provided to this class's
- constructor as keyword arguments to bypass the access token
- retrieval process.
+ constructor as a keyword argument or undergo the OAuth 1.0a flow,
+ which require valid client credentials, using Minim. If an existing
+ OAuth access token/secret pair is available, it can be provided to
+ this class's constructor as keyword arguments to bypass the access
+ token retrieval process.
.. tip::
@@ -597,7 +595,7 @@ Source code for minim.discogs
) -> None:
"""
- Set the Discogs API personal or OAuth access token.
+ Set the Discogs API personal or OAuth access token (and secret).
Parameters
----------
@@ -733,8 +731,6 @@ Source code for minim.discogs
}
elif self._flow == "discogs":
- access_token = \
- access_token or os.environ.get("DISCOGS_PERSONAL_ACCESS_TOKEN")
if access_token is None:
if self._consumer_key is None or self._consumer_secret is None:
emsg = "Discogs API client credentials not provided."
@@ -872,7 +868,7 @@ Source code for minim.discogs
.. code::
{
- "id": <int>,
+ "id": <int><int>,
"username": <str>,
"resource_url": <str>,
"consumer_name": <str>
@@ -907,7 +903,7 @@ Source code for minim.discogs
----------
username : `str`, optional
The username of whose profile you are requesting. If not
- specified, the profile of the authenticated user is used.
+ specified, the username of the authenticated user is used.
**Example**: :code:`"rodneyfool"`.
@@ -926,7 +922,7 @@ Source code for minim.discogs
"wantlist_url": <str>,
"rank": <int>,
"num_pending": <int>,
- "id": <int>,
+ "id": <int><int>,
"num_for_sale": <int>,
"home_page": <str>,
"location": <str>,
@@ -1024,7 +1020,7 @@ Source code for minim.discogs
.. code::
{
- "id": <int>,
+ "id": <int><int>,
"username": <str>,
"name": <str>,
"email": <str>,
@@ -1052,6 +1048,16 @@ Source code for minim.discogs
self._check_authentication("edit_profile")
+ if curr_abbr and curr_abbr not in (
+ CURRENCIES := {
+ "USD", "GBP", "EUR", "CAD", "AUD", "JPY",
+ "CHF", "MXN", "BRL", "NZD", "SEK", "ZAR"
+ }
+ ):
+ emsg = (f"Invalid currency abbreviation ({curr_abbr=}). "
+ f"Valid values: {', '.join(CURRENCIES)}.")
+ raise ValueError(emsg)
+
return self._request(
"post",
f"{self.API_URL}/users/{self._username}",
@@ -1068,27 +1074,364 @@ Source code for minim.discogs
[docs]
def get_user_submissions(
- self, username: str, *, page: int = None, per_page: int = None
- ) -> dict[str, Any]:
+ self, username: str = None, *, page: int = None,
+ per_page: int = None) -> dict[str, Any]:
"""
+ `User Identity > User Submissions <https://www.discogs.com
+ /developers/#page:user-identity,header
+ :user-identity-user-submissions-get>`_: Retrieve a user's
+ submissions (edits made to releases, labels, and artists) by
+ username.
+
+ Parameters
+ ----------
+ username : `str`, optional
+ The username of the submissions you are trying to fetch. If
+ not specified, the username of the authenticated user is
+ used.
+
+ **Example**: :code:`"shooezgirl"`.
+
+ page : `int`, keyword-only, optional
+ Page of results to fetch.
+
+ per_page : `int`, keyword-only, optional
+ Number of results per page.
+
+ Returns
+ -------
+ submissions : `dict`
+ Submissions made by the user.
+ .. admonition:: Sample
+ :class: dropdown
+
+ .. code::
+
+ {
+ "pagination": {
+ "items": <int>,
+ "page": <int>,
+ "pages": <int>,
+ "per_page": <int>,
+ "urls": {}
+ },
+ "submissions": {
+ "artists": [
+ {
+ "data_quality": <str>,
+ "id": <int>,
+ "name": <str>,
+ "namevariations": [<str>],
+ "releases_url": <str>,
+ "resource_url": <str>,
+ "uri": <str>
+ }
+ ],
+ "labels": [],
+ "releases": [
+ {
+ "artists": [
+ {
+ "anv": <str>,
+ "id": <int>,
+ "join": <str>,
+ "name": <str>,
+ "resource_url": <str>,
+ "role": <str>,
+ "tracks": <str>
+ }
+ ],
+ "community": {
+ "contributors": [
+ {
+ "resource_url": <str>,
+ "username": <str>
+ },
+ {
+ "resource_url": <str>,
+ "username": <str>
+ }
+ ],
+ "data_quality": <str>,
+ "have": <int>,
+ "rating": {
+ "average": <int>,
+ "count": <int>
+ },
+ "status": <str>,
+ "submitter": {
+ "resource_url": <str>,
+ "username": <str>
+ },
+ "want": <int>
+ },
+ "companies": [],
+ "country": <str>,
+ "data_quality": <str>,
+ "date_added": <str>,
+ "date_changed": <str>,
+ "estimated_weight": <int>,
+ "format_quantity": <int>,
+ "formats": [
+ {
+ "descriptions": [<str>],
+ "name": <str>,
+ "qty": <str>
+ }
+ ],
+ "genres": [<str>],
+ "id": <int>,
+ "images": [
+ {
+ "height": <int>,
+ "resource_url": <str>,
+ "type": <str>,
+ "uri": <str>,
+ "uri150": <str>,
+ "width": <int>
+ },
+ {
+ "height": <int>,
+ "resource_url": <str>,
+ "type": <str>,
+ "uri": <str>,
+ "uri150": <str>,
+ "width": <int>
+ }
+ ],
+ "labels": [
+ {
+ "catno": <str>,
+ "entity_type": <str>,
+ "id": <int>,
+ "name": <str>,
+ "resource_url": <str>
+ }
+ ],
+ "master_id": <int>,
+ "master_url": <str>,
+ "notes": <str>,
+ "released": <str>,
+ "released_formatted": <str>,
+ "resource_url": <str>,
+ "series": [],
+ "status": <str>,
+ "styles": [<str>],
+ "thumb": <str>,
+ "title": <str>,
+ "uri": <str>,
+ "videos": [
+ {
+ "description": <str>,
+ "duration": <int>,
+ "embed": <bool>,
+ "title": <str>,
+ "uri": <str>
+ },
+ {
+ "description": <str>,
+ "duration": <int>,
+ "embed": <bool>,
+ "title": <str>,
+ "uri": <str>
+ },
+ {
+ "description": <str>,
+ "duration": <int>,
+ "embed": <bool>,
+ "title": <str>,
+ "uri": <str>
+ }
+ ],
+ "year": <int>
+ }
+ ]
+ }
+ }
"""
- pass
+ if username is None:
+ if hasattr(self, "_username"):
+ username = self._username
+ else:
+ raise ValueError("No username provided.")
+
+ return self._get_json(
+ f"{self.API_URL}/users/{username}/submissions",
+ params={"page": page, "per_page": per_page}
+ )
[docs]
def get_user_contributions(
- self, username: str, *, page: int = None, per_page: int = None,
- sort: str = None, sort_order: str = None) -> dict[str, Any]:
+ self, username: str = None, *, page: int = None,
+ per_page: int = None, sort: str = None, sort_order: str = None
+ ) -> dict[str, Any]:
"""
+ `User Identity > User Contributions <https://www.discogs.com
+ /developers/#page:user-identity,header
+ :user-identity-user-contributions-get>`_: Retrieve a user's
+ contributions (releases, labels, artists) by username.
+ Parameters
+ ----------
+ username : `str`, optional
+ The username of the contributions you are trying to fetch.
+ If not specified, the username of the authenticated user is
+ used.
+
+ **Example**: :code:`"shooezgirl"`.
+
+ page : `int`, keyword-only, optional
+ Page of results to fetch.
+
+ per_page : `int`, keyword-only, optional
+ Number of results per page.
+
+ sort : `str`, keyword-only, optional
+ Sort items by this field.
+
+ **Valid values**: :code:`"label"`, :code:`"artist"`,
+ :code:`"title"`, :code:`"catno"`, :code:`"format"`,
+ :code:`"rating"`, :code:`"year"`, and :code:`"added"`.
+
+ sort_order : `str`, keyword-only, optional
+ Sort items in a particular order.
+
+ **Valid values**: :code:`"asc"` and :code:`"desc"`.
+
+ Returns
+ -------
+ contributions : `dict`
+ Contributions made by the user.
+
+ .. admonition:: Sample
+ :class: dropdown
+
+ .. code::
+
+ {
+ "pagination": {
+ "items": <int>,
+ "page": <int>,
+ "pages": <int>,
+ "per_page": <int>,
+ "urls": {}
+ },
+ "contributions": [
+ {
+ "artists": [
+ {
+ "anv": <str>,
+ "id": <int>,
+ "join": <str>,
+ "name": <str>,
+ "resource_url": <str>,
+ "role": <str>,
+ "tracks": <str>
+ }
+ ],
+ "community": {
+ "contributors": [
+ {
+ "resource_url": <str>,
+ "username": <str>
+ },
+ {
+ "resource_url": <str>,
+ "username": <str>
+ }
+ ],
+ "data_quality": <str>,
+ "have": <int>,
+ "rating": {
+ "average": <int>,
+ "count": <int>
+ },
+ "status": <str>,
+ "submitter": {
+ "resource_url": <str>,
+ "username": <str>
+ },
+ "want": <int>
+ },
+ "companies": [],
+ "country": <str>,
+ "data_quality": <str>,
+ "date_added": <str>,
+ "date_changed": <str>,
+ "estimated_weight": <int>,
+ "format_quantity": <int>,
+ "formats": [
+ {
+ "descriptions": [<str>],
+ "name": <str>,
+ "qty": <str>
+ }
+ ],
+ "genres": [<str>],
+ "id": <int>,
+ "images": [
+ {
+ "height": <int>,
+ "resource_url": <str>,
+ "type": <str>,
+ "uri": <str>,
+ "uri150": <str>,
+ "width": <int>
+ }
+ ],
+ "labels": [
+ {
+ "catno": <str>,
+ "entity_type": <str>,
+ "id": <int>,
+ "name": <str>,
+ "resource_url": <str>
+ }
+ ],
+ "master_id": <int>,
+ "master_url": <str>,
+ "notes": <str>,
+ "released": <str>,
+ "released_formatted": <str>,
+ "resource_url": <str>,
+ "series": [],
+ "status": <str>,
+ "styles": [<str>],
+ "thumb": <str>,
+ "title": <str>,
+ "uri": <str>,
+ "videos": [
+ {
+ "description": <str>,
+ "duration": <int>,
+ "embed": <bool>,
+ "title": <str>,
+ "uri": <str>
+ }
+ ],
+ "year": <int>
+ }
+ ]
+ }
"""
-
- pass
+
+ if username is None:
+ if hasattr(self, "_username"):
+ username = self._username
+ else:
+ raise ValueError("No username provided.")
+
+ return self._get_json(
+ f"{self.API_URL}/users/{username}/contributions",
+ params={"page": page, "per_page": per_page, "sort": sort,
+ "sort_order": sort_order}
+ )
diff --git a/docs/api/minim.discogs.API.html b/docs/api/minim.discogs.API.html
index 7cb4dd0..9a06022 100644
--- a/docs/api/minim.discogs.API.html
+++ b/docs/api/minim.discogs.API.html
@@ -279,13 +279,11 @@ API#
To view and make changes to account information and resources, users
must either provide a personal access token to this class’s
-constructor as a keyword argument or store it as
-DISCOGS_PERSONAL_ACCESS_TOKEN
in the operating system’s
-environment variables, or undergo the OAuth 1.0a flow, which require
-valid client credentials, using Minim. If an existing OAuth access
-token/secret pair is available, it can be provided to this class’s
-constructor as keyword arguments to bypass the access token
-retrieval process.
+constructor as a keyword argument or undergo the OAuth 1.0a flow,
+which require valid client credentials, using Minim. If an existing
+OAuth access token/secret pair is available, it can be provided to
+this class’s constructor as keyword arguments to bypass the access
+token retrieval process.
Tip
The authorization flow and access token can be changed or updated
@@ -395,13 +393,13 @@
API#
User Identity > Profile > Get Profile: Retrieve a user by username.
-
+User Identity > User Contributions: Retrieve a user's contributions (releases, labels, artists) by username.
-
+User Identity > User Submissions: Retrieve a user's submissions (edits made to releases, labels, and artists) by username.
-Set the Discogs API personal or OAuth access token.
+Set the Discogs API personal or OAuth access token (and secret).
Set the authorization flow.
@@ -412,7 +410,7 @@ API#
-
set_access_token(access_token: str = None, access_token_secret: str = None) None [source]#
-Set the Discogs API personal or OAuth access token.
+Set the Discogs API personal or OAuth access token (and secret).
- Parameters:
@@ -472,7 +470,7 @@ API#
Sample
{
- "id": <int>,
+ "id": <int><int>,
"username": <str>,
"resource_url": <str>,
"consumer_name": <str>
@@ -502,7 +500,7 @@ API#
- Parameters:
- usernamestr, optional
The username of whose profile you are requesting. If not
-specified, the profile of the authenticated user is used.
+specified, the username of the authenticated user is used.
Example: "rodneyfool"
.
@@ -517,7 +515,7 @@ API#
"wantlist_url": <str>,
"rank": <int>,
"num_pending": <int>,
- "id": <int>,
+ "id": <int><int>,
"num_for_sale": <int>,
"home_page": <str>,
"location": <str>,
@@ -593,7 +591,7 @@ API#
Sample
{
- "id": <int>,
+ "id": <int><int>,
"username": <str>,
"name": <str>,
"email": <str>,
@@ -628,13 +626,324 @@ API#
-
-get_user_submissions(username: str, *, page: int = None, per_page: int = None) dict[str, Any] [source]#
-
+get_user_submissions(username: str = None, *, page: int = None, per_page: int = None) dict[str, Any] [source]#
+User Identity > User Submissions: Retrieve a user’s
+submissions (edits made to releases, labels, and artists) by
+username.
+
+- Parameters:
+
+- usernamestr, optional
The username of the submissions you are trying to fetch. If
+not specified, the username of the authenticated user is
+used.
+Example: "shooezgirl"
.
+
+- pageint, keyword-only, optional
Page of results to fetch.
+
+- per_pageint, keyword-only, optional
Number of results per page.
+
+
+
+- Returns:
+
+- submissionsdict
Submissions made by the user.
+
+Sample
+{
+ "pagination": {
+ "items": <int>,
+ "page": <int>,
+ "pages": <int>,
+ "per_page": <int>,
+ "urls": {}
+ },
+ "submissions": {
+ "artists": [
+ {
+ "data_quality": <str>,
+ "id": <int>,
+ "name": <str>,
+ "namevariations": [<str>],
+ "releases_url": <str>,
+ "resource_url": <str>,
+ "uri": <str>
+ }
+ ],
+ "labels": [],
+ "releases": [
+ {
+ "artists": [
+ {
+ "anv": <str>,
+ "id": <int>,
+ "join": <str>,
+ "name": <str>,
+ "resource_url": <str>,
+ "role": <str>,
+ "tracks": <str>
+ }
+ ],
+ "community": {
+ "contributors": [
+ {
+ "resource_url": <str>,
+ "username": <str>
+ },
+ {
+ "resource_url": <str>,
+ "username": <str>
+ }
+ ],
+ "data_quality": <str>,
+ "have": <int>,
+ "rating": {
+ "average": <int>,
+ "count": <int>
+ },
+ "status": <str>,
+ "submitter": {
+ "resource_url": <str>,
+ "username": <str>
+ },
+ "want": <int>
+ },
+ "companies": [],
+ "country": <str>,
+ "data_quality": <str>,
+ "date_added": <str>,
+ "date_changed": <str>,
+ "estimated_weight": <int>,
+ "format_quantity": <int>,
+ "formats": [
+ {
+ "descriptions": [<str>],
+ "name": <str>,
+ "qty": <str>
+ }
+ ],
+ "genres": [<str>],
+ "id": <int>,
+ "images": [
+ {
+ "height": <int>,
+ "resource_url": <str>,
+ "type": <str>,
+ "uri": <str>,
+ "uri150": <str>,
+ "width": <int>
+ },
+ {
+ "height": <int>,
+ "resource_url": <str>,
+ "type": <str>,
+ "uri": <str>,
+ "uri150": <str>,
+ "width": <int>
+ }
+ ],
+ "labels": [
+ {
+ "catno": <str>,
+ "entity_type": <str>,
+ "id": <int>,
+ "name": <str>,
+ "resource_url": <str>
+ }
+ ],
+ "master_id": <int>,
+ "master_url": <str>,
+ "notes": <str>,
+ "released": <str>,
+ "released_formatted": <str>,
+ "resource_url": <str>,
+ "series": [],
+ "status": <str>,
+ "styles": [<str>],
+ "thumb": <str>,
+ "title": <str>,
+ "uri": <str>,
+ "videos": [
+ {
+ "description": <str>,
+ "duration": <int>,
+ "embed": <bool>,
+ "title": <str>,
+ "uri": <str>
+ },
+ {
+ "description": <str>,
+ "duration": <int>,
+ "embed": <bool>,
+ "title": <str>,
+ "uri": <str>
+ },
+ {
+ "description": <str>,
+ "duration": <int>,
+ "embed": <bool>,
+ "title": <str>,
+ "uri": <str>
+ }
+ ],
+ "year": <int>
+ }
+ ]
+ }
+}
+
+
+
+
+
+
+
+
-
-get_user_contributions(username: str, *, page: int = None, per_page: int = None, sort: str = None, sort_order: str = None) dict[str, Any] [source]#
-
+get_user_contributions(username: str = None, *, page: int = None, per_page: int = None, sort: str = None, sort_order: str = None) dict[str, Any] [source]#
+User Identity > User Contributions: Retrieve a user’s
+contributions (releases, labels, artists) by username.
+
+- Parameters:
+
+- usernamestr, optional
The username of the contributions you are trying to fetch.
+If not specified, the username of the authenticated user is
+used.
+Example: "shooezgirl"
.
+
+- pageint, keyword-only, optional
Page of results to fetch.
+
+- per_pageint, keyword-only, optional
Number of results per page.
+
+- sortstr, keyword-only, optional
Sort items by this field.
+Valid values: "label"
, "artist"
,
+"title"
, "catno"
, "format"
,
+"rating"
, "year"
, and "added"
.
+
+- sort_orderstr, keyword-only, optional
Sort items in a particular order.
+Valid values: "asc"
and "desc"
.
+
+
+
+- Returns:
+
+- contributionsdict
Contributions made by the user.
+
+Sample
+{
+ "pagination": {
+ "items": <int>,
+ "page": <int>,
+ "pages": <int>,
+ "per_page": <int>,
+ "urls": {}
+ },
+ "contributions": [
+ {
+ "artists": [
+ {
+ "anv": <str>,
+ "id": <int>,
+ "join": <str>,
+ "name": <str>,
+ "resource_url": <str>,
+ "role": <str>,
+ "tracks": <str>
+ }
+ ],
+ "community": {
+ "contributors": [
+ {
+ "resource_url": <str>,
+ "username": <str>
+ },
+ {
+ "resource_url": <str>,
+ "username": <str>
+ }
+ ],
+ "data_quality": <str>,
+ "have": <int>,
+ "rating": {
+ "average": <int>,
+ "count": <int>
+ },
+ "status": <str>,
+ "submitter": {
+ "resource_url": <str>,
+ "username": <str>
+ },
+ "want": <int>
+ },
+ "companies": [],
+ "country": <str>,
+ "data_quality": <str>,
+ "date_added": <str>,
+ "date_changed": <str>,
+ "estimated_weight": <int>,
+ "format_quantity": <int>,
+ "formats": [
+ {
+ "descriptions": [<str>],
+ "name": <str>,
+ "qty": <str>
+ }
+ ],
+ "genres": [<str>],
+ "id": <int>,
+ "images": [
+ {
+ "height": <int>,
+ "resource_url": <str>,
+ "type": <str>,
+ "uri": <str>,
+ "uri150": <str>,
+ "width": <int>
+ }
+ ],
+ "labels": [
+ {
+ "catno": <str>,
+ "entity_type": <str>,
+ "id": <int>,
+ "name": <str>,
+ "resource_url": <str>
+ }
+ ],
+ "master_id": <int>,
+ "master_url": <str>,
+ "notes": <str>,
+ "released": <str>,
+ "released_formatted": <str>,
+ "resource_url": <str>,
+ "series": [],
+ "status": <str>,
+ "styles": [<str>],
+ "thumb": <str>,
+ "title": <str>,
+ "uri": <str>,
+ "videos": [
+ {
+ "description": <str>,
+ "duration": <int>,
+ "embed": <bool>,
+ "title": <str>,
+ "uri": <str>
+ }
+ ],
+ "year": <int>
+ }
+ ]
+}
+
+
+
+
+
+
+
+
diff --git a/docs/notebooks/getting_started.html b/docs/notebooks/getting_started.html
index 0cbc371..1991065 100644
--- a/docs/notebooks/getting_started.html
+++ b/docs/notebooks/getting_started.html
@@ -568,7 +568,7 @@ Spotify Web API
{'external_urls': {'spotify': 'https://open.spotify.com/artist/4sTQVOfp9vEMCemLw50sbu'},
- 'followers': {'href': None, 'total': 3360776},
+ 'followers': {'href': None, 'total': 3360524},
'genres': ['dance pop', 'edm', 'pop', 'pop dance'],
'href': 'https://api.spotify.com/v1/artists/4sTQVOfp9vEMCemLw50sbu',
'id': '4sTQVOfp9vEMCemLw50sbu',
@@ -1368,19 +1368,19 @@ Private Qobuz API
{'collaborative': False,
- 'external_urls': {'spotify': 'https://open.spotify.com/playlist/1bS3bkYqI6G6qbvJ4SKPkC'},
+ 'external_urls': {'spotify': 'https://open.spotify.com/playlist/2nIJcg6e6zE8QV7AeckwNz'},
'followers': {'href': None, 'total': 0},
- 'href': 'https://api.spotify.com/v1/playlists/1bS3bkYqI6G6qbvJ4SKPkC',
- 'id': '1bS3bkYqI6G6qbvJ4SKPkC',
+ 'href': 'https://api.spotify.com/v1/playlists/2nIJcg6e6zE8QV7AeckwNz',
+ 'id': '2nIJcg6e6zE8QV7AeckwNz',
'images': [{'url': 'https://i.scdn.co/image/ab67616d00001e024a6c0376235e5aa44e59d2c2',
'height': None,
'width': None}],
'primary_color': None,
'name': 'Minim',
- 'description': '',
+ 'description': 'A playlist created using Minim.',
'type': 'playlist',
- 'uri': 'spotify:playlist:1bS3bkYqI6G6qbvJ4SKPkC',
+ 'uri': 'spotify:playlist:2nIJcg6e6zE8QV7AeckwNz',
'owner': None,
'public': True,
- 'snapshot_id': 'MSwxNmNmY2U5OGY4ODk4NmRiMzlhMDA0NzBjNzc4M2RhNjU2NmM3MGVm',
+ 'snapshot_id': 'Miw4OTE4M2FkYzNlZjlhMDJhYWViNWNkMzUxYzAwYmMwYjU2MGQ1Y2Zl',
'tracks': {'limit': 100,
'next': None,
'offset': 0,
'previous': None,
- 'href': 'https://api.spotify.com/v1/playlists/1bS3bkYqI6G6qbvJ4SKPkC/tracks?offset=0&limit=100',
+ 'href': 'https://api.spotify.com/v1/playlists/2nIJcg6e6zE8QV7AeckwNz/tracks?offset=0&limit=100',
'total': 1,
- 'items': [{'added_at': '2023-12-27T01:33:32Z',
+ 'items': [{'added_at': '2023-12-27T21:26:32Z',
'primary_color': None,
'video_thumbnail': {'url': None},
'is_local': False,
@@ -1969,7 +1969,7 @@ Private TIDAL APIHide code cell output
-{'playlist': {'uuid': 'e02223ff-d067-41b2-aa44-ea5bd0bb14d1',
+{'playlist': {'uuid': 'c133107f-bf42-4fa0-8f7f-48b2fee31ec2',
'type': 'USER',
'creator': None,
'contentBehavior': 'UNRESTRICTED',
@@ -1978,19 +1978,19 @@ Private TIDAL API
size= 0kB time=N/A bitrate=N/A speed=N/A
-size= 116kB time=00:00:00.92 bitrate=1023.4kbits/s speed=82.3x
+size= 116kB time=00:00:00.92 bitrate=1023.4kbits/s speed= 70x
diff --git a/docs/notebooks/user_guide/editing_audio_metadata.html b/docs/notebooks/user_guide/editing_audio_metadata.html
index faf5dea..a195e9a 100644
--- a/docs/notebooks/user_guide/editing_audio_metadata.html
+++ b/docs/notebooks/user_guide/editing_audio_metadata.html
@@ -316,7 +316,7 @@ Converting and tagging an audio file with no metadata
-('spektrem_shine.flac', <minim.audio.FLACAudio at 0x7f4b180a9cd0>)
+('spektrem_shine.flac', <minim.audio.FLACAudio at 0x7fa4c8389e50>)
@@ -375,10 +375,10 @@ Converting and tagging an audio file with no metadatasize= 0kB time=00:00:00.00 bitrate=1898.7kbits/s speed=0.566x
-size= 1032kB time=00:00:30.06 bitrate= 281.1kbits/s speed=59.9x
+size= 1032kB time=00:00:30.06 bitrate= 281.1kbits/s speed=62.1x
-<minim.audio.MP3Audio at 0x7f4b180a9cd0>
+<minim.audio.MP3Audio at 0x7fa4c8389e50>
@@ -627,7 +627,7 @@ Tagging an audio file with existing metadata
-('tobu_back_to_you.flac', <minim.audio.FLACAudio at 0x7f4ab6deacd0>)
+('tobu_back_to_you.flac', <minim.audio.FLACAudio at 0x7fa4c8433ed0>)
diff --git a/docs/notebooks/user_guide/getting_recommendations.html b/docs/notebooks/user_guide/getting_recommendations.html
index 67abbeb..266825f 100644
--- a/docs/notebooks/user_guide/getting_recommendations.html
+++ b/docs/notebooks/user_guide/getting_recommendations.html
@@ -333,7 +333,7 @@ Spotify#<
-
+
@@ -398,7 +398,7 @@ TIDAL#<
-
+
@@ -484,7 +484,7 @@ TIDAL#<
-
+