1
0
Fork 0
mirror of https://github.com/Findus23/RadioStats.git synced 2024-09-19 16:03:48 +02:00

"fix" spotipy

This commit is contained in:
Lukas Winkler 2021-11-25 13:17:44 +01:00
parent 86ce91275e
commit 0afeccf8c1
Signed by: lukas
GPG key ID: 54DE4D798D244853
3 changed files with 36 additions and 14 deletions

21
poetry.lock generated
View file

@ -31,7 +31,7 @@ python-versions = "*"
[[package]]
name = "charset-normalizer"
version = "2.0.7"
version = "2.0.8"
description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet."
category = "main"
optional = false
@ -242,15 +242,16 @@ python-versions = ">=3.6"
[[package]]
name = "spotipy"
version = "2.16.0"
version = "2.19.0"
description = "A light weight Python library for the Spotify Web API"
category = "main"
optional = false
python-versions = "*"
[package.dependencies]
requests = ">=2.20.0"
six = ">=1.10.0"
requests = ">=2.25.0"
six = ">=1.15.0"
urllib3 = ">=1.26.0"
[package.extras]
doc = ["Sphinx (>=1.5.2)"]
@ -295,7 +296,7 @@ watchdog = ["watchdog"]
[metadata]
lock-version = "1.1"
python-versions = ">=3.8,<4"
content-hash = "72cae7774c43104bf5a4130b2e0b99210bdb4d8217c3c71d4a3607dc96f0f740"
content-hash = "dd9b818c05f7525a8aafe36e8fbee9ffa2e26587adf1951101ad87ed53abe852"
[metadata.files]
beautifulsoup4 = [
@ -310,8 +311,8 @@ certifi = [
{file = "certifi-2021.10.8.tar.gz", hash = "sha256:78884e7c1d4b00ce3cea67b44566851c4343c120abd683433ce934a68ea58872"},
]
charset-normalizer = [
{file = "charset-normalizer-2.0.7.tar.gz", hash = "sha256:e019de665e2bcf9c2b64e2e5aa025fa991da8720daa3c1138cadd2fd1856aed0"},
{file = "charset_normalizer-2.0.7-py3-none-any.whl", hash = "sha256:f7af805c321bfa1ce6714c51f254e0d5bb5e5834039bc17db7ebe3a4cec9492b"},
{file = "charset-normalizer-2.0.8.tar.gz", hash = "sha256:735e240d9a8506778cd7a453d97e817e536bb1fc29f4f6961ce297b9c7a917b0"},
{file = "charset_normalizer-2.0.8-py3-none-any.whl", hash = "sha256:83fcdeb225499d6344c8f7f34684c2981270beacc32ede2e669e94f7fa544405"},
]
click = [
{file = "click-8.0.3-py3-none-any.whl", hash = "sha256:353f466495adaeb40b6b5f592f9f91cb22372351c84caeb068132442a4518ef3"},
@ -421,9 +422,9 @@ soupsieve = [
{file = "soupsieve-2.3.1.tar.gz", hash = "sha256:b8d49b1cd4f037c7082a9683dfa1801aa2597fb11c3a1155b7a5b94829b4f1f9"},
]
spotipy = [
{file = "spotipy-2.16.0-py2-none-any.whl", hash = "sha256:800330badc1b953417dace1532a586220d35b2240eb2e538e883e19e6bf1b53d"},
{file = "spotipy-2.16.0-py3-none-any.whl", hash = "sha256:9d07b8948c30d8a338805440797263749ccad07c22009f9b3112aa2bcb2ebcea"},
{file = "spotipy-2.16.0.tar.gz", hash = "sha256:315eadd1248053ed336b4d3adbf2e3c32895fdbb0cfcd170542c848c8fd45649"},
{file = "spotipy-2.19.0-py2-none-any.whl", hash = "sha256:dd6de229351bb6cf4d9bc169c5e183288da795f5a8265968dd98e95c037f9e7a"},
{file = "spotipy-2.19.0-py3-none-any.whl", hash = "sha256:766f9ef96d61851d7884c4553f2de2527c3af01df603985f6987543bb28e3ff5"},
{file = "spotipy-2.19.0.tar.gz", hash = "sha256:904f6e813dba837758e9510c1bee51d7ca217f169246625a13e693733dc33543"},
]
urllib3 = [
{file = "urllib3-1.26.7-py2.py3-none-any.whl", hash = "sha256:c4fdf4019605b6e5423637e01bc9fe4daef873709a7973e195ceba0a62bbc844"},

View file

@ -10,7 +10,7 @@ requests = "^2.22.0"
Flask = "^2.0.0"
Flask-Caching = "^1.8.0"
sentry-sdk = {extras = ["flask"], version = "^1.1.0"}
spotipy = "2.16.0"
spotipy = "^2.16.0"
peewee = "^3.13.1"
beautifulsoup4 = "^4.8.2"
pytz = "^2021.1"

View file

@ -1,20 +1,41 @@
import json
import re
import sys
from time import sleep
import sentry_sdk
import spotipy
from redis import Redis
from spotipy import CacheHandler
from spotipy.oauth2 import SpotifyClientCredentials
import config
from config import spotify
from models import *
if config.sentryDSN:
client = sentry_sdk.init(dsn=config.sentryDSN)
crm = SpotifyClientCredentials(**spotify)
sp = spotipy.Spotify(client_credentials_manager=crm)
class RedisCacheHandler(CacheHandler):
"""
based on https://github.com/plamere/spotipy/pull/747
"""
def __init__(self, redis):
self.redis = redis
def get_cached_token(self):
token_info = self.redis.get('token_info')
if token_info:
return json.loads(token_info)
def save_token_to_cache(self, token_info):
self.redis.set('token_info', json.dumps(token_info))
r = Redis(db=config.redisDB)
crm = SpotifyClientCredentials(**config.spotify, cache_handler=RedisCacheHandler(r))
sp = spotipy.Spotify(client_credentials_manager=crm, requests_session=False)
if len(sys.argv) > 1:
limit = int(sys.argv[1])