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)
#outputsong 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が正常に作られたら…!!!!に感銘を与える
(無料ですが)すでに購読している以上、プログラムでグラフを生成して聞くべきです、ヒヒ
Reference
この問題について(Day 046), 我々は、より多くの情報をここで見つけました https://velog.io/@awesomee/Day-046テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol