Day 46 - create Spotify playlist


Posted by pei_______ on 2022-05-27

learning from 100 Days of Code: The Complete Python Pro Bootcamp for 2022


(Python package) spotipy 2.19.0

spotipy 2.19.0 Documentation


# constant

import requests
import spotipy
from bs4 import BeautifulSoup
from spotipy.oauth2 import SpotifyOAuth
from spotipy.oauth2 import SpotifyClientCredentials
import pprint

URL = "https://www.billboard.com/charts/hot-100/2000-08-12/"

SPOTIFY_CLIENT_ID = YOUR OWN CLIENT ID
SPOTIFY_CLIENT_SECRET = YOUR OWN CLIENT SECRET
SPOTIFY_URL = "http://example.com"
ACCESS_TOKEN = YOUR OWN ACCESS TOKEN
scope = "playlist-modify-private"
PLAYLIST_ID = YOUR OWN PLAYLIST ID
# scarbe 100 Songs's title from wesite

response = requests.get(url=URL)
html_content = response.text

soup = BeautifulSoup(html_content, "html.parser")
song_codes = soup.find_all(name="h3", id="title-of-a-story", class_="a-no-trucate")
# get access token

sp = spotipy.Spotify(auth_manager=SpotifyOAuth(scope=scope,
client_id=SPOTIFY_CLIENT_ID,
client_secret=SPOTIFY_CLIENT_SECRET, redirect_uri=SPOTIFY_URL))
results = sp.current_user_saved_tracks()

for idx, item in enumerate(results['items']):
    track = item['track']
    print(idx, track['artists'][0]['name'], " – ", track['name'])
# get user id

client = spotipy.client.Spotify(auth=ACCESS_TOKEN)
user_id = client.current_user()["id"]
print(user_id)
# create a new playlist

sp.user_playlist_create(user=user_id, name="Billboard 100", public=False)
# search song's url & add to tha playlist

sp = spotipy.Spotify(client_credentials_manager=SpotifyClientCredentials(client_id=SPOTIFY_CLIENT_ID,client_secret=SPOTIFY_CLIENT_SECRET))

song_urls = []

for song in song_codes:
    song_title = song.get_text()[14:].split("\t")[0]
    track_url = sp.search(song_title)["tracks"]["items"][0]['external_urls']['spotify']
    song_urls.append(track_url)

sp.playlist_add_items(playlist_id=PLAYLIST_ID, items=song_urls)

#Python #課堂筆記 #100 Days of Code







Related Posts

接收來自 ROS Topic 的影像並偵測畫面中的動作

接收來自 ROS Topic 的影像並偵測畫面中的動作

MTR04_1030

MTR04_1030

Leetcode 刷題 pattern - Merge Intervals

Leetcode 刷題 pattern - Merge Intervals


Comments