Hello, i can't go furether because my token can't go to the cache.
Is someone have a solution ...
Did you ever figure this out?
I'm running into the same issue. I'm running code to look at user's top artist.
I get:
'warning:couldn't write token cache to .cache-C'
and a link to a page that states:
{
"error": {
"status": 401,
"message": "No token provided"
}
}
I have read that a lot of people were having trouble with the token part but I double checked and it seems right:
'token = util.prompt_for_user_token(username, scope, client_id, client_secret, redirect_uri)
sp = spotipy.Spotify(auth=token)'

I may have a solution.
On Windows 10, Windows Defender tends to block new programs from writing to personal C:/ areas (Documents, Pictures, etc...) with "_Ransomware protection_" and with proper error catching, would normally say the file/folder doesn't exist.
What I did was:
Assuming you're the administrator:
Hope that helps :)
@HurleybirdJr nice, we can add that to the FAQ
I am having a similar problem myself. I am trying to run my .py script with a batch file on my Windows command line. After it authorizes my Spotify and I enter the URl I was directed to, I get this output:
Couldn't write token to cache at: .cache-{{my spotify username}}
Usage: {the path where my file is} {my spotify username}*
I checked my ransomware on the 3rd party security I use and python.exe is an allowed program.
@jane-dempsey is the same happening if you try to run the python file directly, without the help of a batch file? Perhaps, the batch file doesn't have sufficient authorization and would need to be added to the list of allowed programs, or it should be ran as an administrator
@stephanebruckert I tried the following:
If it is useful, here is my intial start-up code:
import os
import sys
import spotipy
import spotipy.util as util
import pandas as pd
import numpy as np
username = '{my username}'
scope = 'user-library-read'
redirect_uri = 'http://localhost/'
CLIENT_ID = '{my id}'
CLIENT_SECRET = '{my secret}'
token = util.prompt_for_user_token(username, scope, CLIENT_ID, CLIENT_SECRET, redirect_uri)
sp = spotipy.Spotify(auth=token)
It's at this point the .py and .bat files open up a new tab in Google Chrome and I do the same routine and pasting the URL into the command line. After that is when the command line either closes spontaneously or I get the above message I mentioned.
If it's useful, I have a previous version that does work with the difference being the scope: 'user-read-currently-playing'. However, I need the scope 'user-library-read' to implement part of my current code. I hope these details were helpful! And I'm definitely trying various methods!
Also try to run your command line (cmd.exe?) as administrator. I don't know why Windows would need this but I'm hoping to unblock you at the moment.
And, have to say it's really weird that it only happens with specific scopes...
@stephanebruckert I tried running my cmd line as admin, as well as my .bat file and Python 3.8. Same error.
I figured it out! It was a line in my code :) Thank you!!
What was it exactly? Please share all details as it will definitely be useful for others!
Sure did two things, so for future references users can try both:
python -i script.py (source: https://stackoverflow.com/questions/12375173/how-to-stop-python-closing-immediately-when-executed-in-microsoft-windows)if len(sys.argv) > 1:
username = sys.argv[1]
else:
print('Usage: %s {myusername}' % (sys.argv[0],))
sys.exit()
I have found a working solution!
The problem is that spotipy tries to create a file named".cache-USERNAME".
The Spotify Username looks like this: "spotify:user:ID". In windows it is not possible to create files with ":" in it.
Just remove the "spotify:user:". The ID is enough and it works fine!
Most helpful comment
I have found a working solution!
The problem is that spotipy tries to create a file named".cache-USERNAME".
The Spotify Username looks like this: "spotify:user:ID". In windows it is not possible to create files with ":" in it.
Just remove the "spotify:user:". The ID is enough and it works fine!