【Python】TwitterのAPI を利用してBotを作る その①

TwitterでBotを作る

今回はTwitterで一定時間ごとにツイートしたりするBotを作っていきたいと思います。Botを作るためにはTwitterが公開しているAPIを使うと簡単にできます。

TwitterのAPI管理サイト(https://apps.twitter.com/)にアクセスし、対象のアカウントでログインしましょう。ログインすると、Create New App(新しいアプリケーションを作成する)ボタンが表示されるのでクリックします。

必須情報の入力を求められますが、適当で問題ありません。(ただ2018年以降はアカウントに携帯電話番号を紐づけないとAPI鍵が作成できないみたいです。)そして下部のCreate your Twitter applicationボタンをクリックします。

アクセストークンの発行

初期では、Access TokenとAccess Token Secretは発行されていないので、同ページ下部のCreate my access tokenボタンをクリックして、生成する必要があります。つまり、Twitter API の OAuth 認証を行うには以下の4つの key が必要ということになります。

Consumer key
Consumer secret
Access token
Access token secret

スポンサーリンク

TwitterのAPIを触るのに必須なライブラリ

今回使うのはrequestsrequests-oauthlibというライブラリです。requestはスクレイピングとかしている人にはお馴染みのAPI操作ライブラリで、requests-oauthlibはoauth認証を簡単にするためのライブラリです。

ツイートを投稿

from requests_oauthlib import OAuth1Session
CK = 'XXXXXXXXXXXXXXXXXXXXXX' # Consumer Key
CS = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' # Consumer Secret
AT = 'XXXXXXXXX-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' # Access Token
AS = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' # Accesss Token Secert


# ツイート投稿用のURL
url = "https://api.twitter.com/1.1/statuses/update.json"

# ツイート本文
params = {"status": "Hello, World!"}

# OAuth認証で POST method で投稿
twitter = OAuth1Session(CK, CS, AT, AS)
req = twitter.post(url, params = params)

# レスポンスを確認
if req.status_code == 200:
    print ("OK")
else:
    print ("Error: %d" % req.status_code)

https://qiita.com/yubais/items/dd143fe608ccad8e9f85より引用

タイムラインの取得

# タイムライン取得用のURL 
url = "https://api.twitter.com/1.1/statuses/home_timeline.json"

# とくにパラメータは無い
params = {}

# タイムラインを取得する
twitter = OAuth1Session(CK, CS, AT, AS)
req = twitter.get(url, params = params)

if req.status_code == 200:
    # レスポンスはJSON形式なので parse する
    timeline = json.loads(req.text)
    # 各ツイートの本文を表示
    for tweet in timeline:
        print(tweet["text"])
else:
    # エラーの場合
    print ("Error: %d" % req.status_code)

あとはURLとparamsを書き換えればほぼ何でも出来るみたいです。提供されているAPIの一覧はこちら。(英語)→https://dev.twitter.com/docs/api/1.1

API制限

APIを使う場合はサーバーに負荷をかけ過ぎないようにアクセス頻度を制限されることがありTwitterの場合は15分に15回という設定になっているので注意しましょう。

ここから何ができるか

  • 検索APIを使って特定キーワードのツイートを蓄積する
  • user_timeline で特定ユーザーのツイートを集めて並べて愉しむ
  • crontab で定期ツイート投稿してbotを作る

これらを駆使するとびよーんみたいな非公式クライアントアプリが作れたりします。

関連記事:【Python】Tweepyで検索に引っかかったツイートを自動ファボ

関連記事:【Python】Tweepyで相互フォローの確認&フォロバとリムーブ

関連記事:【2019年版】Python+Seleniumでツイッターに自動ログインする

参考:https://qiita.com/yubais/items/dd143fe608ccad8e9f85

プログラミングの独学はとても難しい


プログラミングは小学校の義務教育にも導入され始めており、これから社会人として生きていく上でプログラミングはもはや出来て当たり前、出来なれば論外というエクセルレベルの必須スキルになりつつあります。そしてそういう話を聞いて参考書なりを購入して独学でプログラミング勉強しようと思っている人も少なくないでしょう。しかしプログラミングを独学で勉強し始めようと思うものの



・「分からない箇所で詰まって挫折してしまった」

・「勉強する時間が足りない」

・「ネットの記事だと情報が断片的でよくわからない」

・「コードのエラーの原因が分からない」



という壁にぶち当たって、プログラミングの勉強を止めてしまう方が少なくありません。独学でプログラミングを勉強してる時間のほとんどはつまづいている時間です。実際僕も最初のころ独学でプログラミングを勉強していた頃はエラーの原因が分からず丸1日を不意にしてしまった・・・そんな苦い経験がありました。それで僕は一度はプログラミングの学習を諦めてしまいましたが、就活で現実を知る中で



「プログラミングを勉強して、いずれフリーランスとして自由な生き方がしたい」

「エンジニアとして若いうちから高収入を得たい」



という強い気持ちから一念発起して「侍エンジニアのwebサービスコース」に申し込み、プロのエンジニアの方に対面でマンツーマンでPythonによるWebサービス作り方とWeb技術の基本を教えてもらい、ようやくプログラミングが理解でき、今ではエンジニアとしてそこそこの暮らしができるようになりました。





侍エンジニアでは、とりあえずプログラミングやインターネットの基本を知っておきたい人から、HTML・cssなどでWebサイトやWebアプリを作ってみたい人やPythonを勉強してデータサイエンティストやAIエンジニアになりたい人まで幅広いニーズに応えた様々なコースが用意されています。



IT業界と言ってもエンジニアの仕事はプログラミング言語次第でサーバーから機械学習・ディープラーニングまで多種多様ですし、侍エンジニアの無料レッスン(カウンセリング)を受けてみて、自分のやりたいITの仕事は何なのか?を見つけるのがエンジニアへの第一歩になります。ちなみに今侍エンジニアの無料レッスンを受けると1000円分のAmazonギフト券がもらえるので、試しに受けてみるだけもお得です。


自分は半端に独学やオンラインスクールで勉強して金と時間を無駄にするくらいなら、リアルのプログラミングスクールに通ってしっかりプログラミングを勉強した方がいいと思います。ちなみに今、侍エンジニアに申し込むと、25歳以下の学生の方であれば、受講料が20%OFFになるので超お得です。


そして、プログラミングは大勢で授業を受けたり漫然とオンライン学習をするよりも自分が分からない箇所をピンポイントでプロの講師に直接質問して、ちゃんと納得するというスタイルの方がお金は確かに少し掛かりますが、独学で学ぶよりも絶対にモノになります。


シェアする

  • このエントリーをはてなブックマークに追加

フォローする

   侍エンジニア塾       
侍エンジニアの無料体験レッスンを予約する -->