* Updates the video link to a high definition video for setting the SPOTIPY_CLIENT_ID and SPOTIPY_CLIENT_SECRET values and authenticating. The old video was getting some complaints about people not being able to read the text (since it was low quality), so I've re-recorded it and replaced it with this new version.
* Adds changes to Chanelog
---------
Co-authored-by: Stéphane Bruckert <stephane.bruckert@gmail.com>
* Update search_markets method to apply the total parameter to all types, fixes#534
* Add integration tests for searching multiple types in multiple markets
* Update search_markets method to apply the total parameter to all types, add tests
---------
Co-authored-by: Stéphane Bruckert <stephane.bruckert@gmail.com>
* Improve URL and URI handling
* Back to SpotifyException for backward-compatibility
* fix copy paste typo
* TODO v3 comments
Co-authored-by: Stephane Bruckert <stephane.bruckert@gmail.com>
* Updated references to ISO 639 standard to clarify that the ISO 639-1 alpha-2 standard is used.
* Added `market` parameter to `album` and `albums`
* fix formatting change
* Fixed a bug in the initializers for the auth managers that produced a spurious warning message if you provide a cache handler and you set a value for the "SPOTIPY_CLIENT_USERNAME" environment variable.
* fixed a bug in _get_auth_response_local_server which occurs if you provide a state parameter and click cancel in the authorization dialog
* Fallback on decoding the error response body into text if decoding into JSON fails.
* Fall back on decoding oauth errors into text if decoding into JSON fails.
* Fixed unused `http_error` name in exeception clause.
* Updated CHANGELOG
Co-authored-by: Stéphane Bruckert <stephane.bruckert@gmail.com>
* Added DjangoSessionCacheHandler
Added `DjangoSessionCacheHandler`, a cache handler that stores the token in the session framework provided by Django. Web apps using spotipy with Django can directly use this for cache handling.
* removed whitespaces
* Added `MemoryCacheHandler`, a cache handler that simply stores the token info in memory as an instance attribute of this class.
* Fixed a bug in `CacheFileHandler.__init__`: The documentation says that the username will be retrieved from the environment, but it wasn't.
* Added an exception clause that catches `FileNotFoundError` and logs a debug message in `SpotifyOAuth.get_cached_token`, `SpotifyPKCE.get_cached_token` and `SpotifyImplicitGrant.get_cached_token`.
* Changed docs for `auth` parameter of `Spotify.init` to `access token` instead of `authorization token`. In issue #599, a user confused the access token with the authorization code.
* Updated CHANGELOG.md
* Removed `FileNotFoundError` because it does not exist in python 2.7 (*sigh*) and replaced it with a call to `os.path.exists`.
* Replaced ` os.path.exists` with `error.errno == errno.ENOENT` to supress errors when the cache file does not exist.
* Changed docs for `search` to mention that you can provide multiple multiple types to search for. The query parameters of requests are now logged. Added log messages for when the access token and refresh tokens are retrieved and when they are refreshed. Other small grammar fixes.
* Removed duplicate word "multiple" from CHANGELOG
* * Fixed the bugs in `SpotifyOAuth.refresh_access_token` and `SpotifyPKCE.refresh_access_token` which raised the incorrect exception upon receiving an error response from the server. This addresses #645.
* Fixed a bug in `RequestHandler.do_GET` in which the non-existent `state` attribute of `SpotifyOauthError` is accessed. This bug occurs when the user clicks "cancel" in the permissions dialog that opens in the browser.
* Cleaned up the documentation for `SpotifyClientCredentials.__init__`, `SpotifyOAuth.__init__`, and `SpotifyPKCE.__init__`.
* Removed unneeded import
* Added the following endpoints:
`Spotify.current_user_saved_episodes` `Spotify.current_user_saved_episodes_add` `Spotify.current_user_saved_episodes_delete` `Spotify.current_user_saved_episodes_contains` `Spotify.available_markets`
Added tests for the above endpoints.
* updated CHANGELOG
* Fixed flake8 issue
Co-authored-by: Stéphane Bruckert <stephane.bruckert@gmail.com>
* Added an exception clause that catches `FileNotFoundError` and logs a debug message in `SpotifyOAuth.get_cached_token`, `SpotifyPKCE.get_cached_token` and `SpotifyImplicitGrant.get_cached_token`.
* Changed docs for `auth` parameter of `Spotify.init` to `access token` instead of `authorization token`. In issue #599, a user confused the access token with the authorization code.
* Updated CHANGELOG.md
* Removed `FileNotFoundError` because it does not exist in python 2.7 (*sigh*) and replaced it with a call to `os.path.exists`.
* Replaced ` os.path.exists` with `error.errno == errno.ENOENT` to supress errors when the cache file does not exist.
* Changed docs for `search` to mention that you can provide multiple multiple types to search for. The query parameters of requests are now logged. Added log messages for when the access token and refresh tokens are retrieved and when they are refreshed. Other small grammar fixes.
* Removed duplicate word "multiple" from CHANGELOG
* * Fixed the bugs in `SpotifyOAuth.refresh_access_token` and `SpotifyPKCE.refresh_access_token` which raised the incorrect exception upon receiving an error response from the server. This addresses #645.
* Fixed a bug in `RequestHandler.do_GET` in which the non-existent `state` attribute of `SpotifyOauthError` is accessed. This bug occurs when the user clicks "cancel" in the permissions dialog that opens in the browser.
* Cleaned up the documentation for `SpotifyClientCredentials.__init__`, `SpotifyOAuth.__init__`, and `SpotifyPKCE.__init__`.
* Removed unneeded import
Co-authored-by: Stéphane Bruckert <stephane.bruckert@gmail.com>
* Allow the scope to be either a list or comma separated string
* Move normalize scope to util file and make it a base method
Also adjust documentation to reflect the new scope parameter supporting a list
* Add change to CHANGELOG.md