Mixonomer/spotify/spotify.py

71 lines
1.9 KiB
Python
Raw Normal View History

from flask import Flask, render_template, redirect, request
2019-07-26 11:05:27 +01:00
from google.cloud import firestore
import requests
from base64 import b64encode
2019-07-26 11:05:27 +01:00
import os
import urllib
# Project ID is determined by the GCLOUD_PROJECT environment variable
db = firestore.Client()
app = Flask(__name__, static_folder=os.path.join(os.path.dirname(__file__), '..', 'build'), template_folder="templates")
staticbucketurl = 'https://storage.googleapis.com/sarsooxyzstatic/'
@app.route('/')
def main():
return render_template('index.html')
@app.route('/auth')
def auth():
client_id = db.document('key/spotify').get().to_dict()['clientid']
params = urllib.parse.urlencode(
{
'client_id': client_id,
'response_type': 'code',
'scope': 'playlist-modify-public playlist-modify-private playlist-read-private',
'redirect_uri': 'https://spotify.sarsoo.xyz/token'
2019-07-26 11:05:27 +01:00
}
)
return redirect(urllib.parse.urlunparse(['https', 'accounts.spotify.com', 'authorize', '', params, '']))
@app.route('/token')
def token():
code = request.args.get('code', None)
if code is None:
error = request.args.get('error', None)
else:
app_credentials = db.document('key/spotify').get().to_dict()
idsecret = b64encode(bytes(app_credentials['clientid'] + ':' + app_credentials['clientsecret'], "utf-8")).decode("ascii")
headers = {'Authorization': 'Basic %s' % idsecret}
data = {
'grant_type': 'authorization_code',
'code': code,
'redirect_uri': 'https://spotify.sarsoo.xyz/token'
}
req = requests.post('https://accounts.spotify.com/api/token', data=data, headers=headers)
if 200 <= req.status_code < 300:
resp = req.json()
print(resp)
return redirect('/app')
2019-07-26 11:05:27 +01:00
@app.route('/app')
@app.route('/app/<path>')
def app_route(path = None):
2019-07-26 11:05:27 +01:00
return render_template('app.html')
# [END gae_python37_app]