Twitter API (python-twitter) の機能をマインドマップで整理してみる

Twitter APIの機能を網羅的に理解したいと思いこの記事を書きました。

以前、「予約投稿」という観点から、Twitter APIで出来ること/できないことを整理しましたが、Twitter APIを使い倒すには不十分でした。そこで、Twitter APIで提供される機能の全体像が分かりやすく整理されている日本語文献(英語苦手なので…)を探したのですが、見当たらなかったので、自分で整理してみようと思い至りました。

お品書きは以下の通りです。

  • マインドマップによる機能の整理
  • 各機能とモジュールの対応
    • ①プロフ・ユーザー・DM・いいね・投稿
    • ②ミュート・ブロック・フォロー/被フォロー・リスト

マインドマップによる機能の整理」では、Twitter APIで提供される機能の全体像を整理し、
各機能とモジュールの対応」では、上述の機能とそれを実現するpython-twitterモジュールの対応関係を整理しています。

マインドマップによる機能の整理

早速ですが、Twitter APIで利用できる機能には以下のようなものがあります。ご存知の方も多いでしょうが、Twitterアプリ上で実現出来ることの多くが、Twitter APIによってカバーされているようです。

現段階で分かっている「出来ないこと」は以下の通りです。使い倒す過程で判明したものを、適宜追加していこうと思います。

  • 予約投稿の機能はない(投稿機能はある)
  • 投稿をいいねしたユーザー一覧を取得する機能はない(RTしたユーザー一覧を取得する機能はある)
  • 過去のフォロー/フォロワー数を取得する機能はない(現在のフォロー/フォロワー数は取得する機能はある)

なお、今回参考にしたのは、python-twitterというライブラリの公式ドキュメントです。
ドキュメントに記載されているモジュールのうち、主要なものを独断と偏見でピックアップし、私がしっくりくる軸で整理しました。

余談ですが、マインドマップのツールには、Brainioを使いました。今回初めてこのツールを使いましたが、下記のように、マークダウン記法とGUIを併用できるので、とても便利でした!

各機能とモジュールの対応

以降、前述のマインドマップで触れた各機能に対応するモジュール一覧をご紹介します。マインドマップと合わせてレファレンス的に使っていただければ幸いです。
※複数行記載している機能は、類似するモジュールが複数あるものです。詳細は、公式ドキュメントにてご確認いただければと思います。

紹介するモジュールは、下記の要領で実行可能なはずです。

import twitter #今回使うTwitter APIのライブラリ
import config #Twitter APIにアクセスするための情報を記録したもの

api = twitter.Api(consumer_key=config.CONSUMER_KEY,
                  consumer_secret=config.CONSUMER_SECRET,
                  access_token_key=config.ACCESS_TOKEN,
                  access_token_secret=config.ACCESS_TOKEN_SECRET
)

api.[以下で紹介するモジュール]

①プロフ・ユーザー・DM・いいね・投稿

カテゴリ機能モジュール
プロフプロフバナー更新UpdateBanner(image, include_entities=False, skip_status=False)
プロフプロフ画像更新UpdateImage(image, include_entities=False, skip_status=False)
プロフプロフ更新UpdateProfile(name=None, profileURL=None, location=None, description=None, profile_link_color=None, include_entities=False, skip_status=False)
ユーザーユーザーIDに対応するユーザー情報※の取得
※GetUserの返り値が持つ属性情報(statuses_count、followers_count、friends_countなど)を参照すれば、投稿数、フォロー数、フォロワー数などの情報が確認出来る
GetUser(user_id=None, screen_name=None, include_entities=True, return_json=False)
ユーザー検索ワードに関連するユーザー一覧の取得GetUsersSearch(term=None, page=1, count=20, include_entities=None)
DMDMの削除DestroyDirectMessage(message_id, include_entities=True, return_json=False)
DMDMの送信PostDirectMessage(text, user_id=None, media_file_path=None, media_type=None, screen_name=None, return_json=False)
DM受信したDM一覧の取得(自分のみ)GetDirectMessages(since_id=None, max_id=None, count=None, include_entities=True, skip_status=False, full_text=False, page=None, return_json=False)
DM送信したDM一覧の取得(自分のみ)GetSentDirectMessages(since_id=None, max_id=None, count=None, page=None, include_entities=True, return_json=False)
いいねいいねCreateFavorite(status=None, status_id=None, include_entities=True)
いいねいいねの取り消しDestroyFavorite(status=None, status_id=None, include_entities=True)
いいねユーザーがいいねした投稿一覧の取得GetFavorites(user_id=None, screen_name=None, count=None, since_id=None, max_id=None, include_entities=True, return_json=False)
投稿:全般Tweetの投稿PostUpdate(status, media=None, media_additional_owners=None, media_category=None, in_reply_to_status_id=None, auto_populate_reply_metadata=False, exclude_reply_user_ids=None, latitude=None, longitude=None, place_id=None, display_coordinates=False, trim_user=False, verify_status_length=True, attachment_url=None)
投稿:全般Tweetの投稿
(ただし、文字数が超過した場合には複数投稿に分割する)
PostUpdates(status, continuation=None, **kwargs)
投稿:全般投稿の削除DestroyStatus(status_id, trim_user=False)
投稿:全般タイムラインの取得(自分のみ)GetHomeTimeline(count=None, since_id=None, max_id=None, trim_user=False, exclude_replies=False, contributor_details=False, include_entities=True)
投稿:全般投稿の検索GetSearch(term=None, raw_query=None, geocode=None, since_id=None, max_id=None, until=None, since=None, count=15, lang=None, locale=None, result_type=’mixed’, include_entities=None, return_json=False)
投稿:全般status idに対応する投稿情報の取得
※GetStatusの返り値が持つ属性情報(created_at、retweet_count、retweet_countなど)を参照すれば、投稿日時、いいね数、RT数などの情報が確認出来る
GetStatus(status_id, trim_user=False, include_my_retweet=True, include_entities=True, include_ext_alt_text=True)
投稿:全般status idsに対応する投稿情報の取得(複数のidを指定可能)GetStatuses(status_ids, trim_user=False, include_entities=True, map=False)
投稿:全般ユーザーの投稿一覧の取得GetUserTimeline(user_id=None, screen_name=None, since_id=None, max_id=None, count=None, include_rts=True, trim_user=False, exclude_replies=False)
投稿:返信自分への返信一覧の取得(自分のみ)GetReplies(since_id=None, count=None, max_id=None, trim_user=False)
投稿:RT投稿をRTしたユーザー一覧の取得GetRetweeters(status_id, cursor=None, count=100, stringify_ids=False)

GetRetweets(statusid, count=None, trim_user=False)
投稿:RTRTされた自分の投稿一覧の取得(自分へのRTのみ)GetRetweetsOfMe(count=None, since_id=None, max_id=None, trim_user=False, include_entities=True, include_user_entities=True)
投稿:RT自分がRTした投稿一覧の取得(自分のRTのみ)GetUserRetweets(count=None, since_id=None, max_id=None, trim_user=False)
投稿:RTRTの投稿PostRetweet(status_id, trim_user=False)
投稿:メンションユーザーがメンションされた投稿一覧の取得GetMentions(count=None, since_id=None, max_id=None, trim_user=False, contributor_details=False, include_entities=True, return_json=False)

②ミュート・ブロック・フォロー/被フォロー・リスト

カテゴリ機能モジュール
ブロックブロックCreateBlock(user_id=None, screen_name=None, include_entities=True, skip_status=False)
ブロックブロックの解除DestroyBlock(user_id=None, screen_name=None, include_entities=True, skip_status=False)
ブロック自分がブロックしているユーザー一覧の取得(自分のみ)GetBlocks(skip_status=False, include_entities=False)

GetBlocksIDs(stringify_ids=False)

GetBlocksIDsPaged(cursor=-1, stringify_ids=False)
ミュートミュートCreateMute(user_id=None, screen_name=None, include_entities=True, skip_status=False)
ミュートミュートの解除DestroyMute(user_id=None, screen_name=None, include_entities=True, skip_status=False)[
ミュート自分がミュートにしたユーザー一覧の取得(自分のみ)GetMutes(skip_status=False, include_entities=False)

GetMutesIDs(stringify_ids=False)

GetMutesIDsPaged(cursor=-1, stringify_ids=False)
フォロー/被フォローフォローCreateFriendship(user_id=None, screen_name=None, follow=True, retweets=True, **kwargs)
フォロー/被フォローフォローの解除DestroyFriendship(user_id=None, screen_name=None)
フォロー/被フォローフォロー/解除UpdateFriendship(user_id=None, screen_name=None, follow=True, retweets=True, **kwargs)
フォロー/被フォローユーザーのフォロー一覧の取得GetFriendIDs(user_id=None, screen_name=None, cursor=None, count=None, stringify_ids=False, total_count=None)

GetFriendIDsPaged(user_id=None, screen_name=None, cursor=-1, stringify_ids=False, count=5000)

GetFriends(user_id=None, screen_name=None, cursor=None, count=None, total_count=None, skip_status=False, include_user_entities=True)

GetFriendsPaged(user_id=None, screen_name=None, cursor=-1, count=200, skip_status=False, include_user_entities=True)
フォロー/被フォローユーザーのフォロワー一覧の取得GetFollowerIDs(user_id=None, screen_name=None, cursor=None, stringify_ids=False, count=None, total_count=None)

GetFollowerIDsPaged(user_id=None, screen_name=None, cursor=-1, stringify_ids=False, count=5000)

GetFollowers(user_id=None, screen_name=None, cursor=None, count=None, total_count=None, skip_status=False, include_user_entities=True)

GetFollowersPaged(user_id=None, screen_name=None, cursor=-1, count=200, skip_status=False, include_user_entities=True)
フォロー/被フォローフォロー申請を保留中のユーザー一覧の取得(自分のみ)IncomingFriendship(cursor=None, stringify_ids=None)
フォロー/被フォロー自分とユーザーとのフォロー関係の取得(自分にフォローされているか、自分をフォローしているか)LookupFriendship(user_id=None, screen_name=None, return_json=False)
フォロー/被フォロー自分がフォロー申請中のユーザー一覧の取得(自分のみ)OutgoingFriendship(cursor=None, stringify_ids=None)
フォロー/被フォロー特定のユーザーA/Bの間のフォロー関係の取得(ユーザーAがBにフォローされているか、AがBをフォローしているか)ShowFriendship(source_user_id=None, source_screen_name=None, target_user_id=None, target_screen_name=None)
リストリストの作成CreateList(name, mode=None, description=None)
リストリストにメンバーを追加CreateListsMember(list_id=None, slug=None, user_id=None, screen_name=None, owner_screen_name=None, owner_id=None)
リストリストをフォローCreateSubscription(owner_screen_name=None, owner_id=None, list_id=None, slug=None)
リストリストを削除DestroyList(owner_screen_name=None, owner_id=None, list_id=None, slug=None)
リストリストからメンバーを削除DestroyListsMember(list_id=None, slug=None, owner_screen_name=None, owner_id=None, user_id=None, screen_name=None)
リストリストのフォローを解除DestroySubscription(owner_screen_name=None, owner_id=None, list_id=None, slug=None)
リストリストに登録されているユーザー一覧の取得GetListMembers(list_id=None, slug=None, owner_id=None, owner_screen_name=None, skip_status=False, include_entities=False)

GetListMembersPaged(list_id=None, slug=None, owner_id=None, owner_screen_name=None, cursor=-1, count=100, skip_status=False, include_entities=True)
リストリストへの投稿一覧の取得GetListTimeline(list_id=None, slug=None, owner_id=None, owner_screen_name=None, since_id=None, max_id=None, count=None, include_rts=True, include_entities=True, return_json=False)
リストユーザーが作成したリスト一覧の取得GetLists(user_id=None, screen_name=None)

GetListsPaged(user_id=None, screen_name=None, cursor=-1, count=20)
リストユーザーがフォローしているリスト一覧の取得GetListsList(screen_name=None, user_id=None, reverse=False, return_json=False)

GetSubscriptions(user_id=None, screen_name=None, count=20, cursor=-1, return_json=False)
リストユーザーがメンバー登録されているリスト一覧の取得GetMemberships(user_id=None, screen_name=None, count=20, cursor=-1, filter_to_owned_lists=False, return_json=False)
リスト特定のユーザーが特定のリストをフォローしているかどうかShowSubscription(owner_screen_name=None, owner_id=None, list_id=None, slug=None, user_id=None, screen_name=None, include_entities=False, skip_status=False, return_json=False)

最後に

最後までご覧いただきありがとうございました。
繰り返しの案内になりますが、詳細に関しては公式ドキュメントをご覧ください。

以上!またどこかでお会いしましょう!

コメントを残す