(最終更新月:2022年1月)
✔このような方へ向けて書かれた記事となります
「tweepyって何?どんな事ができるの?」
「Python初心者だけど、きちんと使いこなせるか不安、、、」
「実例があるとわかりやすいんだけど、どこかに書いてないかな?」
✔当記事を通じてお伝えすること
- tweepyとは?tweepyでできること7選|初心者向け
- tweepy使用のスタートライン!APIオブジェクトの作成までを解説
- 【実践編】機能を実装する実例コードのご紹介
一緒に進めていくにあたって「Developerアカウントを持っていない」という方はこちら↓を参考に取得してください
tweepyとは?tweepyでできること7選|初心者向け
①機能の自動化
Pythonのコードでリツイート等の機能を操作することができます
プログラムでリツイート、いいね、DM、フォローなどの機能を実装すれば、自動化することも可能です
②自身のタイムラインを取得
最新の20ツイートを取得します
認証済みの場合、デフォルトで自身のタイムラインを取得します
引数でユーザーIDやスクリーンネームを指定した場合、特定のユーザーの20ツイートを取得することも可能です
③特定の単語を含むツイートを取得
特定の単語による検索機能を使い、該当するツイートを取得できます
④自分のツイートに対するリツイートを取得
自身のツイートに対する最新の20リツイートを取得できます
⑤ユーザー情報の取得
特定のユーザー情報を取得できます
⑥フォロー状況の確認
ユーザー間のフォロー状況をチェックすることができます
⑦エリアを指定し、トレンドを取得
エリアを指定し、50個のトレンドワードを取得することができます
地域IDは「WOEID」といい、Google検索などで各都道府県のIDを探すことができます
tweepy使用のスタートライン!APIオブジェクトの作成までを解説
上記の機能を使うには、認証済みのユーザーとしてapiオブジェクトの作成が必要です
インストールからapiオブジェクトの作成までのご説明していきます
①tweepyをインストールする
tweepyライブラリをインストールしよう!
pip install tweepy
②consumer key、consumer secret keyを取得する
「Developer Portal」ページ内、ユーザー情報の中からキーを取得します
Consumer Keysを選択してください
登録後、キーが提供されますが、コピー等を忘れた方は、regenerateで再度取得し直しましょう
既にアプリを作ってしまった人はキーが変更になるので、設定を書き換えましょう
初めての方は何もしなくても構いません
apiオブジェクトを作成する
ここからは、jupyter-notebookを使ってコードを書いていきます
モジュールのインポート
import tweepy, webbrowser
キーを変数へ格納
先程のキーを変数へ格納しておきます
consumer_key = “xxxxxxxxxxxxxx”
consumer_secret = “XXXXXXXXXXXXXX”
OAuthHandlerメソッド
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
authorize用の確認画面が開く
ユーザー認証のために「access_token」、「access_token_secret」を取得する必要があります
まずはtoken取得のためにPINを入手します
webbrowser.open(auth.get_authorization_url())
ブラウザが立ち上がり、PINが表示されます
7桁のPINをコピーしておきます
PINを変数に格納する
user_pin = input(“input pin number -> “)
input画面が出てくるので、user_pinに上記で出てきた数字を格納します
アクセストークンを取得する
auth.get_access_token(user_pin)
PINをauthに登録します
アクセストークンを保存して、次回以降使う場合
auth.set_access_token(access_token, access_token_secret)
ここで出てきたトークンは、今後も変更することはありません
トークンを保存しておくことで、次回以降はここまでのステップを省いて進めることができます!
apiオブジェクトを作成
api = tweepy.API(auth)
ユーザー認証の完了したapiオブジェクトを作成されました
全体のコードはこちら
import tweepy, webbrowser
consumer_key="xxxxxxxxxxxxx"
secret_key="XXXXXXXXXXXXXX"
auth = tweepy.OAuthHandler(consumer_key, secret_key)
webbrowser.open(auth.get_authorization_url())
user_pin_input = input("pin-> ")
auth.get_access_token(user_pin_input)
access_token="xXxXxXxXxXxXxXxXxXxX"
access_token_secret="XxXxXxXxXxXxXxXxXxXxXxXxXxXxXx"
auth.set_access_token(access_token, access_token_secret)
api=tweepy.API(auth)
【実践編】機能を実装するコードのご紹介
①機能の自動化
API.retweet(id)
API.direct_messages([since_id][, max_id][, count][, page][, full_text])
API.create_friendship(id/screen_name/user_id[, follow])
API.create_favorite(id, *, include_entities)
【例】
api.create_friendship("yulikepython")
②自身のタイムラインを取得
API.user_timeline(*, user_id, screen_name, since_id, count, max_id, trim_user, exclude_replies, include_rts)
【例】
api.user_timeline()
③特定の単語を含むツイートを取得
API.search_tweets(q[, lang][, locale][, rpp][, page][, since_id][, geocode][, show_user])
【例】
qs = api.search_tweets("web3", lang="ja")
for q in qs:
print(q.text)
④自分のツイートに対するリツイートを取得
API.get_retweets_of_me(*, count, since_id, max_id, trim_user, include_entities, include_user_entities)
【例】
api.get_retweets_of_me()
⑤ユーザー情報の取得
API.get_user(id/user_id/screen_name)
【例】
api.get_user(screen_name="yulikepython")
⑥フォロー状況の確認
API.get_friendship(*, source_id, source_screen_name, target_id, target_screen_name)
【例】
api.get_friendship(source_screen_name="yulikepython", target_screen_name="someone's screen_name")
⑦エリアを指定し、トレンドを取得する
API.get_place_trends(id *, exclude)
【例】
api.get_place_trends(id=1118370)
例として、東京のWOEID「1118370」でトレンドを取得しています
まとめ
当記事でご紹介した内容をまとめますと、下記のとおりです
- tweepyを使うと、PythonでTwitterを操作することができるようになります
- ツイートの自動化や、ユーザー周りのことなどほとんどの事が実現可能です
- 使用するためにはまずユーザー認証済のapiオブジェクトを作る必要がある
具体的なコードを知りたい方はいつでも当記事へ戻って確認してください
また、その他にもできることはあり、dirメソッドで見てみるとこの通りです
['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'add_list_member', 'add_list_members', 'auth', 'available_trends', 'cache', 'chunked_upload', 'chunked_upload_append', 'chunked_upload_finalize', 'chunked_upload_init', 'closest_trends', 'create_block', 'create_favorite', 'create_friendship', 'create_list', 'create_media_metadata', 'create_mute', 'create_saved_search', 'delete_direct_message', 'destroy_block', 'destroy_favorite', 'destroy_friendship', 'destroy_list', 'destroy_mute', 'destroy_saved_search', 'destroy_status', 'geo_id', 'get_blocked_ids', 'get_blocks', 'get_direct_message', 'get_direct_messages', 'get_favorites', 'get_follower_ids', 'get_followers', 'get_friend_ids', 'get_friends', 'get_friendship', 'get_list', 'get_list_member', 'get_list_members', 'get_list_memberships', 'get_list_ownerships', 'get_list_subscriber', 'get_list_subscribers', 'get_list_subscriptions', 'get_lists', 'get_media_upload_status', 'get_muted_ids', 'get_mutes', 'get_oembed', 'get_place_trends', 'get_profile_banner', 'get_retweeter_ids', 'get_retweets', 'get_retweets_of_me', 'get_saved_search', 'get_saved_searches', 'get_settings', 'get_status', 'get_user', 'home_timeline', 'host', 'incoming_friendships', 'list_timeline', 'lookup_friendships', 'lookup_statuses', 'lookup_users', 'media_upload', 'mentions_timeline', 'no_retweets_friendships', 'outgoing_friendships', 'parser', 'proxy', 'rate_limit_status', 'remove_list_member', 'remove_list_members', 'remove_profile_banner', 'report_spam', 'request', 'retry_count', 'retry_delay', 'retry_errors', 'retweet', 'reverse_geocode', 'search_30_day', 'search_full_archive', 'search_geo', 'search_tweets', 'search_users', 'send_direct_message', 'session', 'set_settings', 'simple_upload', 'subscribe_list', 'supported_languages', 'timeout', 'unretweet', 'unsubscribe_list', 'update_friendship', 'update_list', 'update_profile', 'update_profile_banner', 'update_profile_image', 'update_status', 'update_status_with_media', 'upload_host', 'user_agent', 'user_timeline', 'verify_credentials', 'wait_on_rate_limit']
たくさんありますが、使いたいものはぜひ試してみてください!