์คํฌํฐํ์ด๋ ์ธ๊ณ 1์์ ์์
์คํธ๋ฆฌ๋ฐ ์ฑ์ผ๋ก 2020๋
2๋ถ๊ธฐ ๋ง ๊ธฐ์ค 1์ต 3,800๋ง๋ช
์ ์ ๋ฃ ๊ตฌ๋
์๋ฅผ ๊ฐ์ง๊ณ ์๋ค.
์คํฌํฐํ์ด๋ ์ฌ์ฉ์์ ์๊ณ ๋ฆฌ์ฆ ๋ฐ์ดํฐ๋ฅผ ๋ถ์ํ์ฌ ํ๋ ์ด๋ฆฌ์คํธ๋ฅผ ์๋์ผ๋ก ์์ฑํด์ฃผ๋ ๊ธฐ๋ฅ์ ๊ฐ์ง๊ณ ์๋ค. ๋ฟ๋ง ์๋๋ผ ์๋๋ฎค์ง, EMI, ์๋ ๋ฎค์ง, ์ ๋๋ฒ์ค ๋ฑ๊ณผ ์ ํดํด ์์์ ๋ฌด๋ฃ๋ก ๊ณต๊ธ๊ณผ ๋๋ถ์ด, ๊ตญ๋ด ์์ ํ๋ซํผ๊ณผ๋ ๋น๊ต๋ฅผ ๋ถํํ ์ ๋๋ก ๋ง์ ์์์ ๊ณ ์์ง๋ก ๋ณด์ ํ๊ณ ์๋ค.
deep.daiv์์ ์งํํ๋ ํ๋ณ ํ๋ก์ ํธ์ ์ฃผ์ ๋ฅผ ๋์ ๋ง์ถค ์์ ์ถ์ฒ์์คํ ์ผ๋ก ์ ์ ํ๋ค. ์ ์ฒด์ ์ธ ํ๋ก์ ํธ์ ํ๋ฆ์ ์ฑ ์ ๋ถ์๊ธฐ๋ฅผ ์ ๋ํ๋ผ ์ ์๋ ๊ฐ์ ํค์๋๋ฅผ ์ถ์ถํ์ฌ ํค์๋์ ๊ฐ์ฅ ์ ์ฌํ ์์ ์ ์ถ์ฒํ ๊ฒ์ด๋ค.
์ด ๋ ์ฌ์ฉ๋ ๋ฐ์ดํฐ๊ฐ ๋ฐ๋ก spotify ๋ฐ์ดํฐ์ Audio features
์ด๋ค!
Audio features๋ ๊ฐ ๋
ธ๋์ ํน์ง๋ค์ ์์นํํ์ฌ ๋ณด์ฌ์ฃผ๋ ๊ธฐ๋ฅ์ด๋ค.
ํนํ tempo, danceability, acousticness์ ๊ฐ์ด ์์
์ ํน์ง์ ์ ๋์ ์ธ ์งํ๋ก ๊ตฌ๋ถํด๋๊ณ ์์ผ๋ฏ๋ก, ์ด๋ฅผ ๋ถ์์ ์ ์ฉํ๊ฒ ์ฌ์ฉํ ์ ์๋ค.
๊ทธ๋ ๋ค๋ฉด ๋ณธ๊ฒฉ์ ์ผ๋ก Spotify API๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋ํด ์์๋ณด์!
Spotify API๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด์๋ ๋จผ์ KEY์ Secret ๋๋ฒ๊ฐ ํ์ํ๋ค.
์๋์ ๋งํฌ์์ ๊ณผ์ ์ด ์งํ๋๋ค.
๐ Spotify์ ๊ฐ๋ฐ์ ํ์ด์ง: https://developer.spotify.com/
๋ง์ฝ ์์ด๋๊ฐ ์๋ค๋ฉด ๋ก๊ทธ์ธ์ ์๋ค๋ฉด ํ์๊ฐ์
์ด ํ์ํ๋ค.
Dashboard > Create app ์ ํตํด ์๋ก์ด APP์ ์์ฑํ ์ ์๋ค.
โถ๏ธ ์์(BookOST๋ผ๋ APP์ ์์ฑ)
Dashboard > BookOST > Settings > Basic Information ์ ํตํด Key์ Secret ๊ฐ์ ์ป์ ์ ์๋ค.
๐จ ๋ง์ฝ secret ๊ฐ์ ์ฐพ์ง ๋ชปํ๋ค๋ฉด, ์๋์
View client secret
๋ฒํผ์ ๋๋ฌ๋ณด์!
๋จผ์ spotify module์ ์ค์นํด ์ค๋ค.
pip install spotipy
# ์ด๋ ์ฃผ์ํ ์ ์ module๋ช
์ด spotify๊ฐ ์๋ spotipy์ด๋ค!
import spotipy
from spotipy.oauth2 import SpotifyOAuth
import pprint
pprint?
pprint๋ ๋ฐ์ดํฐ๋ฅผ ๋ณด๊ธฐ ์ข๊ฒ ์ถ๋ ฅ(pretty print)ํ ๋ ์ฌ์ฉํ๋ ๋ชจ๋์ด๋ค.
๊ตฌ์กฐ๊ฐ ๋ณต์กํ JSON ๋ฐ์ดํฐ๋ฅผ ๋๋ฒ๊น ์ฉ๋๋ก ์ถ๋ ฅํ ๋ pprint๋ฅผ ์์ฃผ ์ฌ์ฉํ๋ค.
API์ ์ ๊ทผํ๊ธฐ ์ํด์๋ Authorization ๊ณผ์ ์ด ํ์ํ๋ค. ์ด ๋ ๋ฐ๊ธ๋ฐ์๋ Key์ Secret๊ฐ์ ์ฌ์ฉํ๋ค.
cid = '392ea3c6dfdc4c959fd125e2c7a6e86b'
secret = '๋ฐ๊ธ๋ฐ์ secret ๋ฒํธ'
redirect_uri = 'http://localhost:8080/callback'
sp = spotipy.Spotify(auth_manager=SpotifyOAuth(client_id=cid, client_secret=secret, redirect_uri=redirect_uri))
์ด๋ ๊ฒ ํ๋ฉด ์ด์ API๋ฅผ ์ฌ์ฉํ ์ ์๊ฒ ๋์๋ค! ์ด์ ์์๋ฅผ ํตํด ๊ฐ๋จํ๊ฒ Spotify API์ ๊ตฌ์กฐ๋ฅผ ํ์ ํด๋ณด์
Spotify API๋ ๊ต์ฅํ ๋ง์ ๋ฉ์๋๋ฅผ ๊ฐ์ง๊ณ ์๋ค. ๊ทธ ์ค ๋ช๊ฐ์ง๋ฅผ ๊ณจ๋ผ ๋ฐ์ดํฐ์ ๊ตฌ์กฐ๋ฅผ ํ์
ํด๋ณด๊ณ ์ ํ๋ค.
์๋์ ๋งํฌ๋ฅผ ํตํด ๋ง์ ๋ฉ์๋๋ฅผ ์ฐพ์ ๋ณผ ์ ์๋ค.
๐ https://spotipy.readthedocs.io/en/2.22.1/#redirect-uri
search()๋ ์คํฌํฐํ์ด์ ๋ฐ์ดํฐ ๋ฒ ์ด์ค์ ์๋ ๊ฐ Artist๋ Track์ ๋ํ ์ ๋ณด๋ค์ ๊ฐ์ ธ์ค๋ ๊ธฐ๋ฅ์ด๋ค.
search์ ํ๋ผ๋ฏธํฐ๋ ๋ค์๊ณผ ๊ฐ๋ค.
๊ฐ์ ์์ด์ ์ ๋ํด์ search()๋ฅผ ์งํํด ๋ณด์๋ค.
result = sp.search('iu',limit=2,type = 'artist')
pprint.pprint(result)
๊ทธ๋ ๋ด items ๋ฆฌ์คํธ์ ๋ํด ์กฐ๊ธ ๋ ์ดํด๋ณด์!
limit๋ฅผ 2๋ก ๋์๊ธฐ ๋๋ฌธ์ items ๋ฆฌ์คํธ ์์ 2๊ฐ์ ๊ฐ์ด ๋ค์ด์์์ ์ ์ ์๋ค.
์ฒซ๋ฒ์งธ ์์๋ name์ด 'IU'์ธ ํ๊ตญ๊ฐ์์ ์ ๋ณด๋ฅผ ๊ฐ์ง๊ณ ์๊ณ , ๋๋ฒ์งธ ์์๋ name์ด 'IURII'์ธ ๊ฐ์์ ์ ๋ณด๋ฅผ ๊ฐ์ง๊ณ ์์์ ํ์ธ ํ ์ ์๋ค. ๊ฒฐ๊ณผ๋ฅผ ๋ดค์ ๋ iu๋ผ๋ ์ฟผ๋ฆฌ๋ฌธ์ด ์ฃผ์ด์ก์ ๋ ์์น ๊ฐ์ ์ฟผ๋ฆฌ๋ฌธ์ ํฌํจํ๋ ๋ชจ๋ ์ ๋ณด์์ ์ ์ ์๋ค.(๋์ ์ถ์ธก)
โถ๏ธ 'IU'์ ์ ๋ณด ํ์ธํ๊ธฐ
pprint.pprint(result['artists']['items'][0])
'IU'์ ์ํฐ์คํธ ๊ณ ์ ๋ฒํธ(id)์ธ '3HqSLMAZ3g3d5poNaI7GOU'์ ์ด์ฉํด์ search()์๋ ๋ฐ๋๋ก ์ํฐ์คํธ์ ์ ๋ณด๋ฅผ ์ถ๋ ฅํด๋ณด์
uri = 'spotify:artist:3HqSLMAZ3g3d5poNaI7GOU' # ํํ : spotify:artist:(์ํฐ์คํธ id)
artist = sp.artist(uri)
pprint.pprint(artist)
์์ ๊ฒฐ๊ณผ์ ๋์ผํ๊ฒ ๋์ค๋ ๊ฒ์ ํ์ธ ํ ์ ์๋ค.