プログラミングと投資と時々オタク

自己啓発メイン。日常も。

Pythonによる自動Tweet(その2) 完

どうも、けい(@kei_kei_se)です。

お久しぶりです。
私事ではございますが、社畜しすぎてついに社畜の呼吸の使い手になってしまいました。これからは社畜柱目指して日々仕事も自己啓発も頑張っていきたいと思いますのでどうぞ生温かい目で見守ってやってください。さてさて、今回はだいぶ日が空いてしまいましたが前回の続きで"Pythonによる自動Tweet(その2)"でございます。前回はTwitterをdeveloper登録するところまでで力尽きました(笑 この記事から見てくださっている方がもしいらっしゃったらぜひ前回の記事から読んでいただければと思います!
keikeise.hatenablog.com

 

■目次

認証情報の取得

まずは以下のサイトからDeveloper Portalにログインします。

https://developer.twitter.com/en/apps/

サイドバーの[Project & Apps] -> [Over View] と進み、画面中央の [Standalone Apps]の[+ Create App]をクリックしてください。するとApp nameを聞かれるので適当に設定しましょう。私は"auto_tweet_kei_kei_se"としました。
f:id:kei_kei_se:20201025210402p:plain

作成したAppの[Keys and Token]からAPI Key & SecretとAccess Token & Secretの4つをメモし以下のように1つの.pyファイルを作成します。
私はconfig.pyとして作成しました。環境はAnacondaでspyderを使用しています。

CONSUMER_KEY = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxx'
CONSUMER_SECRET = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxx'
ACCESS_TOKEN_KEY = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxx'
ACCESS_TOKEN_SECRET = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxx'

メインプログラム作成

次に自動Tweetするメインプログラムを作成します。
プログラム実行時に自動で呟くことができればOKです。

from config import CONSUMER_KEY, CONSUMER_SECRET, ACCESS_TOKEN_KEY, ACCESS_TOKEN_SECRET # config..pyから認証情報読み込み
from requests_oauthlib import OAuth1Session # 外部サイトアクセスのためのライブラリ
from http import HTTPStatus # エラー処理のためのライブラリ

def auto_tweet(body):
    # 認証処理
    twitter = OAuth1Session(
        CONSUMER_KEY, CONSUMER_SECRET, ACCESS_TOKEN_KEY, ACCESS_TOKEN_SECRET
    )
    # ツイート処理
    res = twitter.post("https://api.twitter.com/1.1/statuses/update.json", params={"status": body})
    print(res)

    # エラー処理
    if res.status_code == HTTPStatus.OK:
        print("Successfuly posted")
    else:
        print(f"Failed: {res.status_code}")

def main():
    body = "Auto tweet test"
    auto_tweet(body)


if __name__ == '__main__':
    main()

さてこれを実行してみると。。。
f:id:kei_kei_se:20201025215147p:plain
f:id:kei_kei_se:20201025214608p:plain
"", "Successfully posted"が出力され無事ツイートされました!よかった!
ちなみに Response の Statusが400番台でエラーが出ている場合はURLや認証情報が怪しいので確認してみてください。

まとめ

いかがでしたでしょーかっ!?
目的であったPythonによる自動Tweetを無事実装することができました。
このプログラムは最終目標である”気になる銘柄の価格変動を監視&分析し、買い時、売り時を判定して自動でツイート(通知)してくれる機能の実装”の通知の部分で活躍してもらう予定です。ということで次回からは”気になる銘柄の価格変動の監視”ということでスクレイピングに入っていきたいと思います。今回の記事に関して不明点、気になる点等ございましたらお気軽にコメントください。またTwitterのフォローも大歓迎ですのでぜひお願いしマース!

以上っ!!