* Fixplamere/spotipy#560
* Adhere to code style
* Update CHANGELOG.md for changes in 939f869bbc
* open_browser passed to get_auth_response should take precedence over the same argument in the constructor
* Update FAQ
* Add information about headless auth
* Add headless auth example
* Clean up namespace in SpotifyPKCE._get_auth_response_interactive
* Add Warning to SpotifyImplicitGrant.__init__
* Update changelog with addition of warning
* Improve SpotifyPKCE.get_authorization_url
Ensure that a code challenge has been generated for the auth url
* Clean up namespace in SpotifyPKCE._get_auth_response_interactive
* Duplicate parse_auth_response_url into SpotifyPKCE
* Update SpotifyPKCE security advisory
* Update changelog for PKCE refinements
* fixed uri issue in playlist_add_items
All uris were being converted to track uris
making it impossible to add episodes to playlists.
* Added tests for episode adds
also fixed creep uri so those tests no longer fail
* Fixed creep_url to match creep_uri
* revert pip version, added FIX to changelog
Co-authored-by: Paul Lamere <paull@spotify.com>
* No username needed + can be used by multiple users
* cleanup
* Remove caches when signing out
* Persist token only once
* Always show auth page
* Add one scope..
* Add a second scope and also a view which utilizes a scope.
* Add a __main__ clause example.
* Include further documentation.
* Move utility function higher in document.
* Add threading to application run call in __main__.
* Add (or reinstate–I thought it had been there) the "me" view.
* Add notes about SPOTIPY_REDIRECT_URI and using alternate port.
And specify that it should be the address that the App runs over.
* Whitespace only.
* Here is an example of importing credentials.
* Delete session_cache file on logout so new user can Authorize.
* Not going to use at this point.
* Update the "me" route method to use new approach to auth.
* Update app.py
Co-authored-by: Stephane Bruckert <contact@stephanebruckert.com>
Co-authored-by: Stephane Bruckert <stephane.bruckert@gmail.com>
Some artist or track provide different translation for different language
usage. This requires send http request with Accept-Language in header.
Create this option for people who wants to see proper translation.
* Added base funtionality for PKCE Authorization - i538
* fixed a mistake with the auth code
* fixed more misunderstandings. fixed grant_access_token to now call authorization if needed
* added comments and references to code verifier and code challenge
* removed debug print statement
* updated unit tests for new PKCE flow
* cleaned up username issues - added doc strings to class
* fixed import issue, added user endpoint tests
* forgot to commit this file
* linted
* clarified comment
* no longer generates code verifier or challenge in constructor, only when needed
* fixed flake8 complaints, added forgotten unit tests
* fixed linting with unit tests
* anotha one
* added python3.5 support
* linting
* added to CHANGELOG
* removed as_dict option from get_access_token()
Co-authored-by: tomCLANCC <26153156+tomCLANCC@users.noreply.github.com>
* Update playlist endpoints to modern format
Deprecate user_playlist_* in favor of the following replacements:
* user_playlist_change_details -> playlist_change_details
* user_playlist_unfollow -> current_user_unfollow_playlist
* user_playlist_add_tracks -> playlist_add_tracks
* user_playlist_replace_tracks -> playlist_replace_tracks
* user_playlist_reorder_tracks -> playlist_reorder_tracks
* user_playlist_remove_all_occurrences_of_tracks -> playlist_remove_all_occurrences_of_tracks
* user_playlist_remove_specific_occurrences_of_tracks -> playlist_remove_specific_occurrences_of_tracks
* user_playlist_follow_playlist -> current_user_follow_playlist
* user_playlist_is_following -> playlist_is_following
* Add current_user_following_artists and current_user_following_users
* Update tests and examples
Resolve TODO in test_user_endpoints.py > SpotifyFollowApiTests.test_user_follows_and_unfollows_user
Use modern playlist endpoints (no username required) in tests and examples.
* Update changelog
* Deprecate playlist_tracks in favor of playlist_items
* Link deprecated functions to new functions and change tracks to items
* Fix references to playlist_tracks
* Change test_playlist_add_items as requested
* Allow for total headless mode by instructing the user to open the URL in a browser.
* Fix line too long
* Update changelog
* Clarify changelog entry
* Remove reduntant log about pasting the URL.
* resolve return object formatting issues referened in #526
* resolve comments from @ritiek
* create separate method to search multiple markets
* Use old description again
* market -> markets + fix test
* pep8
* Use break
Co-authored-by: Stephane Bruckert <contact@stephanebruckert.com>
* Add support to search multiple markets. Pass in a list or ALL to search all markets.
* pep8 formatting and verification with flake8
* work on comments from stephanebruckert
* pep8 formatting
* run autopep8 formatting
* fix typo
* allow tuple of markets to be passed. Add unit tests for this case
* Create playlist_all_tracks.py
* Update playlist_all_tracks.py
forgot first items from playlist
* print result instead of returning it
* rename to playlist_all_non_local_tracks
* Update playlist_all_non_local_tracks.py
removed "== True" as it's implied
give an example playlist (global top 50)
more comments
corrected typo
* print only length and excluding instead of entire result
* Add SpotifyImplicitGrant with get_access_token and get_cached_token (and minimum related functions)
* Add some overlooked necessary methods/values in SpotifyImplicitGrant
* Remove unsuppported functionality and make SpotifyImplicitGrant public
* Allow/Expose integration of SpotifyImplicitGrant in client
* Add Implicit Grant tests and decrease abilities of prompt_for_user_token
Remove Implicit Grant and state support from prompt_for_user_token
* Add documentation and changelog entry
* Touch up PEP8 compliance
* Ignore long line with link for flake8
* Correct changelog
* Restore compatibility with Python 2.7
* Correct help(SpotifyImplicitGrant.get_access_token)
* Remove as_dict from SpotifyImplicitGrant.get_access_token
* Combine status check functionality with implicit grant support
In oauth2.py:
* Add state checking to SpotifyImplicitGrant
* Add dedicated SpotifyStateError as subclass of SpotifyOauthError
* Moved `_get_user_input` from SpotifyOAuth to superclass SpotifyAuthBase
* Renamed `parse_oauth_response_url` to `parse_auth_response_url`
* Moved error handling into `parse_auth_response_url`
Made minor changes in tests and client.py accordingly
* Update changelog
* Trim down tests for SpotifyImplicitGrant
* Fix trailing whitespace
* - Verify that the state received alongside the authorization code is consistent with the one sent
- Refactor URL parsing for the local server way and the interactive way
- Add tests for interactive way
* Resurrect public methods parse_response_code and get_authorization_code
* Use new method parse_oatuh_response_url for parse_response_code implementation.
- add error and error description to SpotifyOauthError to reflect the data returned by web api when error happens
- unit test to SpotifyClientCredentials.get_access_token is added for invalid client
Currently it is not possible to extend SpotifyClientCredentials and SpotifyOAuth
This is because in the class __init__ they refer to 'self.__class__', this leads
to an infinite recursion if the parent class doesn't override completely the __init__
method.