Tristan Thrush commited on
Commit
6933090
·
2 Parent(s): 801318e 506e32d

Merge branch 'main' of https://huggingface.co/spaces/hf-hackathon-2023-01/Spotify

Browse files
Files changed (1) hide show
  1. app.py +47 -3
app.py CHANGED
@@ -1,15 +1,57 @@
 
 
 
 
 
1
  import gradio as gr
 
 
 
 
2
  import spotipy
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3
 
4
 
5
- ###########
6
 
7
  from vega_datasets import data
8
 
9
  iris = data.iris()
10
 
11
 
12
- def scatter_plot_fn(dataset):
 
 
 
 
 
 
13
  return gr.ScatterPlot(
14
  value=iris
15
  )
@@ -50,4 +92,6 @@ with gr.Blocks() as demo:
50
  demo.load(fn=scatter_plot_fn, outputs=plot)
51
 
52
 
53
- 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
 
45
  iris = data.iris()
46
 
47
 
48
+ def scatter_plot_fn(dataset, request: gr.Request):
49
+ token = request.request.session.get('token')
50
+ if token:
51
+ sp = spotipy.Spotify(token)
52
+ results = sp.current_user()
53
+ print(f"Welcome to Gradio, {name}!\n{results}")
54
+
55
  return gr.ScatterPlot(
56
  value=iris
57
  )
 
92
  demo.load(fn=scatter_plot_fn, outputs=plot)
93
 
94
 
95
+
96
+ gradio_app = gr.mount_gradio_app(app, demo, "/gradio")
97
+ uvicorn.run(app, host="0.0.0.0", port=7860)