Nghịch Ngợm Với Spotify Web API Dành Cho Dev

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ề:

  1. Roly-Poly
  2. Sugar Free
  3. Lovey-Dovey
  4. Bo Peep Bo Peep
  5. SEXY LOVE
  6. DAY BY DAY
  7. 넘버나인
  8. Cry Cry
  9. T.L Time To Love
  10. Turning Up
  11. 너 때문에 미쳐
  12. 내 이름은
  13. 우리 사랑했잖아
  14. thank u, next
  15. 완전 미쳤네 Korean Version
  16. Little Apple With 젓가락형제
  17. Sugar Free - S. Tiger Remix
  18. Sugar Free BigRoom Version
  19. 왜 이러니
  20. Turning Up (R3HAB Remix)
  21. TIAMO
  22. 처음처럼
  23. TTL Listen.2
  24. Truth
  25. 나 어떡해
  26. Roly-Poly in 코파카바나
  27. 떠나지마
  28. Falling U
  29. yayaya
  30. The Way
  31. The Council of Elrond (feat. "Aniron") [Theme for Aragorn and Arwen]
  32. The Boy With The Arab Strap
  33. Nutcracker Suite, Op.71a, TH.35: Arabian Dance (Coffee)
  34. Nutcracker Suite, Op.71a, TH.35: Arabian Dance (Coffee)
  35. Nutcracker Suite, Op.71a, TH.35: Arabian Dance (Coffee)
  36. Nutcracker Suite, Op.71a, TH.35: 2d. Arabian Dance (Coffee)
  37. Nutcracker Suite, Op.71a, TH.35: 2d. Arabian Dance (Coffee)
  38. Nutcracker Suite, Op.71a, TH.35: 2d. Arabian Dance (Coffee)
  39. The Nutcracker, Op.71, TH.14 / Act 2: No. 12b Coffee (Arabian Dance)
  40. The Nutcracker, Op. 71, TH 14 / Act 2: 12b. Character Dances: Coffee (Arabian Dance) (Arr. Piano)
  41. Carmen, Pt. 2: XIV. Prélude and Aragonaise · Les Toreadors
  42. Nutcracker Suite, Op. 71a, TH. 35 (Arr. For Piano 4-Hands): IId. Danses caractéristiques. Danse arabe: Allegretto
  43. Nutcracker Suite, Op. 71a, TH. 35 (Arr. For Piano 4-Hands): IId. Danses caractéristiques. Danse arabe: Allegretto
  44. Nutcracker Suite, Op. 71a, TH. 35 (Arr. For Piano 4-Hands): IId. Danses caractéristiques. Danse arabe: Allegretto
  45. Nutcracker Suite, Op. 71a, TH. 35 (Arr. For Piano 4-Hands): IId. Danses caractéristiques. Danse arabe: Allegretto
  46. Nutcracker Suite, Op.71a, TH.35: Arabian Dance (Coffee)
  47. White Flag (feat. Bashy, Kano and the National Orchestra for Arabic Music)
  48. Color Esperanza 2020
  49. Que Bonito
  50. 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 , artistplaylisttrackshow 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

  1. Roly-Poly
  2. Sugar Free
  3. Lovey-Dovey
  4. DAY BY DAY
  5. SEXY LOVE
  6. Bo Peep Bo Peep
  7. 넘버나인
  8. Cry Cry
  9. T.L Time To Love
  10. 우리 사랑했잖아

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:

  1. https://developer.spotify.com/documentation/web-api/
  2. https://developer.spotify.com/documentation/web-api/reference/search/search/
  3. https://spotipy.readthedocs.io/en/2.16.1/