Nghịch Ngợm Với Spotify Web API Dành Cho Dev
Hey yo các bạn!
Ở một blog trước, mình đã giới thiệu qua về một số ứng dụng được viết bằng Python. Trong số đó có Spotify, một ứng dụng nghe nhạc trực tuyến vô cùng phổ biến ở thời điểm hiện nay; hơn thế Spotify còn cung cấp một một web api để cho các dev khám phá tại developer.spotify.com. Trong bài viết lần này, mình sẽ thử vọc vạch một phiên bản thu gọn của web api này.
Đăng ký và tạo tài khoản
Bước đầu tiên, bạn cần tạo hay đăng nhập vào một tài khoản Spotify ở trang web dành cho lập trình viên theo link này: https://developer.spotify.com/dashboard/
Sau đó, hãy chọn Create an app và điền đầy đủ thông tin
Ấn Create, bạn đã tạo thành công ứng dụng cho mình; bây giờ ta đã có một số thông tin cơ bản để bắt đầu táy máy: Client ID và Client Secret.
Vậy là xong điều kiện đủ, tiếp theo ta bước vào phần code.
Bắt đầu code thôi
Đầu tiên là cần import thư viện
import spotipy
from spotipy.oauth2 import SpotifyClientCredentials
Tiếp đó chúng ta sẽ dùng 2 thông tin vừa có từ việc tạo app phía trên để kết nối vào Spotify
spotify = spotipy.Spotify(auth_manager=SpotifyClientCredentials(client_id="YOUR_APP_CLIENT_ID",
client_secret="YOUR_APP_CLIENT_SECRET"))
Tìm kiếm bài hát theo tên nghệ sĩ
Đi từ đơn giản trước, ta sẽ thử tìm kiếm các bài hát của một nghệ sĩ dựa vào tên của nghệ sĩ đó
results = spotify.search(q='t-ara', limit=50)
for idx, track in enumerate(results['tracks']['items']):
print(idx, track['name'])
Ở đây ta dùng spotify.search để tìm kiếm với q đại diện cho câu truy vấn, hiện tại mình đang chọn là tên của nghệ sĩ kèm và limit là tham số giới hạn số kết quả trả về với tối đa là 50 còn tối thiểu là 1, các bạn có thể thử nhiều cách tìm kiếm bằng các tham số, tùy chọn khác miễn là đúng theo các quy định trong link hướng dẫn của Spotify (https://developer.spotify.com/documentation/web-api/reference/search/search/). Và đây là kết quả tìm kiếm trả về:
- Roly-Poly
- Sugar Free
- Lovey-Dovey
- Bo Peep Bo Peep
- SEXY LOVE
- DAY BY DAY
- 넘버나인
- Cry Cry
- T.L Time To Love
- Turning Up
- 너 때문에 미쳐
- 내 이름은
- 우리 사랑했잖아
- thank u, next
- 완전 미쳤네 Korean Version
- Little Apple With 젓가락형제
- Sugar Free - S. Tiger Remix
- Sugar Free BigRoom Version
- 왜 이러니
- Turning Up (R3HAB Remix)
- TIAMO
- 처음처럼
- TTL Listen.2
- Truth
- 나 어떡해
- Roly-Poly in 코파카바나
- 떠나지마
- Falling U
- yayaya
- The Way
- The Council of Elrond (feat. "Aniron") [Theme for Aragorn and Arwen]
- The Boy With The Arab Strap
- Nutcracker Suite, Op.71a, TH.35: Arabian Dance (Coffee)
- Nutcracker Suite, Op.71a, TH.35: Arabian Dance (Coffee)
- Nutcracker Suite, Op.71a, TH.35: Arabian Dance (Coffee)
- Nutcracker Suite, Op.71a, TH.35: 2d. Arabian Dance (Coffee)
- Nutcracker Suite, Op.71a, TH.35: 2d. Arabian Dance (Coffee)
- Nutcracker Suite, Op.71a, TH.35: 2d. Arabian Dance (Coffee)
- The Nutcracker, Op.71, TH.14 / Act 2: No. 12b Coffee (Arabian Dance)
- The Nutcracker, Op. 71, TH 14 / Act 2: 12b. Character Dances: Coffee (Arabian Dance) (Arr. Piano)
- Carmen, Pt. 2: XIV. Prélude and Aragonaise · Les Toreadors
- Nutcracker Suite, Op. 71a, TH. 35 (Arr. For Piano 4-Hands): IId. Danses caractéristiques. Danse arabe: Allegretto
- Nutcracker Suite, Op. 71a, TH. 35 (Arr. For Piano 4-Hands): IId. Danses caractéristiques. Danse arabe: Allegretto
- Nutcracker Suite, Op. 71a, TH. 35 (Arr. For Piano 4-Hands): IId. Danses caractéristiques. Danse arabe: Allegretto
- Nutcracker Suite, Op. 71a, TH. 35 (Arr. For Piano 4-Hands): IId. Danses caractéristiques. Danse arabe: Allegretto
- Nutcracker Suite, Op.71a, TH.35: Arabian Dance (Coffee)
- White Flag (feat. Bashy, Kano and the National Orchestra for Arabic Music)
- Color Esperanza 2020
- Que Bonito
- Irresistible
Tìm ra 10 track hay nhất của 1 nghệ sĩ
Khá là ổn ha, giờ mình sẽ thử một tính năng khác, đó là tìm ra 10 con track hay nhất của một nghệ sĩ. Trước nhất là cần phải lấy id trên Spotify của nghệ sĩ ưa thích
results = spotify.search(q='t-ara', type='artist')
artist = results['artists']['items'][0]
id = artist['id']
Nhân đây mình cũng giới thiệu luôn một tính năng nữa của hàm search đó là search theo loại cụ thể, ta có 6 hạn mục có thể tìm là album
, artist
, playlist
, track
, show
và episode
; như phục vụ cho mục tiêu trên thì mình đang để type='artist'
Sau khi đã có id
, việc còn lại là sử dụng tính năng artist_top_tracks để lấy ra 10 bài hát hay nhất mà ta đang ngóng chờ thôi
top = spotify.artist_top_tracks(id)
for idx, track in enumerate(top['tracks']):
print(idx+1, track['name'])
Kết quả vô cùng mỹ mãn khi danh sách trả ra đa phần là những bài nhạc nghe đến quen tai của mình
- Roly-Poly
- Sugar Free
- Lovey-Dovey
- DAY BY DAY
- SEXY LOVE
- Bo Peep Bo Peep
- 넘버나인
- Cry Cry
- T.L Time To Love
- 우리 사랑했잖아
Tạm kết
Đó chỉ là hai trong số rất nhiều tính năng thú vị của Spotify api, các bạn hãy khám phá thử nhé! Các bạn hãy comment thành quả của mình nha
Tham khảo: