Day 046


Udemy Python Bootcamp Day 046


Musical Time Machine


Scraping the Billboard Hot 100

from bs4 import BeautifulSoup
import requests

date = input("Which year do you want to travel to? Type the date in this format YYYY-MM-DD: ")

response = requests.get(f"https://www.billboard.com/charts/hot-100/{date}")
billboard_web_page = response.text

soup = BeautifulSoup(billboard_web_page, "html.parser")
songs = soup.select(selector="li ul li h3")
song_names = [song.getText().strip() for song in songs]

Authentication with Spotify

import spotipy
from spotipy.oauth2 import SpotifyOAuth

sp = spotipy.Spotify(
    auth_manager=SpotifyOAuth(
        client_id="***************",
        client_secret="****************",
        redirect_uri="http://example.com/",
        scope="playlist-modify-private",
        show_dialog=True,
        cache_path="token.txt"
    )
)
user_id = sp.current_user()
Spotifyですが、モジュール名はspotifyで、モジュールのインストール中にエラーが発生しました.ほほほ...
Documentationをマスターするのはまだ少し骨が折れる..current_user()メソッド自体を使用することはできません.

Search Spotify for the Songs

user_id = sp.current_user()["id"]

song_uris = []
year = date.split("-")[0]
for song in song_names:
    result = sp.search(q=f"track:{song} year:{year}", type="track")
    # print(result)
    try:
        uri = result["tracks"]["items"][0]["uri"]
        song_uris.append(uri)
    except IndexError:
        # print(f"{song} doesn't exist in Spotify. Skipped.")
        pass
print(song_uris)
#output

song urisの作成からブロックされていました....search()を使用する必要があり、
提示されたqueryが.search()内で使用されるのも、なぜそうなのか全く見当がつかない...
Spotifyドキュメントは特に悪いと思います.
まず、あんなにたくさんの方法の中で、まずどんな状況でどんな方法を使うべきかという感じを見つけなければなりません.

Creating and Adding to Spotify Playlist

result = sp.user_playlist_create(
    user=user_id,
    name=f"{date} Billboard 100",
    public=False,
)
sp.playlist_add_items(
    playlist_id=result["id"],
    items=song_uris,
)
よくできてるけど!!
追加する時に少しぐずぐずしています
歌を流したいと思ってfor loopを書いたのですが間違えました
解決策を見て、リストsong_urisを全部入れればいいのに、ほほほ
しかし問題は私が作ったこのプリーをどこで見たか分からないことです.
だから実はフリーは普通にやったのかも...
アプリをダウンロードしてみますか?
他の授業は問答をあまり見ていないので分かりません.
でもこの部分の問答はみんな怒っていました

FINAL

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

sp = spotipy.Spotify(
    auth_manager=SpotifyOAuth(
        client_id="7deb5a2e02cd46a191959a19265089e6",
        client_secret="b32c154bba5448129fe3a33097672bb8",
        redirect_uri="http://example.com/",
        scope="playlist-modify-private",
        show_dialog=True,
        cache_path="token.txt"
    )
)
user_id = sp.current_user()["id"]
date = input("Which year do you want to travel to? Type the date in this format YYYY-MM-DD: ")

response = requests.get(f"https://www.billboard.com/charts/hot-100/{date}")
billboard_web_page = response.text

soup = BeautifulSoup(billboard_web_page, "html.parser")
songs = soup.select(selector="li ul li h3")
song_names = [song.getText().strip() for song in songs]

song_uris = []
year = date.split("-")[0]
for song in song_names:
    result = sp.search(q=f"track:{song} year:{year}", type="track")
    try:
        uri = result["tracks"]["items"][0]["uri"]
        song_uris.append(uri)
    except IndexError:
        # print(f"{song} doesn't exist in Spotify. Skipped.")
        pass

result = sp.user_playlist_create(
    user=user_id,
    name=f"{date} Billboard 100",
    public=False,
)

sp.playlist_add_items(
    playlist_id=result["id"],
    items=song_uris,
)
運動派は3ヶ月無料と聞いて注文しました.
Flyが正常に作られたら…!!!!に感銘を与える
(無料ですが)すでに購読している以上、プログラムでグラフを生成して聞くべきです、ヒヒ