XciD HF staff commited on
Commit
f4c8685
1 Parent(s): 7688aea

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +40 -2
app.py CHANGED
@@ -1,8 +1,44 @@
 
 
 
 
 
1
  import gradio as gr
 
 
 
 
2
  import spotipy
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3
 
4
 
5
- ###########
6
 
7
  from vega_datasets import data
8
 
@@ -49,4 +85,6 @@ with gr.Blocks() as demo:
49
  demo.load(fn=scatter_plot_fn, outputs=plot)
50
 
51
 
52
- demo.launch()
 
 
 
1
+ import json
2
+ from fastapi import FastAPI
3
+ from starlette.middleware.sessions import SessionMiddleware
4
+ from starlette.responses import HTMLResponse, RedirectResponse
5
+ from starlette.requests import Request
6
  import gradio as gr
7
+ import uvicorn
8
+ from fastapi.responses import HTMLResponse
9
+ from fastapi.responses import RedirectResponse
10
+
11
  import spotipy
12
+ from spotipy import oauth2
13
+
14
+ PORT_NUMBER = 8080
15
+ SPOTIPY_CLIENT_ID = 'c087fa97cebb4f67b6f08ba841ed8378'
16
+ SPOTIPY_CLIENT_SECRET = 'ae27d6916d114ac4bb948bb6c58a72d9'
17
+ SPOTIPY_REDIRECT_URI = 'https://hf-hackathon-2023-01-spotify.hf.space'
18
+ SCOPE = 'user-library-read'
19
+
20
+ sp_oauth = oauth2.SpotifyOAuth(SPOTIPY_CLIENT_ID, SPOTIPY_CLIENT_SECRET, SPOTIPY_REDIRECT_URI, scope=SCOPE)
21
+
22
+ app = FastAPI()
23
+ app.add_middleware(SessionMiddleware, secret_key="w.o.w")
24
+
25
+ @app.get('/', response_class=HTMLResponse)
26
+ async def homepage(request: Request):
27
+ token = request.session.get('token')
28
+ if token:
29
+ return RedirectResponse("/gradio")
30
+
31
+ url = str(request.url)
32
+ code = sp_oauth.parse_response_code(url)
33
+ if code != url:
34
+ token_info = sp_oauth.get_access_token(code)
35
+ request.session['token'] = token_info['access_token']
36
+ return RedirectResponse("/gradio")
37
+
38
+ auth_url = sp_oauth.get_authorize_url()
39
+ return "<a href='" + auth_url + "'>Login to Spotify</a>"
40
 
41
 
 
42
 
43
  from vega_datasets import data
44
 
 
85
  demo.load(fn=scatter_plot_fn, outputs=plot)
86
 
87
 
88
+
89
+ gradio_app = gr.mount_gradio_app(app, demo, "/gradio")
90
+ uvicorn.run(app, host="0.0.0.0", port=7860)