自動車エンジニアのアップデート

自動車エンジニアのアップデート

自動車部品メーカー勤務ソフトエンジニアの情報発信ブログ

~ 車載 ソフト エンジニア の 情報発信 ブログ ~

【Python学習】Twitter API v2をつかって自動投稿 (tweepy利用)

f:id:Vefortec:20220313114310p:plain

Twitterからの情報収集やツイートを自動化したいと思い、やり方を調査しました。

しかし、TwitterAPIが2021年11月にバージョンアップしたらしく、ネット上の情報では上手くいかないところがありました。

自分がはまったところと、簡単な検索、ツイートプログラムをご紹介します。

 

 

API利用登録

英語サイトでの登録になるため、昇格の為だけにTOEIC受けてる自分には辛かったです(笑)以下の流れで、登録していきました。

  1. TwitterAPI サイトにアクセス。ググればトップに出てくる。
  2. Sign Up」から登録。

    f:id:Vefortec:20220319082427p:plain

  3. 必要事項を記入

    f:id:Vefortec:20220319082459p:plain

  4. メールが届くのでクリック。

    f:id:Vefortec:20220319082733p:plain

    f:id:Vefortec:20220319082825p:plain


    ここまでが、APIを利用するための事前申請になります。
    以降は、各種APIキーを取得するため設定になるので、作りたいプログラムごとに実施することになります。

  5. アプリ名を設定

    f:id:Vefortec:20220319083140p:plain

  6. 各種キーが発行。このタイミングで出てきたキーは使いません。ハマりました。

    f:id:Vefortec:20220319083241p:plain

  7. と思いきや、発行されたデフォルト状態では、権限がReadになっており、ツイートすることができませんでした。
    設定を変更し、Writeできるようにします。

    f:id:Vefortec:20220319083905p:plain

    f:id:Vefortec:20220319083920p:plain

    f:id:Vefortec:20220319084139p:plain

  8. 権限の変更が完了

    f:id:Vefortec:20220319084250p:plain

  9. 各種キーを再発行。こっちを使う。

    f:id:Vefortec:20220319084948p:plain

    これでAPIキーの発行は完了です。

 

Pythonプログラム

次にPythonAPIを利用するプログラムを作成していきます。

今回はtweepyというライブラリを利用して実施しました。

tweepyは開発が終了しているようですのであしからず。

 

twitter API v2になってからは、

tweepy.API()ではなくtweepy.Client()を使用することで対応できるようです。

 

キーワード検索した結果表示と、ツイートするプログラムを簡単に作成しました。

ソースコードと実行結果は以下の通りです。

 

<ソースコード>

import config
import tweepy

# 認証に必要なキーとトークン
BT = config.BEARER_TOKEN
AK = config.API_KEY
AS = config.ASI_KEY_SECRET
AT = config.ACCESS_TOKEN
ATS = config.ACCESS_TOKEN_SECRET

client = tweepy.Client(BT, AK, AS, AT, ATS)

def search_tw(msg):
    response = client.search_recent_tweets(msg)
    print(response.meta)

    tweets = response.data

    for tweet in tweets:
        print(tweet)
        print("================================")

def create_tw(msg):
    response = client.create_tweet(text=msg)

if __name__ == '__main__':
    search_tw("はてなブログ")
    create_tw("Tweetpyでの投稿テスト")

 

<実行結果:検索結果表示>

はてなブログに投稿しました | 
Editor Utility WidgetPythonCSV とやり取りする - You are done! https://t.co/7oZD2k4cEQ
=====================================================
はてなブログに投稿しました #はてなブログ
和気鵜飼谷温泉のサンシュユ - あの瞬間!俺たちは若かった!!
https://t.co/crwymFV1aW
=====================================================
RT @nikolaevbonifa1: 『京都御所無料ガイドツアー』詳細レポート!京都観光の穴場おすすめスポットです!

はてなブログ投稿しました!
旅人サイファのお出かけブログ https://t.co/jYRDy8XZnO
#ブログ更新 #旅人サイファ #旅行プランニン…
=====================================================
はてなブログに投稿しました #はてなブログ
東北新幹線に乗っていたら大地震に襲われた瞬間の動画 - ステレッパツ
https://t.co/ygB9UWF8qA
=====================================================
はてなブログに投稿しました #はてなブログ
来週(3月21日~3月25日)の投資戦略 - 儲ける&儲かる!株式投資、DC(確定拠出年金
https://t.co/6LMGdKKZAA
=====================================================
はてなブログに投稿しました #はてなブログ
初動相場追記
【タクティカル・マスターズ 当たり】フラゲで全収録カード判明!商品詳細&最新情報・現在の収録カードなど色々とまとめ! - 【遊戯王 最新情報】まいログ:遊戯王,TCGやトレンド情報まとめ
https://t.co/CcChJHp1tP
=====================================================
[はてなブログでフッタにコピーライトを記載する方法]
ブログのフッタに Copy Light を掲載してみました。

 #はてなブログ #ブログカスタマイズ
https://t.co/3lg2zubJUM
=====================================================
はてなブログに投稿しました #はてなブログ
おはようございます!素敵な3連休をお過ごしください!
★英語のレッスン★Phrasal verbs~LESSON 72 Come out~バケットリスト続き - Channel-Phrasalverbs’s blog
https://t.co/dplTeQA6JI
=====================================================
はてなブログに投稿しました #はてなブログ
やる気を上げる方法 - cocosapo-yusuke’s blog https://t.co/0b0xZNTcwZ
=====================================================
はてなブログに投稿しました #はてなブログ
【白銀の城のラビュリンス 価格 相場】初動相場,値上がり・高騰は?現在の相場をおさらい! - 【遊戯王 最新情報】まいログ:遊戯王,TCGやトレンド情報まとめ
https://t.co/dE3FC9FMcD
=====================================================

 

<実行結果:ツイート>

 

最後に

ウェブにある情報が、v1時代のものが多いようです。

v2になった以降の情報も、しっかり確認すればあるようなので、見極めが大事ですね。

自分が特にはまったところは、Write権限付与後に再度APIキーを発行しなおさないといけなかったところです・・・。

 

参考サイト:

【Python×Twitter】検索ツイートのデータ取得・分析|APIとtweepy活用による自動運用アプリ開発支援