Spotipy: warning:couldn't write token cache to .cache-xxxxxxxxxx

Created on 27 Mar 2019  路  12Comments  路  Source: plamere/spotipy

documentation

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!

All 12 comments

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)'

image

I may have a solution.

Problem:

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.

Solution:

What I did was:

  • Go into Windows Defender, under "_Virus & threat protection_"
  • Then "_Ransomware protection_" into "_Allow an app through controlled folder access_".

Assuming you're the administrator:

  • Go to "_Add an allowed app_" then "_Recently blocked apps_"
  • Then a list of programs and their respective directories should appear. For me "_pythonw.exe_" was listed at the top.
  • Then, you can go ahead and add it to the whitelist and if you rerun your program, it should work without that error popping up again...

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:

  • tried to add my .py file and .bat file to list of allowed program in 3rd party security system; was unable to do so.
  • temporarily turned off my 3rd party security system to see if it was blocking it. try to run by .bat and .py files and ran into same issues.
  • ran my .bat file and . py files as administrator. same issue arose.
  • when I try to run the files, A .cache (?) file gets saved onto my desktop labelled .cache-{my username}. I frequently delete this file to "clear" whatever spotipy cache is put onto my computer.

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:

  1. In my .bat file I put an -i in front of the .py script path so python -i script.py (source: https://stackoverflow.com/questions/12375173/how-to-stop-python-closing-immediately-when-executed-in-microsoft-windows)
  2. I re-read my code which had the following, which I commented out and the code is running fine without it. This was a part of a coding block that creates a dataframe from a Spotify playlist, but my personal Spotify has already been authorized previously using the standard Spotipy authorization flow.
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!

Was this page helpful?
0 / 5 - 0 ratings

Related issues

tatoosh picture tatoosh  路  5Comments

Kurchunk picture Kurchunk  路  3Comments

Jeoffreybauvin picture Jeoffreybauvin  路  4Comments

DylanMeeus picture DylanMeeus  路  4Comments

danielgwilson picture danielgwilson  路  4Comments