<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic 500 Response error when creating playlist in Spotify for Developers</title>
    <link>https://community.spotify.com/t5/Spotify-for-Developers/500-Response-error-when-creating-playlist/m-p/5629851#M10530</link>
    <description>&lt;P&gt;My task is to build a program that first scraps songs from billboard.com, and then uses the Spotify API to search for these songs and create a playlist.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The scrapping part and seach parts are working. The problem arises when I try to create a playlist.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Every time the code for create_playlist runs I get a 500 error. I am not sure if the error comes from calling (in spotify.py):&lt;/P&gt;&lt;PRE&gt;requests.get(&lt;SPAN class=""&gt;'http://localhost:5000/createplaylist'&lt;/SPAN&gt;, params=params)&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;or (in spotify_service.py)&lt;/P&gt;&lt;PRE&gt;requests.post(url, headers=headers, params=params)&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I don't know if the error it's from my flask server or from Spotify or if there is a mistake in the code.&lt;/P&gt;&lt;P&gt;I was hoping someone could spot the problem.&lt;/P&gt;&lt;P&gt;Here are the files (I've also attached them just in case)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;main.py&lt;/P&gt;&lt;PRE&gt;&lt;SPAN class=""&gt;from&lt;/SPAN&gt; data_scrapper &lt;SPAN class=""&gt;import&lt;/SPAN&gt; DataScrapper
&lt;SPAN class=""&gt;from&lt;/SPAN&gt; spotify &lt;SPAN class=""&gt;import&lt;/SPAN&gt; Spotify

BILLBOARD_URL = &lt;SPAN class=""&gt;'https://www.billboard.com/charts/hot-100/'&lt;/SPAN&gt;


&lt;SPAN class=""&gt;class&lt;/SPAN&gt; &lt;SPAN class=""&gt;Application&lt;/SPAN&gt;:
    &lt;SPAN class=""&gt;def&lt;/SPAN&gt; &lt;SPAN class=""&gt;__init__&lt;/SPAN&gt;(&lt;SPAN class=""&gt;self&lt;/SPAN&gt;):
        &lt;SPAN class=""&gt;# self.data_scrapper = DataScrapper(BILLBOARD_URL)&lt;/SPAN&gt;
        &lt;SPAN class=""&gt;# self.user_input = input("Enter a date for the top 100 (YYYY-MM-DD)")&lt;/SPAN&gt;
        &lt;SPAN class=""&gt;# self.song_list = self.data_scrapper.scrap_songs('1992-08-12')&lt;/SPAN&gt;
        self.spotify = Spotify()
        self.spotify.create_playlist(&lt;SPAN class=""&gt;'1992'&lt;/SPAN&gt;, &lt;SPAN class=""&gt;'Collection of the Greatest hits of 1992'&lt;/SPAN&gt;, &lt;SPAN class=""&gt;False&lt;/SPAN&gt;)
        &lt;SPAN class=""&gt;# self.spotify.get_playlist('2QUpzT3uDaRXnhzcPqLF7F')&lt;/SPAN&gt;
        &lt;SPAN class=""&gt;# self.spotify.search_song()&lt;/SPAN&gt;


app = Application()&lt;/PRE&gt;&lt;P&gt;spotify.py&lt;/P&gt;&lt;PRE&gt;&lt;SPAN class=""&gt;import&lt;/SPAN&gt; base64

&lt;SPAN class=""&gt;import&lt;/SPAN&gt; requests
&lt;SPAN class=""&gt;import&lt;/SPAN&gt; json


&lt;SPAN class=""&gt;class&lt;/SPAN&gt; &lt;SPAN class=""&gt;Spotify&lt;/SPAN&gt;:
    &lt;SPAN class=""&gt;def&lt;/SPAN&gt; &lt;SPAN class=""&gt;__init__&lt;/SPAN&gt;(&lt;SPAN class=""&gt;self&lt;/SPAN&gt;):
        &lt;SPAN class=""&gt;pass&lt;/SPAN&gt;

    &lt;SPAN class=""&gt;def&lt;/SPAN&gt; &lt;SPAN class=""&gt;create_playlist&lt;/SPAN&gt;(&lt;SPAN class=""&gt;self, year, description, public&lt;/SPAN&gt;):
        name = &lt;SPAN class=""&gt;f'Greatest hits of &lt;SPAN class=""&gt;{year}&lt;/SPAN&gt;'&lt;/SPAN&gt;
        params = {
            &lt;SPAN class=""&gt;'name'&lt;/SPAN&gt;: name,
            &lt;SPAN class=""&gt;'public'&lt;/SPAN&gt;: public,
            &lt;SPAN class=""&gt;'description'&lt;/SPAN&gt;: description
        }

        response = requests.get(&lt;SPAN class=""&gt;'http://localhost:5000/createplaylist'&lt;/SPAN&gt;, params=params)
        response.raise_for_status()
        &lt;SPAN class=""&gt;print&lt;/SPAN&gt;(response.json())

    &lt;SPAN class=""&gt;def&lt;/SPAN&gt; &lt;SPAN class=""&gt;get_playlist&lt;/SPAN&gt;(&lt;SPAN class=""&gt;self, playlist_id&lt;/SPAN&gt;):
        params = {
            &lt;SPAN class=""&gt;'playlist_id'&lt;/SPAN&gt;: playlist_id
        }
        response = requests.get(&lt;SPAN class=""&gt;'http://localhost:5000/getplaylist'&lt;/SPAN&gt;, params=params)
        &lt;SPAN class=""&gt;print&lt;/SPAN&gt;(response.json())
        &lt;SPAN class=""&gt;return&lt;/SPAN&gt; response.json()

    &lt;SPAN class=""&gt;def&lt;/SPAN&gt; &lt;SPAN class=""&gt;search_song&lt;/SPAN&gt;(&lt;SPAN class=""&gt;self&lt;/SPAN&gt;):
        params = {
            &lt;SPAN class=""&gt;'song'&lt;/SPAN&gt;: &lt;SPAN class=""&gt;'Set fire to the rain'&lt;/SPAN&gt;
        }
        response = requests.get(&lt;SPAN class=""&gt;'http://localhost:5000/searchsong'&lt;/SPAN&gt;, params=params)
        &lt;SPAN class=""&gt;print&lt;/SPAN&gt;(json.loads(response.text)[&lt;SPAN class=""&gt;'tracks'&lt;/SPAN&gt;][&lt;SPAN class=""&gt;'items'&lt;/SPAN&gt;][&lt;SPAN class=""&gt;0&lt;/SPAN&gt;][&lt;SPAN class=""&gt;'uri'&lt;/SPAN&gt;])
        &lt;SPAN class=""&gt;return&lt;/SPAN&gt; json.loads(response.text)[&lt;SPAN class=""&gt;'tracks'&lt;/SPAN&gt;][&lt;SPAN class=""&gt;'items'&lt;/SPAN&gt;][&lt;SPAN class=""&gt;0&lt;/SPAN&gt;][&lt;SPAN class=""&gt;'uri'&lt;/SPAN&gt;]&lt;/PRE&gt;&lt;P&gt;spotify_service.py&lt;/P&gt;&lt;PRE&gt;&lt;SPAN class=""&gt;from&lt;/SPAN&gt; flask &lt;SPAN class=""&gt;import&lt;/SPAN&gt; Flask, request, redirect
&lt;SPAN class=""&gt;from&lt;/SPAN&gt; requests_oauthlib &lt;SPAN class=""&gt;import&lt;/SPAN&gt; OAuth2Session
&lt;SPAN class=""&gt;from&lt;/SPAN&gt; requests.auth &lt;SPAN class=""&gt;import&lt;/SPAN&gt; HTTPBasicAuth
&lt;SPAN class=""&gt;import&lt;/SPAN&gt; os
&lt;SPAN class=""&gt;import&lt;/SPAN&gt; requests
&lt;SPAN class=""&gt;import&lt;/SPAN&gt; json

app = Flask(__name__)

AUTH_URL = &lt;SPAN class=""&gt;'https://accounts.spotify.com/authorize'&lt;/SPAN&gt;
TOKEN_URL = &lt;SPAN class=""&gt;'https://accounts.spotify.com/api/token'&lt;/SPAN&gt;
SEARCH_URL = &lt;SPAN class=""&gt;'https://api.spotify.com/v1/search'&lt;/SPAN&gt;
REDIRECT_URI = &lt;SPAN class=""&gt;'http://localhost:5000/callback'&lt;/SPAN&gt;
CLIENT_ID = xxx
CLIENT_SECRET = xxx
USER_ID = xxx

SCOPE = [
    &lt;SPAN class=""&gt;'user-read-currently-playing'&lt;/SPAN&gt;,
    &lt;SPAN class=""&gt;'playlist-modify-private'&lt;/SPAN&gt;
]


&lt;SPAN class=""&gt;@app.route(&lt;SPAN class=""&gt;&lt;SPAN class=""&gt;"/login"&lt;/SPAN&gt;&lt;/SPAN&gt;)&lt;/SPAN&gt;
&lt;SPAN class=""&gt;def&lt;/SPAN&gt; &lt;SPAN class=""&gt;login&lt;/SPAN&gt;():
    spotify = OAuth2Session(client_id=CLIENT_ID, scope=SCOPE[&lt;SPAN class=""&gt;1&lt;/SPAN&gt;], redirect_uri=REDIRECT_URI)
    authorization_url, state = spotify.authorization_url(AUTH_URL)
    &lt;SPAN class=""&gt;return&lt;/SPAN&gt; redirect(authorization_url)


&lt;SPAN class=""&gt;@app.route(&lt;SPAN class=""&gt;&lt;SPAN class=""&gt;"/callback"&lt;/SPAN&gt;, methods=[&lt;SPAN class=""&gt;'GET'&lt;/SPAN&gt;]&lt;/SPAN&gt;)&lt;/SPAN&gt;
&lt;SPAN class=""&gt;def&lt;/SPAN&gt; &lt;SPAN class=""&gt;callback&lt;/SPAN&gt;():
    code = request.args.get(&lt;SPAN class=""&gt;'code'&lt;/SPAN&gt;)
    response = requests.post(TOKEN_URL,
                             auth=HTTPBasicAuth(CLIENT_ID, CLIENT_SECRET),
                             data={
                                 &lt;SPAN class=""&gt;'grant_type'&lt;/SPAN&gt;: &lt;SPAN class=""&gt;'authorization_code'&lt;/SPAN&gt;,
                                 &lt;SPAN class=""&gt;'code'&lt;/SPAN&gt;: code,
                                 &lt;SPAN class=""&gt;'redirect_uri'&lt;/SPAN&gt;: REDIRECT_URI
                             })

    os.environ[&lt;SPAN class=""&gt;'ACCESS_TOKEN'&lt;/SPAN&gt;] = response.json()[&lt;SPAN class=""&gt;'access_token'&lt;/SPAN&gt;]

    &lt;SPAN class=""&gt;return&lt;/SPAN&gt; &lt;SPAN class=""&gt;"Logged in"&lt;/SPAN&gt;


&lt;SPAN class=""&gt;@app.route(&lt;SPAN class=""&gt;&lt;SPAN class=""&gt;'/getplaylist'&lt;/SPAN&gt;, methods=[&lt;SPAN class=""&gt;'GET'&lt;/SPAN&gt;]&lt;/SPAN&gt;)&lt;/SPAN&gt;
&lt;SPAN class=""&gt;def&lt;/SPAN&gt; &lt;SPAN class=""&gt;getplaylist&lt;/SPAN&gt;():
    playlist_id = request.args.get(&lt;SPAN class=""&gt;'playlist_id'&lt;/SPAN&gt;)

    headers = {
        &lt;SPAN class=""&gt;'Authorization'&lt;/SPAN&gt;: &lt;SPAN class=""&gt;"Bearer {}"&lt;/SPAN&gt;.&lt;SPAN class=""&gt;format&lt;/SPAN&gt;(os.environ[&lt;SPAN class=""&gt;'ACCESS_TOKEN'&lt;/SPAN&gt;])
    }

    url = &lt;SPAN class=""&gt;f'https://api.spotify.com/v1/playlists/&lt;SPAN class=""&gt;{playlist_id}&lt;/SPAN&gt;'&lt;/SPAN&gt;
    response = requests.get(url, headers=headers)
    results = response.json()
    songs = []
    &lt;SPAN class=""&gt;for&lt;/SPAN&gt; item &lt;SPAN class=""&gt;in&lt;/SPAN&gt; results[&lt;SPAN class=""&gt;'tracks'&lt;/SPAN&gt;][&lt;SPAN class=""&gt;'items'&lt;/SPAN&gt;]:
        &lt;SPAN class=""&gt;if&lt;/SPAN&gt; item &lt;SPAN class=""&gt;is&lt;/SPAN&gt; &lt;SPAN class=""&gt;not&lt;/SPAN&gt; &lt;SPAN class=""&gt;None&lt;/SPAN&gt; &lt;SPAN class=""&gt;and&lt;/SPAN&gt; item[&lt;SPAN class=""&gt;'track'&lt;/SPAN&gt;][&lt;SPAN class=""&gt;'artists'&lt;/SPAN&gt;][&lt;SPAN class=""&gt;0&lt;/SPAN&gt;] &lt;SPAN class=""&gt;is&lt;/SPAN&gt; &lt;SPAN class=""&gt;not&lt;/SPAN&gt; &lt;SPAN class=""&gt;None&lt;/SPAN&gt;:
            songs.append(item[&lt;SPAN class=""&gt;'track'&lt;/SPAN&gt;][&lt;SPAN class=""&gt;'artists'&lt;/SPAN&gt;][&lt;SPAN class=""&gt;0&lt;/SPAN&gt;][&lt;SPAN class=""&gt;'name'&lt;/SPAN&gt;] + &lt;SPAN class=""&gt;" : "&lt;/SPAN&gt; + item[&lt;SPAN class=""&gt;'track'&lt;/SPAN&gt;][&lt;SPAN class=""&gt;'name'&lt;/SPAN&gt;])
    &lt;SPAN class=""&gt;return&lt;/SPAN&gt; json.dumps(songs)


&lt;SPAN class=""&gt;@app.route(&lt;SPAN class=""&gt;&lt;SPAN class=""&gt;"/createplaylist"&lt;/SPAN&gt;, methods=[&lt;SPAN class=""&gt;'GET'&lt;/SPAN&gt;]&lt;/SPAN&gt;)&lt;/SPAN&gt;
&lt;SPAN class=""&gt;def&lt;/SPAN&gt; &lt;SPAN class=""&gt;createplaylist&lt;/SPAN&gt;():
    url = &lt;SPAN class=""&gt;'https://api.spotify.com/v1/users/{}/playlists'&lt;/SPAN&gt;.&lt;SPAN class=""&gt;format&lt;/SPAN&gt;(USER_ID)

    headers = {
        &lt;SPAN class=""&gt;'Authorization'&lt;/SPAN&gt;: &lt;SPAN class=""&gt;"Bearer {}"&lt;/SPAN&gt;.&lt;SPAN class=""&gt;format&lt;/SPAN&gt;(os.environ[&lt;SPAN class=""&gt;'ACCESS_TOKEN'&lt;/SPAN&gt;]),
        &lt;SPAN class=""&gt;'Content-Type'&lt;/SPAN&gt;: &lt;SPAN class=""&gt;'application/json'&lt;/SPAN&gt;
    }

    params = {
        &lt;SPAN class=""&gt;'name'&lt;/SPAN&gt;: request.args.get(&lt;SPAN class=""&gt;'name'&lt;/SPAN&gt;),
        &lt;SPAN class=""&gt;'public'&lt;/SPAN&gt;: request.args.get(&lt;SPAN class=""&gt;'public'&lt;/SPAN&gt;),
        &lt;SPAN class=""&gt;'description'&lt;/SPAN&gt;: request.args.get(&lt;SPAN class=""&gt;'description'&lt;/SPAN&gt;)
    }

    response = requests.post(url, headers=headers, params=params)
    response.raise_for_status()
    &lt;SPAN class=""&gt;return&lt;/SPAN&gt; response


&lt;SPAN class=""&gt;@app.route(&lt;SPAN class=""&gt;&lt;SPAN class=""&gt;"/searchsong"&lt;/SPAN&gt;, methods=[&lt;SPAN class=""&gt;'GET'&lt;/SPAN&gt;]&lt;/SPAN&gt;)&lt;/SPAN&gt;
&lt;SPAN class=""&gt;def&lt;/SPAN&gt; &lt;SPAN class=""&gt;searchsong&lt;/SPAN&gt;():
    song = request.args.get(&lt;SPAN class=""&gt;'song'&lt;/SPAN&gt;)

    headers = {
        &lt;SPAN class=""&gt;'Authorization'&lt;/SPAN&gt;: &lt;SPAN class=""&gt;"Bearer {}"&lt;/SPAN&gt;.&lt;SPAN class=""&gt;format&lt;/SPAN&gt;(os.environ[&lt;SPAN class=""&gt;'ACCESS_TOKEN'&lt;/SPAN&gt;])
    }

    params = {
        &lt;SPAN class=""&gt;'q'&lt;/SPAN&gt;: song,
        &lt;SPAN class=""&gt;'type'&lt;/SPAN&gt;: &lt;SPAN class=""&gt;'track'&lt;/SPAN&gt;,
        &lt;SPAN class=""&gt;'market'&lt;/SPAN&gt;: &lt;SPAN class=""&gt;'ES'&lt;/SPAN&gt;,
        &lt;SPAN class=""&gt;'limit'&lt;/SPAN&gt;: &lt;SPAN class=""&gt;1&lt;/SPAN&gt;
    }

    response = requests.get(SEARCH_URL, headers=headers, params=params)
    response.raise_for_status()
    &lt;SPAN class=""&gt;return&lt;/SPAN&gt; response.text


&lt;SPAN class=""&gt;if&lt;/SPAN&gt; __name__ == &lt;SPAN class=""&gt;'__main__'&lt;/SPAN&gt;:
    app.run(port=&lt;SPAN class=""&gt;5000&lt;/SPAN&gt;, debug=&lt;SPAN class=""&gt;True&lt;/SPAN&gt;)&lt;/PRE&gt;&lt;P&gt;Thank you in advance -&lt;/P&gt;</description>
    <pubDate>Thu, 31 Aug 2023 00:50:15 GMT</pubDate>
    <dc:creator>11150105713</dc:creator>
    <dc:date>2023-08-31T00:50:15Z</dc:date>
    <item>
      <title>500 Response error when creating playlist</title>
      <link>https://community.spotify.com/t5/Spotify-for-Developers/500-Response-error-when-creating-playlist/m-p/5629851#M10530</link>
      <description>&lt;P&gt;My task is to build a program that first scraps songs from billboard.com, and then uses the Spotify API to search for these songs and create a playlist.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The scrapping part and seach parts are working. The problem arises when I try to create a playlist.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Every time the code for create_playlist runs I get a 500 error. I am not sure if the error comes from calling (in spotify.py):&lt;/P&gt;&lt;PRE&gt;requests.get(&lt;SPAN class=""&gt;'http://localhost:5000/createplaylist'&lt;/SPAN&gt;, params=params)&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;or (in spotify_service.py)&lt;/P&gt;&lt;PRE&gt;requests.post(url, headers=headers, params=params)&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I don't know if the error it's from my flask server or from Spotify or if there is a mistake in the code.&lt;/P&gt;&lt;P&gt;I was hoping someone could spot the problem.&lt;/P&gt;&lt;P&gt;Here are the files (I've also attached them just in case)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;main.py&lt;/P&gt;&lt;PRE&gt;&lt;SPAN class=""&gt;from&lt;/SPAN&gt; data_scrapper &lt;SPAN class=""&gt;import&lt;/SPAN&gt; DataScrapper
&lt;SPAN class=""&gt;from&lt;/SPAN&gt; spotify &lt;SPAN class=""&gt;import&lt;/SPAN&gt; Spotify

BILLBOARD_URL = &lt;SPAN class=""&gt;'https://www.billboard.com/charts/hot-100/'&lt;/SPAN&gt;


&lt;SPAN class=""&gt;class&lt;/SPAN&gt; &lt;SPAN class=""&gt;Application&lt;/SPAN&gt;:
    &lt;SPAN class=""&gt;def&lt;/SPAN&gt; &lt;SPAN class=""&gt;__init__&lt;/SPAN&gt;(&lt;SPAN class=""&gt;self&lt;/SPAN&gt;):
        &lt;SPAN class=""&gt;# self.data_scrapper = DataScrapper(BILLBOARD_URL)&lt;/SPAN&gt;
        &lt;SPAN class=""&gt;# self.user_input = input("Enter a date for the top 100 (YYYY-MM-DD)")&lt;/SPAN&gt;
        &lt;SPAN class=""&gt;# self.song_list = self.data_scrapper.scrap_songs('1992-08-12')&lt;/SPAN&gt;
        self.spotify = Spotify()
        self.spotify.create_playlist(&lt;SPAN class=""&gt;'1992'&lt;/SPAN&gt;, &lt;SPAN class=""&gt;'Collection of the Greatest hits of 1992'&lt;/SPAN&gt;, &lt;SPAN class=""&gt;False&lt;/SPAN&gt;)
        &lt;SPAN class=""&gt;# self.spotify.get_playlist('2QUpzT3uDaRXnhzcPqLF7F')&lt;/SPAN&gt;
        &lt;SPAN class=""&gt;# self.spotify.search_song()&lt;/SPAN&gt;


app = Application()&lt;/PRE&gt;&lt;P&gt;spotify.py&lt;/P&gt;&lt;PRE&gt;&lt;SPAN class=""&gt;import&lt;/SPAN&gt; base64

&lt;SPAN class=""&gt;import&lt;/SPAN&gt; requests
&lt;SPAN class=""&gt;import&lt;/SPAN&gt; json


&lt;SPAN class=""&gt;class&lt;/SPAN&gt; &lt;SPAN class=""&gt;Spotify&lt;/SPAN&gt;:
    &lt;SPAN class=""&gt;def&lt;/SPAN&gt; &lt;SPAN class=""&gt;__init__&lt;/SPAN&gt;(&lt;SPAN class=""&gt;self&lt;/SPAN&gt;):
        &lt;SPAN class=""&gt;pass&lt;/SPAN&gt;

    &lt;SPAN class=""&gt;def&lt;/SPAN&gt; &lt;SPAN class=""&gt;create_playlist&lt;/SPAN&gt;(&lt;SPAN class=""&gt;self, year, description, public&lt;/SPAN&gt;):
        name = &lt;SPAN class=""&gt;f'Greatest hits of &lt;SPAN class=""&gt;{year}&lt;/SPAN&gt;'&lt;/SPAN&gt;
        params = {
            &lt;SPAN class=""&gt;'name'&lt;/SPAN&gt;: name,
            &lt;SPAN class=""&gt;'public'&lt;/SPAN&gt;: public,
            &lt;SPAN class=""&gt;'description'&lt;/SPAN&gt;: description
        }

        response = requests.get(&lt;SPAN class=""&gt;'http://localhost:5000/createplaylist'&lt;/SPAN&gt;, params=params)
        response.raise_for_status()
        &lt;SPAN class=""&gt;print&lt;/SPAN&gt;(response.json())

    &lt;SPAN class=""&gt;def&lt;/SPAN&gt; &lt;SPAN class=""&gt;get_playlist&lt;/SPAN&gt;(&lt;SPAN class=""&gt;self, playlist_id&lt;/SPAN&gt;):
        params = {
            &lt;SPAN class=""&gt;'playlist_id'&lt;/SPAN&gt;: playlist_id
        }
        response = requests.get(&lt;SPAN class=""&gt;'http://localhost:5000/getplaylist'&lt;/SPAN&gt;, params=params)
        &lt;SPAN class=""&gt;print&lt;/SPAN&gt;(response.json())
        &lt;SPAN class=""&gt;return&lt;/SPAN&gt; response.json()

    &lt;SPAN class=""&gt;def&lt;/SPAN&gt; &lt;SPAN class=""&gt;search_song&lt;/SPAN&gt;(&lt;SPAN class=""&gt;self&lt;/SPAN&gt;):
        params = {
            &lt;SPAN class=""&gt;'song'&lt;/SPAN&gt;: &lt;SPAN class=""&gt;'Set fire to the rain'&lt;/SPAN&gt;
        }
        response = requests.get(&lt;SPAN class=""&gt;'http://localhost:5000/searchsong'&lt;/SPAN&gt;, params=params)
        &lt;SPAN class=""&gt;print&lt;/SPAN&gt;(json.loads(response.text)[&lt;SPAN class=""&gt;'tracks'&lt;/SPAN&gt;][&lt;SPAN class=""&gt;'items'&lt;/SPAN&gt;][&lt;SPAN class=""&gt;0&lt;/SPAN&gt;][&lt;SPAN class=""&gt;'uri'&lt;/SPAN&gt;])
        &lt;SPAN class=""&gt;return&lt;/SPAN&gt; json.loads(response.text)[&lt;SPAN class=""&gt;'tracks'&lt;/SPAN&gt;][&lt;SPAN class=""&gt;'items'&lt;/SPAN&gt;][&lt;SPAN class=""&gt;0&lt;/SPAN&gt;][&lt;SPAN class=""&gt;'uri'&lt;/SPAN&gt;]&lt;/PRE&gt;&lt;P&gt;spotify_service.py&lt;/P&gt;&lt;PRE&gt;&lt;SPAN class=""&gt;from&lt;/SPAN&gt; flask &lt;SPAN class=""&gt;import&lt;/SPAN&gt; Flask, request, redirect
&lt;SPAN class=""&gt;from&lt;/SPAN&gt; requests_oauthlib &lt;SPAN class=""&gt;import&lt;/SPAN&gt; OAuth2Session
&lt;SPAN class=""&gt;from&lt;/SPAN&gt; requests.auth &lt;SPAN class=""&gt;import&lt;/SPAN&gt; HTTPBasicAuth
&lt;SPAN class=""&gt;import&lt;/SPAN&gt; os
&lt;SPAN class=""&gt;import&lt;/SPAN&gt; requests
&lt;SPAN class=""&gt;import&lt;/SPAN&gt; json

app = Flask(__name__)

AUTH_URL = &lt;SPAN class=""&gt;'https://accounts.spotify.com/authorize'&lt;/SPAN&gt;
TOKEN_URL = &lt;SPAN class=""&gt;'https://accounts.spotify.com/api/token'&lt;/SPAN&gt;
SEARCH_URL = &lt;SPAN class=""&gt;'https://api.spotify.com/v1/search'&lt;/SPAN&gt;
REDIRECT_URI = &lt;SPAN class=""&gt;'http://localhost:5000/callback'&lt;/SPAN&gt;
CLIENT_ID = xxx
CLIENT_SECRET = xxx
USER_ID = xxx

SCOPE = [
    &lt;SPAN class=""&gt;'user-read-currently-playing'&lt;/SPAN&gt;,
    &lt;SPAN class=""&gt;'playlist-modify-private'&lt;/SPAN&gt;
]


&lt;SPAN class=""&gt;@app.route(&lt;SPAN class=""&gt;&lt;SPAN class=""&gt;"/login"&lt;/SPAN&gt;&lt;/SPAN&gt;)&lt;/SPAN&gt;
&lt;SPAN class=""&gt;def&lt;/SPAN&gt; &lt;SPAN class=""&gt;login&lt;/SPAN&gt;():
    spotify = OAuth2Session(client_id=CLIENT_ID, scope=SCOPE[&lt;SPAN class=""&gt;1&lt;/SPAN&gt;], redirect_uri=REDIRECT_URI)
    authorization_url, state = spotify.authorization_url(AUTH_URL)
    &lt;SPAN class=""&gt;return&lt;/SPAN&gt; redirect(authorization_url)


&lt;SPAN class=""&gt;@app.route(&lt;SPAN class=""&gt;&lt;SPAN class=""&gt;"/callback"&lt;/SPAN&gt;, methods=[&lt;SPAN class=""&gt;'GET'&lt;/SPAN&gt;]&lt;/SPAN&gt;)&lt;/SPAN&gt;
&lt;SPAN class=""&gt;def&lt;/SPAN&gt; &lt;SPAN class=""&gt;callback&lt;/SPAN&gt;():
    code = request.args.get(&lt;SPAN class=""&gt;'code'&lt;/SPAN&gt;)
    response = requests.post(TOKEN_URL,
                             auth=HTTPBasicAuth(CLIENT_ID, CLIENT_SECRET),
                             data={
                                 &lt;SPAN class=""&gt;'grant_type'&lt;/SPAN&gt;: &lt;SPAN class=""&gt;'authorization_code'&lt;/SPAN&gt;,
                                 &lt;SPAN class=""&gt;'code'&lt;/SPAN&gt;: code,
                                 &lt;SPAN class=""&gt;'redirect_uri'&lt;/SPAN&gt;: REDIRECT_URI
                             })

    os.environ[&lt;SPAN class=""&gt;'ACCESS_TOKEN'&lt;/SPAN&gt;] = response.json()[&lt;SPAN class=""&gt;'access_token'&lt;/SPAN&gt;]

    &lt;SPAN class=""&gt;return&lt;/SPAN&gt; &lt;SPAN class=""&gt;"Logged in"&lt;/SPAN&gt;


&lt;SPAN class=""&gt;@app.route(&lt;SPAN class=""&gt;&lt;SPAN class=""&gt;'/getplaylist'&lt;/SPAN&gt;, methods=[&lt;SPAN class=""&gt;'GET'&lt;/SPAN&gt;]&lt;/SPAN&gt;)&lt;/SPAN&gt;
&lt;SPAN class=""&gt;def&lt;/SPAN&gt; &lt;SPAN class=""&gt;getplaylist&lt;/SPAN&gt;():
    playlist_id = request.args.get(&lt;SPAN class=""&gt;'playlist_id'&lt;/SPAN&gt;)

    headers = {
        &lt;SPAN class=""&gt;'Authorization'&lt;/SPAN&gt;: &lt;SPAN class=""&gt;"Bearer {}"&lt;/SPAN&gt;.&lt;SPAN class=""&gt;format&lt;/SPAN&gt;(os.environ[&lt;SPAN class=""&gt;'ACCESS_TOKEN'&lt;/SPAN&gt;])
    }

    url = &lt;SPAN class=""&gt;f'https://api.spotify.com/v1/playlists/&lt;SPAN class=""&gt;{playlist_id}&lt;/SPAN&gt;'&lt;/SPAN&gt;
    response = requests.get(url, headers=headers)
    results = response.json()
    songs = []
    &lt;SPAN class=""&gt;for&lt;/SPAN&gt; item &lt;SPAN class=""&gt;in&lt;/SPAN&gt; results[&lt;SPAN class=""&gt;'tracks'&lt;/SPAN&gt;][&lt;SPAN class=""&gt;'items'&lt;/SPAN&gt;]:
        &lt;SPAN class=""&gt;if&lt;/SPAN&gt; item &lt;SPAN class=""&gt;is&lt;/SPAN&gt; &lt;SPAN class=""&gt;not&lt;/SPAN&gt; &lt;SPAN class=""&gt;None&lt;/SPAN&gt; &lt;SPAN class=""&gt;and&lt;/SPAN&gt; item[&lt;SPAN class=""&gt;'track'&lt;/SPAN&gt;][&lt;SPAN class=""&gt;'artists'&lt;/SPAN&gt;][&lt;SPAN class=""&gt;0&lt;/SPAN&gt;] &lt;SPAN class=""&gt;is&lt;/SPAN&gt; &lt;SPAN class=""&gt;not&lt;/SPAN&gt; &lt;SPAN class=""&gt;None&lt;/SPAN&gt;:
            songs.append(item[&lt;SPAN class=""&gt;'track'&lt;/SPAN&gt;][&lt;SPAN class=""&gt;'artists'&lt;/SPAN&gt;][&lt;SPAN class=""&gt;0&lt;/SPAN&gt;][&lt;SPAN class=""&gt;'name'&lt;/SPAN&gt;] + &lt;SPAN class=""&gt;" : "&lt;/SPAN&gt; + item[&lt;SPAN class=""&gt;'track'&lt;/SPAN&gt;][&lt;SPAN class=""&gt;'name'&lt;/SPAN&gt;])
    &lt;SPAN class=""&gt;return&lt;/SPAN&gt; json.dumps(songs)


&lt;SPAN class=""&gt;@app.route(&lt;SPAN class=""&gt;&lt;SPAN class=""&gt;"/createplaylist"&lt;/SPAN&gt;, methods=[&lt;SPAN class=""&gt;'GET'&lt;/SPAN&gt;]&lt;/SPAN&gt;)&lt;/SPAN&gt;
&lt;SPAN class=""&gt;def&lt;/SPAN&gt; &lt;SPAN class=""&gt;createplaylist&lt;/SPAN&gt;():
    url = &lt;SPAN class=""&gt;'https://api.spotify.com/v1/users/{}/playlists'&lt;/SPAN&gt;.&lt;SPAN class=""&gt;format&lt;/SPAN&gt;(USER_ID)

    headers = {
        &lt;SPAN class=""&gt;'Authorization'&lt;/SPAN&gt;: &lt;SPAN class=""&gt;"Bearer {}"&lt;/SPAN&gt;.&lt;SPAN class=""&gt;format&lt;/SPAN&gt;(os.environ[&lt;SPAN class=""&gt;'ACCESS_TOKEN'&lt;/SPAN&gt;]),
        &lt;SPAN class=""&gt;'Content-Type'&lt;/SPAN&gt;: &lt;SPAN class=""&gt;'application/json'&lt;/SPAN&gt;
    }

    params = {
        &lt;SPAN class=""&gt;'name'&lt;/SPAN&gt;: request.args.get(&lt;SPAN class=""&gt;'name'&lt;/SPAN&gt;),
        &lt;SPAN class=""&gt;'public'&lt;/SPAN&gt;: request.args.get(&lt;SPAN class=""&gt;'public'&lt;/SPAN&gt;),
        &lt;SPAN class=""&gt;'description'&lt;/SPAN&gt;: request.args.get(&lt;SPAN class=""&gt;'description'&lt;/SPAN&gt;)
    }

    response = requests.post(url, headers=headers, params=params)
    response.raise_for_status()
    &lt;SPAN class=""&gt;return&lt;/SPAN&gt; response


&lt;SPAN class=""&gt;@app.route(&lt;SPAN class=""&gt;&lt;SPAN class=""&gt;"/searchsong"&lt;/SPAN&gt;, methods=[&lt;SPAN class=""&gt;'GET'&lt;/SPAN&gt;]&lt;/SPAN&gt;)&lt;/SPAN&gt;
&lt;SPAN class=""&gt;def&lt;/SPAN&gt; &lt;SPAN class=""&gt;searchsong&lt;/SPAN&gt;():
    song = request.args.get(&lt;SPAN class=""&gt;'song'&lt;/SPAN&gt;)

    headers = {
        &lt;SPAN class=""&gt;'Authorization'&lt;/SPAN&gt;: &lt;SPAN class=""&gt;"Bearer {}"&lt;/SPAN&gt;.&lt;SPAN class=""&gt;format&lt;/SPAN&gt;(os.environ[&lt;SPAN class=""&gt;'ACCESS_TOKEN'&lt;/SPAN&gt;])
    }

    params = {
        &lt;SPAN class=""&gt;'q'&lt;/SPAN&gt;: song,
        &lt;SPAN class=""&gt;'type'&lt;/SPAN&gt;: &lt;SPAN class=""&gt;'track'&lt;/SPAN&gt;,
        &lt;SPAN class=""&gt;'market'&lt;/SPAN&gt;: &lt;SPAN class=""&gt;'ES'&lt;/SPAN&gt;,
        &lt;SPAN class=""&gt;'limit'&lt;/SPAN&gt;: &lt;SPAN class=""&gt;1&lt;/SPAN&gt;
    }

    response = requests.get(SEARCH_URL, headers=headers, params=params)
    response.raise_for_status()
    &lt;SPAN class=""&gt;return&lt;/SPAN&gt; response.text


&lt;SPAN class=""&gt;if&lt;/SPAN&gt; __name__ == &lt;SPAN class=""&gt;'__main__'&lt;/SPAN&gt;:
    app.run(port=&lt;SPAN class=""&gt;5000&lt;/SPAN&gt;, debug=&lt;SPAN class=""&gt;True&lt;/SPAN&gt;)&lt;/PRE&gt;&lt;P&gt;Thank you in advance -&lt;/P&gt;</description>
      <pubDate>Thu, 31 Aug 2023 00:50:15 GMT</pubDate>
      <guid>https://community.spotify.com/t5/Spotify-for-Developers/500-Response-error-when-creating-playlist/m-p/5629851#M10530</guid>
      <dc:creator>11150105713</dc:creator>
      <dc:date>2023-08-31T00:50:15Z</dc:date>
    </item>
  </channel>
</rss>

