##はじめに
Python Tweepyを使ってツイートの送信・取得・検索やユーザーのフォロワーの確認、DMの確認・送信をしてみた。
##TweepyのinstallとTwitter Developerの登録
tweepyを使うにはTwitter APIが必要なので、下記の公式tweepyドキュメンテーションを見て、twitter developersへ登録する。もちろんクライアント側はpython moduleも必要なので、tweepyをinstallする。tweepyの使い方も以下のリンク資料に書いてある。
pip install tweepy
認証キーの設定とOAuth認証、APIのインスタンス生成
IDやパスワードが不要でアプリケーション間の連動ができるOAuth認証を採用しており、各ユーザーがアクセスキーを生成してそのアクセスキーで認証を行う。Webシステムとの対話は、URL形式でHTTP Request/Responseをするtwitter REST APIでアクセスすることができ、得られたレスポンスはModel class instanceとして、INSTANCE.CLASSで各classにアクセスすることができる。
consumer_key = "API key"
consumer_secret = "API secret key"
access_token = "Access token"
access_token_secret = "Access token secret"
auth = tweepy.OAuthHandler(consumer_key,consumer_secret)
auth.set_access_token(access_token,access_token_secret)
api = tweepy.API(auth)
###1. ツイートする
user = 'my_userid'
message = "Hello!"
api.update_status(message)
###2. 特定のユーザーのtimeline取得
user = 'qiita_python'
for i, status in enumerate(tweepy.Cursor(api.user_timeline,id=user,tweet_mode="extended").items(10)):
print(i," : ",status.full_text)
###3. 特定のユーザーをフォローしている人フォローされている人を取得
user = "qiita_python"
print("Name : @Name")
for status in tweepy.Cursor(api.friends,id=user).items(10):
print("%s : %s "%(status.name,status.screen_name) )
print("-"*100)
for status in tweepy.Cursor(api.followers,id=user).items(10):
print("%s : %s "%(status.name,status.screen_name) )
###4. 特定のユーザーのプロフィールを取得
user_id = "qiita_python"
user = api.get_user(user_id)
print(user.description)
print(user.profile_image_url_https)
###5. 特定のユーザーのメディアファイルをダウンロードする
key_account = 'qiita_python'
search_results = tweepy.Cursor(api.user_timeline, screen_name=key_account, include_rts=False, tweet_mode='extended', include_entities=True).items(10)
for result in search_results:
if hasattr(result, 'extended_entities'):
ex_media = result.extended_entities['media']
for image in ex_media:
image_url = image['media_url']
image_name = image_url.split("/")[len(image_url.split("/"))-1]
urllib.request.urlretrieve(image_url + ':orig', 'img/' + image_name)
else:
print('No media')
###6. 特定ユーザーへDMの送信
ID = 'qiita_python'
text = 'Hello!'
event = {
"event": {
"type": "message_create",
"message_create": {
"target": {
"recipient_id": ID
},
"message_data": {
"text": text
}
}
}
}
api.send_direct_message_new(event)
###7. 受け取ったDMの確認
direct_messages = api.list_direct_messages()
for direct_message in direct_messages:
print(direct_message)
###8. 特定箇所から半径何km圏内のツイートを検索して、ユーザーと内容を取得
for status in tweepy.Cursor(api.search,q="東京駅",geocode="35.681698005508686,39.7671958524044,10km").items(10):
if "location" in status._json["user"].keys():
print("%s : %s : %s" %(status.created_at,status.user.location,status.text))
else:
print("%s : nan : %s" %(status.created_at,status.text))
##まとめ
Python Tweepyを使ってみた。
できることは以下の公式ページに書いてるので、それを参考にすればしたいことができると思います。
Twitter API v1.1 Reference