Commit Graph

57 Commits

Author SHA1 Message Date
oliveraw
1caf97296c
playlist_add_items() to accept only full URIs and URLs (#914)
* updated functionality of playlist_add_items() to accept only uris and urls (ids should not be allowed since 'track' or 'episode' cannot be inferred purely from the id)

* added a check to raise runtime error if any items in playlist_add_items() are not URIs or URLs

* modified change log

* CL format fix

---------

Co-authored-by: Stéphane Bruckert <stephane.bruckert@gmail.com>
2025-01-19 16:33:57 +00:00
Stéphane Bruckert
71fe07a5d1 Merge branch 'master' of github.com:spotipy-dev/spotipy into v3 2025-01-19 16:10:51 +00:00
Stéphane Bruckert
84f8b0a64b
Split test and lint workflows (#1183) 2025-01-18 15:21:51 +00:00
Stéphane Bruckert
935e3c16d7 Merge branch 'master' of github.com:spotipy-dev/spotipy into v3_rebase_rebase 2025-01-16 01:08:06 +00:00
Atharva Shah
5d0b8edff4
Use f-strings + code simplification (#961)
Resolves #960
2025-01-16 00:51:26 +00:00
Niko
2bc8d35fc6
Formatted strings (#1178)
* use newer string formatters (https://pyformat.info)

* fix typo

* went through the files again, additions from #1165 are also included

* replace .format() with f strings
2025-01-14 07:56:47 +01:00
Niko
3b1fd2a8f3 Merge branch 'master' into v3_rebase_rebase
# Conflicts:
#	setup.py
2025-01-05 13:12:49 +01:00
Niko
14ab13d292
add deprecation warnings and FAQ to respond to Spotify's API changes (#1177)
* add deprecation warnings and FAQ to respond to Spotify's API changes

* remove test cases associated with deprecated methods

* added missing commas
2025-01-03 13:26:08 +01:00
dieser-niko
a675e6a9bd fix test 2024-10-13 22:08:25 +02:00
Peter-Schorn
701dc383ea Fixed lint issues 2024-10-13 21:48:11 +02:00
Peter-Schorn
c8e045891b Renamed the auth parameter of Spotify.__init__ to access_token for better clarity.
Removed the `client_credentials_manager` and `oauth_manager` parameters because they are redundant.

Replaced the `set_auth` and `auth_manager` properties with standard attributes.

Removed the following deprecated methods from `Spotify`:
* `playlist_tracks`
* `user_playlist`
* `user_playlist_tracks`
* `user_playlist_change_details`
* `user_playlist_unfollow`
* `user_playlist_add_tracks`
* `user_playlist_replace_tracks`
* `user_playlist_reorder_tracks`
* `user_playlist_remove_all_occurrences_of_tracks`
* `user_playlist_remove_specific_occurrences_of_tracks`
* `user_playlist_follow_playlist`
* `user_playlist_is_following`

Removed the deprecated `as_dict` parameter from the `get_access_token` method of `SpotifyOAuth` and `SpotifyPKCE`.

Removed the deprecated `get_cached_token` and `_save_token_info` methods of `SpotifyOAuth` and `SpotifyPKCE`.

Removed `SpotifyImplicitGrant`.

Removed `prompt_for_user_token`.
2024-10-13 21:48:09 +02:00
badfarmerjohn
7bb3e7349f Fixed audio_features API wrapper function return structure (#653)
Co-authored-by: Stéphane Bruckert <stephane.bruckert@gmail.com>
2024-10-13 21:24:17 +02:00
Stéphane Bruckert
c90ce4a875
Fix audiobook integration tests (#1141) 2024-06-23 22:13:44 +01:00
Brennan Pate
d92951b356
Update Directions In TUTORIAL.md; Add Unit Tests To non_user_endpoints test.py (#1136)
* Update navigational directions in Step 1(A)

* Combine directions in Step 1(B) and Step 2(C) and remove Step 2(C)

* Update navigational directions and verbage in Step 1(C)

* Change reference from Step 1(C) to Step 1(B) in Step 2(D)

* Update capitalization in Prerequisites Step 3

* Add directions for installing Spotipy in Prerequisites Step 1(A)

* List updates to TUTORIAL.md file in CHANGELOG.md

* Update docstrings for funcs in lines 340-585

* Add unit tests for artist ID and URL

* Add test_artists_mixed_ids

* Updated CHANGELOG.md and TUTORIAL.md as requested

* Update client.py and test.py

* Fix linting issue

* Remove duplicate line; Change order of prerequisites

* Update local repo

* Add test_artists_mixed_ids

* Add Radiohead ID and URL; Add qotsa URL

* Add test_artist_url

* Comment out three failing tests

* Fix linting errors

* Uncommenting out failed tests

* Add test_artist_id

* List changes in CHANGELOG.md

* Add line breaks at the end of files.

* Remove multiple spaces

Also I've removed a sentence that just doesn't make sense in my eyes, but was added before this PR.

---------

Co-authored-by: Niko <github@dieserniko.link>
2024-06-22 17:35:53 +02:00
Stephane Bruckert
c5a0943016 Uncomment temporarily failing test 2024-06-01 19:34:44 +01:00
Brandon Parrott
f94a89a995
Add unit tests for queue functions (#1059)
* Update test.py

Add tests for queue manipulation/retrieval functions

* Update CHANGELOG.md

* flake8

---------

Co-authored-by: Stéphane Bruckert <stephane.bruckert@gmail.com>
2024-05-31 17:46:19 +01:00
Stephane Bruckert
cb36133ca9 Comment out test failing with payment_required 2024-05-31 17:42:28 +01:00
Shukie Li
df27fe93bf
Combined assertion tests, fixes #1051 (#1052)
* addressed issue 936

* publish branch

* 12/9/2023

* Update CHANGELOG.md

---------

Co-authored-by: Stéphane Bruckert <stephane.bruckert@gmail.com>
2024-05-30 19:29:32 +01:00
Hugo van Kemenade
85c9d74dc1
Drop support for EOL Python 3.7 (#1065)
* Add python_requires to help pip

* Update supported versions in tox.ini

* Upgrade Python syntax with pyupgrade --py37-plus

* Bump GitHub Actions

* Add Python 3.11 and 3.12 to CI

* Remove six dependency

* Remove redundant dependencies

* Remove redudant Python 3.5 code

* Drop support for EOL Python 3.7

* Upgrade Python syntax with pyupgrade --py38-plus

* Update CHANGELOG

* More f-strings

---------

Co-authored-by: Hugo van Kemenade <hugovk@users.noreply.github.com>
2024-05-21 18:32:01 +02:00
Dan Joseph
1416d47cba
Audiobook Support and CI Workflow Update (#1036)
* Implement audiobook endpoints

* Update GitHub CI Workflow: Removed Python v2.7

* Update GitHub CI Workflow: Removed Python v3.6

* Add integration tests for audiobook endpoints
2023-10-31 01:32:46 +00:00
Richard Ngo-Lam
fe438c0432
Update search_markets method to apply the total parameter to all types, add tests (#901)
* 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>
2023-03-15 23:46:08 +00:00
Kevin Sekuj
5201f58247
Add tests for global categories, releases, fix bugged tests (#893) 2022-11-26 09:29:53 +00:00
Sean Park
6f56504c2c
Update category tests to fix 1 failing and 1 error test results (#886)
* update category tests to fix 1 failing and 1 error test results

* update changelog
2022-11-13 10:42:25 +00:00
Stéphane Bruckert
1265d7b915
GHA integration tests (#876) 2022-11-01 21:57:40 +00:00
Bruno Alla
fa44fed76d
Fix a few typos in comments & strings (#866) 2022-10-29 14:23:43 +01:00
Stephane Bruckert
06765c4f5a Fix flake8 2022-10-26 22:56:38 +01:00
Stephane Bruckert
36ea3d9319 Fix lint 2022-06-18 23:29:12 +01:00
mattrost
1b0c426984
Addition of Test Cases (#818)
* Added test_categories_country to use optional country selection for categories method.

* Added test_categories_locale for testing locale method of categories.

* Added test_categories_limit_low and test_categories_limit_high to test the limit method of categories for edge cases.

* Rearranged for flow

* Added test_category_playlists_limit_low and test_category_playlists_limit_high for testing the limit method.
2022-06-18 23:28:08 +01:00
Stephane Bruckert
48d04f343b Bump to 2.19.0 2021-08-12 11:27:26 +01:00
Gustavo Krieger
e4c581bbb6
add tearDownClass to unfollow test playlist after tests (#680) 2021-04-23 18:41:50 +01:00
Gustavo Krieger
49f46264c7
change assertGreater to assertGreaterEqual in some tests (#679) 2021-04-23 18:41:11 +01:00
Peter Schorn
25f9df2dd5
Added new endpoints (#666)
* 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>
2021-04-10 14:53:03 +01:00
Stephane Bruckert
e35f6ec5ad Fix lint 2021-02-28 10:16:21 +01:00
Stephane Bruckert
ef2ed1a9c5 Bump to 2.17.0 2021-02-28 10:12:26 +01:00
Stephane Bruckert
27a7c2c880 Fix integration tests 2021-02-27 16:41:14 +01:00
Stéphane Bruckert
dd948c49d9
Retry for POST, PUT and DELETE, fixes #577 (#596)
* Retry for POST, PUT and DELETE, fixes #577

* Lint
2020-10-24 14:32:04 +01:00
Callum
4bb42598e1
Fixed UnboundLocalError / AttributeError #571, #581 (#583)
* Fix plamere/spotipy#571, plamere/spotipy#581

* Add integration test for reaching max retries

* Update tests/integration/test_non_user_endpoints.py

Co-authored-by: Stéphane Bruckert <contact@stephanebruckert.com>

* Update CHANGELOG.md, integration test mock data

Co-authored-by: Stéphane Bruckert <contact@stephanebruckert.com>
2020-10-07 09:00:45 +01:00
Bram Kragten
5e9f97df8e
Add category info (#561)
* Add category info

* Add slash

* Add test
2020-08-27 20:49:56 +01:00
Paul Lamere
651080e3da
Fix playlist add items (#559)
* 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>
2020-08-25 19:37:53 +01:00
IdmFoundInHim
3d48d77615
Add code parameter to get_access_token of SpotifyPKCE (#556)
* Add code parameter to oauth2.SpotifyPKCE.get_access_token

* Fix the PKCE integration test cache
2020-08-24 19:57:05 +01:00
DJSdev
c425102659
Adding Initial PKCE Auth Flow Support (#542)
* 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>
2020-07-21 17:08:09 +01:00
IdmFoundInHim
88cf75b778
Update Playlist Endpoints and Add Following Endpoints (#531)
* 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
2020-07-11 11:23:18 +01:00
Nathan LeRoy
f7fb8757e9
Fix return object formatting for multi-market searches (#527)
* 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>
2020-07-07 07:20:23 +01:00
Nathan LeRoy
2bfa7e0151
Add support to search multiple markets at once (#526)
* 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
2020-07-03 19:31:52 +01:00
IdmFoundInHim
38515689bc
Support Implicit Grant Authorization Flow (Fix #499) (#515)
* 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
2020-06-25 21:39:51 +01:00
Stephane Bruckert
c7f2edf343 Deprecate util.prompt_for_user_token() 2020-06-14 18:01:14 +01:00
Yasser Sinjab
7906417c1d Refactor two unittests that could fail for
some users and make them more generic.
2020-05-27 03:28:37 +03:00
Loisaida Sam
ccfda079c8
Propagate refresh token error, fixes #259 (#261)
* Propagate refresh token error #259

https://github.com/plamere/spotipy/issues/259

* Lint

* Format

Co-authored-by: Stephane Bruckert <contact@stephanebruckert.com>
2020-04-02 20:03:24 +01:00
Stephane Bruckert
73aac90bbe Auto-close auth browser window 2020-04-01 21:25:48 +01:00
Dj
024a6c96d4
Retries For All Endpoints, fixes #347 (#457)
* test_improvements - Add __init__.py files to tests dirs so you can run all tests

* test_improvements - added helpers file, restructured tests to work without previous data and to be grouped with api type

* http_retries - Implement Retry for all requests

* Readme - Update README with contributing info

* PR Feedback - Added CONTRIBUTING.md, fixed README, fixed test
2020-03-29 17:18:23 +01:00