tweepyを使用したtwitter apiの操作
前提条件
Twitter APIの使用申請を行い下記のkeyやtokenを取得していること
- Consumer_key
- Consumer_secret
- Access_token
- Access_secret
参考:Twitter API 登録 (アカウント申請方法) から承認されるまでの手順まとめ ※2019年8月時点の情報 - Qiita https://qiita.com/kngsym2018/items/2524d21455aac111cdee
サンプル
実際に試してみる。tweepyはtwitter apiを簡単に使うためのwrapperなので短いコードでtwitterの基本的操作をすることが出来る。
tweepyのimportと接続認証
取得したkeyとtokenの設定、及びtwitterオブジェクトの生成、認証周りを行う。
import tweepy
Consumer_key = 'xxxxxxxxxxxxxxx'
Consumer_secret = 'xxxxxxxxxxxxxxxxxxx'
Access_token = 'xxxxxxxxxxxxxxxxxxxxxxxx'
Access_secret = 'xxxxxxxxxxxxxxxxxxx'
# Twitterオブジェクトの生成
auth=tweepy.OAuthHandler(Consumer_key,Consumer_secret)
auth.set_access_token(Access_token,Access_secret)
api=tweepy.API(auth)
特定ユーザのタイムラインを表示する
status=api.user_timeline(id='zatoima1')[0]
print(status.user.name)
print(status.text)
結果
zato
RT @motikiro2: パソコンの排気口を塞ぐツボツボとネコネコ https://t.co/fbfq7GDLbK
statusオブジェクトには下記の情報が格納されるためこちらを参照することで各種操作を自動化することが可能。
オブジェクト | 格納情報 |
---|---|
status.text | ツイート |
status.id | ツイート固有のID |
status.in_reply_to_status_id | リプライ先のツイートID |
status.retweet_count | リツイート数 |
status.favorite_count | いいねの数 |
status.user.name | ユーザー名 |
status.user.screen_name | スクリーンネーム(@zatoima1) |
status.user.friends_count | フォロー数 |
status.user.followers_count | フォロワー数 |
status.user.description | 自己紹介 |
その他の格納情報についてはこちらも参照。
tweepyのstatusオブジェクトに格納される情報一覧 | my opinion is my own https://zatoima.github.io/twitter-api-tweepy-status-list.html
特定ツイートの自動いいね、自動リツイート、自動フォロー
次にこのオブジェクトを使用してbot作成に役に立ちそうな例を記載する。例えば下記のpythonのコードではAWSという文言を含むツイートを20件検索している。検索に引っかかったツイートからユーザ情報やツイート情報を取得して"status"オブジェクトに格納。statusオブジェクトに格納されているツイートやユーザに対して、「①いいね」、「②リツイート」、「③フォロー」を実施している。
この例では検索して引っかかったキーワードに対しての操作だが、Twitterに関わる操作であればほとんど出来るみたいなので、Twitter botや特定キーワードに対して瞬時にいいねをするアカウントはこの辺を自動化しているためなんだな、と実感。
q_list=["#AWS"]
count=20
for q in q_list:
print("Now:QUERY-->>{}".format(q))
search_results=api.search(q=q,count=count)
for status in search_results:
tweet_id=status.id
user_id=status.user.name
try:
api.create_favorite(tweet_id)
api.retweet(tweet_id)
api.create_friendship(user_id)
except:
pass
print("Done:QUERY-->>{}".format(q))
※いいね、リツイート、フォローには回数制限があるので注意が必要。凍結リスクがあります。ご注意ください。
開発者契約およびポリシー ‒ Twitter開発者 https://developer.twitter.com/ja/developer-terms/agreement-and-policy
関連しているかもしれない記事
- The installed version of lxml is too old to be used with openpyxl のエラー対応
- Pythonista 3を使ってiPhone上でpython実行環境を構築する