3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

NowPlayingをPythonでTweetする

Posted at

前置きの前置き

こんにちは。Quiitaでははじめましてのさらだぼぉると言います。真面目な記事は僕個人のブログだけじゃなく、こちらにも投稿していきたいと思います。
初めての投稿でおかしな部分あると思いますが、暖かく見て貰えばありがたいです。

前置き

どうも、この前学校で体脂肪率測ったら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をクリック

画像

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

画像

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

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

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

.env
SPOTIFY_CLIENT_ID = XXXXXXXXXXXXXXXXXXXXXX
SPOTIFY_CLIENT_SECRET = XXXXXXXXXXXXXXXXXXXXXX
main.py
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のアカウントページから確認してください。

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

初回はwebページが開くのでそのページのURLをコピーしてください、
画像

コードを詳しく解説

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) #再生中の楽曲情報表示

current_trackの中身についてはSpotifyのページGet the User's Currently Playing Trackに書いてあります。

Tweeeeeeeet

では、現在再生中の楽曲は取得できたのでTweetをするコードを書いていきましょう。そのためにTwitterのAPIキーを取得する必要があります。

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

.env
TWITTER_APIKEY ="XXXXXXXXXXXXXXXXXXXXXX"
TWITTER_SECRET_APIKEY="XXXXXXXXXXXXXXXXXXXXXX"
TWITTER_ACCESSTOKEN="XXXXXXXXXXXXXXXXXXXXXX"
TWITTER_SECRET_ACCESSTOKEN ="XXXXXXXXXXXXXXXXXXXXXX"
main.py
import tweepy
main.py
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)
main.py
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ができるはずです。
では一度全文を書いておきます。

.env
SPOTIFY_CLIENT_ID = XXXXXXXXXXXXXXXXXXXXXX
SPOTIFY_CLIENT_SECRET = XXXXXXXXXXXXXXXXXXXXXX
TWITTER_APIKEY ="XXXXXXXXXXXXXXXXXXXXXX"
TWITTER_SECRET_APIKEY="XXXXXXXXXXXXXXXXXXXXXX"
TWITTER_ACCESSTOKEN="XXXXXXXXXXXXXXXXXXXXXX"
TWITTER_SECRET_ACCESSTOKEN ="XXXXXXXXXXXXXXXXXXXXXX"
main.py
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に投稿する

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?