Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

2470 spotify remove playlist items #2484

Merged
merged 2 commits into from
Jan 2, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
298 changes: 298 additions & 0 deletions Spotify/Spotify_Remove_Playlist_Items.ipynb
Original file line number Diff line number Diff line change
@@ -0,0 +1,298 @@
{
"cells": [
{
"cell_type": "markdown",
"id": "d71768d2-6642-4331-822a-27fd3ce970b3",
"metadata": {
"papermill": {},
"tags": []
},
"source": [
"<img width=\"8%\" alt=\"Naas.png\" src=\"https://raw.githubusercontent.com/jupyter-naas/awesome-notebooks/master/.github/assets/logos/Naas.png\" style=\"border-radius: 15%\">"
]
},
{
"cell_type": "markdown",
"id": "ed563673-363f-4478-99d4-d34fad2e73c7",
"metadata": {
"papermill": {},
"tags": []
},
"source": [
"# Spotify - Remove Playlist Items"
]
},
{
"cell_type": "markdown",
"id": "7aef91cb-5cea-4b0d-b7da-f7a79a4d6880",
"metadata": {
"papermill": {},
"tags": []
},
"source": [
"**Tags:** #spotify #playlist #remove #items #web-api #reference"
]
},
{
"cell_type": "markdown",
"id": "1989031a-38ca-4c11-bf91-5498251b8339",
"metadata": {
"papermill": {},
"tags": []
},
"source": [
"**Author:** [Alton Liew](https://www.linkedin.com/in/alton-liew/)"
]
},
{
"cell_type": "markdown",
"id": "b23001e1-962f-4f3d-95ec-0bca442b45e9",
"metadata": {
"papermill": {},
"tags": []
},
"source": [
"**Last update:** 2023-12-15 (Created: 2023-12-15)"
]
},
{
"cell_type": "markdown",
"id": "f9a980b8-e21d-4046-8d04-65b55b7daa9f",
"metadata": {
"papermill": {},
"tags": []
},
"source": [
"**Description:** This notebook removes one or more items from a user's playlist. It uses the Spotify Web API to access the user's playlist and remove the items."
]
},
{
"cell_type": "markdown",
"id": "aaa09de8-9929-4332-8ee7-261d511554f1",
"metadata": {
"papermill": {},
"tags": []
},
"source": [
"**References:**\n",
"- [Spotify Web API Reference - Remove Tracks from Playlist](https://developer.spotify.com/documentation/web-api/reference/remove-tracks-playlist)\n",
"- [Spotify Web API Reference - Get a Playlist](https://developer.spotify.com/documentation/web-api/reference/playlists/get-playlist/)"
]
},
{
"cell_type": "markdown",
"id": "9ef12259-c110-40e7-a680-b0561424f123",
"metadata": {
"papermill": {},
"tags": []
},
"source": [
"## Input"
]
},
{
"cell_type": "markdown",
"id": "143ebd85-6900-45c2-87ef-38125207bc33",
"metadata": {
"papermill": {},
"tags": []
},
"source": [
"### Import libraries"
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "a0a3a29e-5b27-472d-af28-5312e08e40c6",
"metadata": {
"execution": {
"iopub.execute_input": "2023-12-24T07:45:02.864194Z",
"iopub.status.busy": "2023-12-24T07:45:02.863670Z",
"iopub.status.idle": "2023-12-24T07:45:03.299917Z",
"shell.execute_reply": "2023-12-24T07:45:03.250140Z",
"shell.execute_reply.started": "2023-12-24T07:45:02.864111Z"
},
"papermill": {},
"tags": []
},
"outputs": [],
"source": [
"try:\n",
" import spotipy\n",
"except:\n",
" !pip install spotipy --user\n",
" import spotipy\n",
"from spotipy.oauth2 import SpotifyOAuth\n",
"from pprint import pprint"
]
},
{
"cell_type": "markdown",
"id": "9801f660-e0db-4d90-95ee-b0b0349b5277",
"metadata": {
"papermill": {},
"tags": []
},
"source": [
"### Setup variables\n",
"- **`client_id`**: Client ID of the Spotify app. [Get Client ID](https://developer.spotify.com/documentation/general/guides/authorization-guide/)\n",
"- **`client_secret`**: Client Secret of the Spotify app. [Get Client Secret](https://developer.spotify.com/documentation/general/guides/authorization-guide/)\n",
"- **`redirect_uri`**: This is where users are redirected to for authentication purposes. [Get Redirect URI](https://developer.spotify.com/documentation/general/guides/authorization-guide/)\n",
"- `playlist_id`: The Spotify ID of the playlist to remove items from.\n",
"- `track_ids`: A list of Spotify IDs of the tracks to remove from the playlist."
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "51276aaa-3612-4387-9b73-62437828f305",
"metadata": {
"execution": {
"iopub.execute_input": "2023-12-24T07:45:03.306172Z",
"iopub.status.busy": "2023-12-24T07:45:03.304383Z",
"iopub.status.idle": "2023-12-24T07:45:03.311512Z",
"shell.execute_reply": "2023-12-24T07:45:03.310896Z",
"shell.execute_reply.started": "2023-12-24T07:45:03.306132Z"
}
},
"outputs": [],
"source": [
"client_id = \"YOUR_SPOTIFY_CLIENT_ID\"\n",
"client_secret = \"YOUR_SPOTIFY_CLIENT_SECRET\"\n",
"redirect_uri = \"YOUR_REDIRECT_URI\"\n",
"playlist_id = 'YOUR_PLAYLIST_ID'\n",
"track_ids = ['TRACK_ID_1', 'TRACK_ID_2', 'TRACK3_ID_3']"
]
},
{
"cell_type": "markdown",
"id": "047fcde4-542e-454d-afc2-78a4a133c6d7",
"metadata": {},
"source": [
"## Model"
]
},
{
"cell_type": "markdown",
"id": "f8fbcec8-fa22-4bd9-b9e1-794c967d5c56",
"metadata": {},
"source": [
"### Remove playlist item"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "c27994ec-91cf-4584-bb93-bc27b2097678",
"metadata": {
"execution": {
"iopub.execute_input": "2023-12-24T07:45:03.316004Z",
"iopub.status.busy": "2023-12-24T07:45:03.315538Z",
"iopub.status.idle": "2023-12-24T07:45:03.410050Z",
"shell.execute_reply": "2023-12-24T07:45:03.409395Z",
"shell.execute_reply.started": "2023-12-24T07:45:03.315974Z"
}
},
"outputs": [],
"source": [
"def authenticate_spotify(client_id, client_secret, redirect_uri):\n",
" sp = spotipy.Spotify(auth_manager=SpotifyOAuth(client_id=client_id, client_secret=client_secret, redirect_uri=redirect_uri, scope=\"playlist-modify-public playlist-modify-private\"))\n",
" \n",
" if sp.auth_manager.get_cached_token() is not None:\n",
" print(\"Successfully authenticated\")\n",
" return sp\n",
" else:\n",
" print(\"Authentication failed\")\n",
" auth_url = sp.auth_manager.get_authorize_url()\n",
" print(f\"Please visit this URL to authorize the application: {auth_url}\")\n",
" authorization_code = input(\"Enter the authorization code from the URL: \")\n",
" token_info = sp.auth_manager.get_access_token(authorization_code)\n",
" return sp\n",
" \n",
"def remove_playlist_item(sp, playlist_id, track_ids):\n",
" track_uris_to_remove = [f'spotify:track:{track_id}' for track_id in track_ids]\n",
" sp.playlist_remove_all_occurrences_of_items(playlist_id, track_uris_to_remove)\n",
" print(\"done\")"
]
},
{
"cell_type": "markdown",
"id": "8525faf2-aa7c-4365-8160-15cb65b162fd",
"metadata": {
"papermill": {},
"tags": []
},
"source": [
"## Output"
]
},
{
"cell_type": "markdown",
"id": "fe32a890-2584-44aa-8183-b576551f64b0",
"metadata": {},
"source": [
"### Display result"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "2aadfbb4-527f-4c27-813d-8340cd33cfdd",
"metadata": {
"execution": {
"iopub.execute_input": "2023-12-24T07:45:03.411767Z",
"iopub.status.busy": "2023-12-24T07:45:03.411359Z",
"iopub.status.idle": "2023-12-24T07:45:03.778257Z",
"shell.execute_reply": "2023-12-24T07:45:03.777587Z",
"shell.execute_reply.started": "2023-12-24T07:45:03.411735Z"
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Successfully authenticated\n",
"done\n"
]
}
],
"source": [
"spotify_client = authenticate_spotify(client_id, client_secret, redirect_uri)\n",
"\n",
"if spotify_client:\n",
" remove_playlist_item(spotify_client, playlist_id, track_ids)"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.9.6"
},
"widgets": {
"application/vnd.jupyter.widget-state+json": {
"state": {},
"version_major": 2,
"version_minor": 0
}
}
},
"nbformat": 4,
"nbformat_minor": 5
}
Loading