NowPlayingをPythonでTweetする

投稿日:2020 12/8

タグ: #Python #API #音楽 #Salad's Memo

前置き

どうも、この前学校で体脂肪率測ったら6.8%だったけどこれがどうなのかよくわからないさらだぼぉるです。
みなさん音楽って聞きますか?僕は音楽大好きですね。大体毎日1~2時間以上は聞きますね(学生なので聞く時間がないとか言えない)プログラミングしているときとか音楽は離せないという方も多いのではないでしょうか。
そんな音楽ですが、Twitterなどで#NowPlayingというハッシュタグがあるのはご存知でしょうか?今聴いている曲を#をつけてツイートするというものなのですが、いちいちツイートするのめんどくないですか?何か作業しているのに#NowPlayingするためだけにTwitterに移動して投稿して、、、ということで、(Spotifyで)音楽を聴いているときに#NowPlayingをツイートしてくれる仕組みをPythonで作りました。

spotipy と tweepy

ということで今回はspotifyの情報を取得したいのでspotipyを使ってデータを取得したいと思います。Tweetにはtweepyを使って簡単に実装しました。

今回使うPythonライブラリの一覧です。事前にインストールを済ませておいてください。

  • dotenv pip install python-dotenv
  • spotipy pip install spotipy
  • tweepy pip install tweepy

まぁPythonを常用している人は何に使うのかは大体予想できると思いますが、使いながら説明していきたいと思います。

NowPlayingの取得

とりあえずまず、Spotifyの現在再生している音楽を取得しないと話が始まりません。早速コードを書いていきましょう。 まず、SpotifyのDevelperサイトにアクセスしてCLIENT IDとCLIENT SECRET IDを取得します。 サイトにアクセスして、(過去に作ったのがあるので、一つありますが本来なら追加ボタンしかないはずです)MyNewAppをクリック

SpotifyのDasbBoardページ

アプリの名前と、説明を書いてCREATE

SpotifyCreateAPP

すると画像のようにClient ID が生成されます。(その下にあるボタンを押すとSecret IDが表示されます)

ClientID生成成功

とりあえずコード書き書き

では実際にデータを取得していきましょう。

SPOTIFY_CLIENT_ID = XXXXXXXXXXXXXXXXXXXXXX
SPOTIFY_CLIENT_SECRET = XXXXXXXXXXXXXXXXXXXXXX
from dotenv import load_dotenv
import os
import spotipy
import spotipy.util as util

#環境変数の設定
load_dotenv(verbose=True)
s_client_id = os.environ.get("SPOTIFY_CLIENT_ID")
s_client_secret = os.environ.get("SPOTIFY_CLIENT_SECRET")

#下に詳細
token = util.prompt_for_user_token(username="詳しくは↓", scope='user-read-currently-playing', client_id=s_client_id, client_secret=s_client_secret, redirect_uri="http://example.com")
spotify = spotipy.Spotify(auth=token)
current_track = spotify.current_user_playing_track()
print(current_track)

これでとりあえず、実行できます。usernameに関してですが、表示されている名前では通らないことがあります。SpotifyのHPのアカウントページから確認してください。

Spotifyのユーザー名画面

(この画像のユーザー名をコピペしてください)

初回はwebページが開くのでそのページのURLをコピーしてください、 Spotifyのアカウント確認画面

コードを詳しく解説

token = util.prompt_for_user_token(
	username="HOGEHOGE",  #ユーザーネームを送信
	scope='user-read-currently-playing', #socope(どんな情報を得るか)の設定
	client_id=s_client_id, #Client IDの送信
	client_secret=s_client_secret, #Secret Client IDの送信
	redirect_uri="http://example.com" #リダイレクト先のURLを指定
)
spotify = spotipy.Spotify(auth=token) #tokenの認証
current_track = spotify.current_user_playing_track() #再生中の楽曲情報取得
print(current_track) #再生中の楽曲情報表示
## Tweeeeeeeet
では、現在再生中の楽曲は取得できたのでTweetをするコードを書いていきましょう。そのためにTwitterのAPIキーを取得する必要があります。

ではコード取得できたので.envとmain.pyに追記していきます。

```.env
TWITTER_APIKEY ="XXXXXXXXXXXXXXXXXXXXXX"
TWITTER_SECRET_APIKEY="XXXXXXXXXXXXXXXXXXXXXX"
TWITTER_ACCESSTOKEN="XXXXXXXXXXXXXXXXXXXXXX"
TWITTER_SECRET_ACCESSTOKEN ="XXXXXXXXXXXXXXXXXXXXXX"
import tweepy
t_api_key = os.environ["TWITTER_APIKEY"]
t_api_skey = os.environ["TWITTER_SECRET_APIKEY"]
t_token = os.environ["TWITTER_ACCESSTOKEN"]
t_s_token = os.environ["TWITTER_SECRET_ACCESSTOKEN"]
auth = tweepy.OAuthHandler(t_api_key, t_api_skey)
auth.set_access_token(t_token, t_s_token)
api = tweepy.API(auth)
tweet = '曲名:' + current_track['item']['name']+'\n'\
            +'アーティスト:' + current_track['item']['artists'][0]['name']+'\n'\
            +'Spotify:' + current_track['item']['external_urls']['spotify']+'\n'\
            +'#NowPlaying'
api.update_status(tweet)

これでTweetができるはずです。 では一度全文を書いておきます。

SPOTIFY_CLIENT_ID = XXXXXXXXXXXXXXXXXXXXXX
SPOTIFY_CLIENT_SECRET = XXXXXXXXXXXXXXXXXXXXXX
TWITTER_APIKEY ="XXXXXXXXXXXXXXXXXXXXXX"
TWITTER_SECRET_APIKEY="XXXXXXXXXXXXXXXXXXXXXX"
TWITTER_ACCESSTOKEN="XXXXXXXXXXXXXXXXXXXXXX"
TWITTER_SECRET_ACCESSTOKEN ="XXXXXXXXXXXXXXXXXXXXXX"
from dotenv import load_dotenv
import os
import spotipy
import spotipy.util as util
import tweepy

#環境変数の設定
load_dotenv(verbose=True)
s_client_id = os.environ.get("SPOTIFY_CLIENT_ID")
s_client_secret = os.environ.get("SPOTIFY_CLIENT_SECRET")
t_api_key = os.environ["TWITTER_APIKEY"]
t_api_skey = os.environ["TWITTER_SECRET_APIKEY"]
t_token = os.environ["TWITTER_ACCESSTOKEN"]
t_s_token = os.environ["TWITTER_SECRET_ACCESSTOKEN"]
auth = tweepy.OAuthHandler(t_api_key, t_api_skey)
auth.set_access_token(t_token, t_s_token)
api = tweepy.API(auth)

#取得&Tweet
token = util.prompt_for_user_token(username="詳しくは↓", scope='user-read-currently-playing', client_id=s_client_id, client_secret=s_client_secret, redirect_uri="http://example.com")
spotify = spotipy.Spotify(auth=token)
current_track = spotify.current_user_playing_track()
print(current_track)
tweet = '曲名:' + current_track['item']['name']+'\n'\
            +'アーティスト:' + current_track['item']['artists'][0]['name']+'\n'\
            +'Spotify:' + current_track['item']['external_urls']['spotify']+'\n'\
            +'#NowPlaying'
api.update_status(tweet)

ツイートできましたか?
これでよき#NowPlayingLifeをお過ごしください!
以上さらだぼぉるでした。

参考

TweepyでTwitterに投稿する

書いた人

さらだぼぉるの画像

さらだぼぉる

どこにでもいる男子高校生。[非公式]滋賀県コロナまとめサイトやTwitterBotなど滋賀県に関する情報を発信している。

Twitter(@saladbowl_dev)

おすすめ記事