1
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Python Tweepy備忘録

Last updated at Posted at 2021-08-06

##はじめに
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

1
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?