이제 본격적으로 Spotipy를 다루어 보겠습니다.

1
2
3
4
5
6
7
8
9
import spotipy
from spotipy.oauth2 import SpotifyClientCredentials
import pprint
 
cid = '9b5a593955474abfa7bc427fac9cd806'
secret = '부여받은 비밀번호'
client_credentials_manager = SpotifyClientCredentials(client_id=cid, client_secret=secret)
 
sp = spotipy.Spotify(client_credentials_manager=client_credentials_manager)
cs

일단 위 라인들은 그냥 공식처럼 무조건 그대로 사용하시면 됩니다.

 

맨 윗줄 처럼 pip install spotipy로 모듈을 설치해 줍니다.

그리고 결과값이 딕셔너리와 리스트가 짬뽕된 복잡한 형태로 나오기 때문에 pprint를 사용합니다. 

conansjh20.tistory.com/30

 

Python, print 관련 팁

파이썬 코딩을 하면서 아주 사소한 불편함을 경험할 때가 있고 결국 코딩이라는 것이 주로 불편함을 해결하기 위한 것이니 만큼 구글링을 하여 해결방법을 찾아 불편함을 해소할 수 있습니다. 1

conansjh20.tistory.com

제 블로그에서도 이미 한번 소개한 모듈입니다. :)

 

그리고 이어서 cid 변수에 아이디와 secret 변수에 비밀번호를 부여하시고 이어서 client_credentials_manager라는 변수명으로 SpotifyClientCredentials 함수의 아이디와 비번을 설정하는 작업을 합니다. 제 ID와 비번으로 웹앱에 접근하는 Authorization 과정입니다.

 

그리고 authorization을 Base로 spotipy 기능을 사용할 수 있는 변수 sp를 만듭니다. 이제 이 변수 sp를 통하여 spotipy의 모든 기능들을 사용할 수 있습니다.

여기서 중요한 점은 가급적 앞서 설정한 변수들은 그대로 사용하는 것이 좋습니다. 구글을 통해 검색한 예제들도 동일하게 이용하고 있기 때문입니다.

 

github.com/plamere/spotipy/tree/master/examples

 

plamere/spotipy

A light weight Python library for the Spotify Web API - plamere/spotipy

github.com

Github의 수많은 예제들을 통해서 익힐 수도 있고 앞 페이지 포스트에서 나온 Spotipy 공홈에서 직접 각 기능들과 parameter를 확인하셔도 됩니다. (정작 페이지에서는 안보이던 아저씨 사진이 부담스럽네요.ㅎㅎ;;)

 

제가 이번 포스트에서 이용하고자 하는 기능은 search 기능입니다. 스포티파이의 데이터 베이스에 있는 각 Artist나 Track에 대한 정보들을 가져오는 기능입니다.

 

1
2
result = sp.search("coldplay", limit=1, type='artist')
pprint.pprint(result)
cs

너무 쉽죠? search()안에 들어가는 parameter 전체를 보면 다음과 같습니다.

위의 parameter들 중에서 q, limit 과 type 세가지만 썼습니다. 중간의 offset을 안썼기 때문에 꼭 'limit=' 나 'type=' 을 붙여 어떤 parameter를 가리키는지 명확히 합니다. 저는 콜드플레이를 검색했는데 워낙 유명하여 첫번째 검색결과만 있어도 될 듯 합니다.(두번째 검색결과가 내가 찾는 그 콜드플레이 일 리는 없을테니깐요.ㅎ)

 

그리고 결과를 보면 다음과 같습니다.

pprint 로 출력을 해서 깔끔하게 정돈되어 보여집니다.

대충 보셔도 어떠한 정보들이 나오는 지 알 수 있습니다. 하지만 구조가 딕셔너리와 리스트가 섞여있어 각 값을 찾으려면 좀 헷갈립니다. 중간에 들어가는 리스트는 결과값의 개수(limit= 개수)가 다수일 때를 위해서 들어가 있습니다. 딕셔너리는 기본적으로 순서가 없기 때문입니다. (사실 알고나면 당연한 건데 왜 리스트가 들어있는지 한참을 몰랐습니다.^^;)

 

엑셀파일로 다시한번 구조를 나누어 보았습니다.

 

괜히 길이만 길어져 위의  주소 나  ID 는 간단하게 썼습니다.

 

우리가 원하는 정보들은 모두 items 안에 들어가 있는 것을 알 수 있습니다. 위의 표에도 굵은 글씨로 놓았듯이 Items 딕셔너리안의 값들 역시 딕셔너리로 되어 있는데 특이하게 리스트로 감싸져 있습니다. 그래서 특정 값들만을 추출할 때는 조금 헷갈립니다.

 

  • id 추출 : result['artist']['items'][0]['id']
  • image 주소 추출 : result['artist']['items'][0]['images'][0]['url']

 

중간중간 list안으로 들어가는 [0]을 넣으면 됩니다. 그러면 한번 더 나아가서 위의 image 를 내 컴퓨터에 다운로드 하는 것까지 해보면 다음과 같습니다.

 

1
2
3
4
import urllib.request
 
urllib.request.urlretrieve(result['artists']['items'][0]['images'][0]['url'], 'coldplay.jpg')
 
cs

일단 위로 올라가서 urllib.request를 import 해줍니다.

 

그리고 urllib.request.urlretrieve 기능으로 인터넷 주소에 접근하여 그림파일을 coldplay.jpg로 저장합니다.

(이래서 파이썬, 파이썬 하나봅니다. 너무 쉽습니다.ㅎ)

 

위에서 소개한 수많은 파이썬 예제들은 일단 artist나 track의 id로 접근하는 기능들이 많습니다. 그래서 위에서 내가 원하는 artist나 tract의 id를 얻어 다른 정보들에 접근할 수 있습니다.

 

이 포스트도 우리나라에 스포티파이가 정식으로 서비스하게 되면 좀 더 사람들이 많이 찾겠지요?ㅎㅎ

 

conansjh20.tistory.com/66

 

Spotify API, audio_features 살펴보기

먼저 API에 조금은 생소한 분들은 전에 작성한 두개 포스트를 보시면 이어서 아래 내용도 무리없이 이해하실 수 있을 것 같습니다. Spotify Open API 사용하기 (1) Spotify Open API 사용하기 (2) Spotify에서

conansjh20.tistory.com

 

+ Recent posts