UTALI

書き溜めておいた技術記事や旅行記のバックアップです。

Twitter API を利用して Botで 自動フォロー を行う方法

Twitter API を利用して自動フォローを行う方法

POST friendships/create

認証済みユーザーが特定のIDのアカウントに対してフォローを行う。

成功時にはフォローしたアカウントのプロフィールがJSON形式でリスポンスとして返却される。 もしフォロー済みのアカウントに対して実行した場合はエラー403が帰ってくる。

アクセスポイント

https://api.twitter.com/1.1/friendships/create.json

パラメータ

説明 必須
screen_name フォロー対象のスクリーン名を指定する @chomad △(user_idを指定していない場合は必須)
user_id フォロー対象のユーザーIDを指定する 574725252 △(screen_nameを指定していない場合は必須)
follow フォロー対象のアカウントをお気に入りとして更新ごとに通知するように設定 false ×

実行例

Pythonを利用してTwitter APIでの自動フォローを体験してみましょう。

今回使うモジュールはこれです。

github.com

follow_test.py

from twitter import *

# ここにあなたの取得したアクセストークンを入れてください。

conf = {"accessToken":"4552442054-Hywvjhq5jh45gq345jh904jh045j0cbrg","accessTokenSecret":"G

y5ykq45jh0wj45kq45jh0w9690h4wj0I","consumerKey":"Uugj954jh04jh425j0upiCXH","consumerSecret":"y6kdiUgVDFejv5bh94hj024jhj24059hj2-4hb-2948jh29-5u"}

# ここにフォローしたいアカウントのスクリーン名を指定してください。

name = "@chomado"

t = Twitter(auth=OAuth(conf["accessToken"],conf["accessTokenSecret"],conf["consumerKey"],conf["consumerSecret"]))

t.friendships.create(screen_name=name,follow="false")

成功するとこのようにフォローしたアカウントのプロフィールがJSON形式で返却されます。

{'description': '文系エンジニア兼マンガ家|腐女子|Microsoftに入社しました|職業「テクニカルエバンジェリスト」|C#,Xamarin(ザマリン),松屋|応用情報技術者合格|漫画『コード学園』連載中 https://t.co/yTai357tiX|ヘッダ絵アイコン絵自作|本名:千代田まどか', 'profile_background_image_url': 'http://pbs.twimg.com/profile_background_images/789779664/9ea03a14c4e099ac3b30a45890c10383.jpeg', 'is_translator': False, 'lang': 'ja', 'listed_count': 747, 'location': 'localhost:801', 'profile_sidebar_border_color': 'FFFFFF', 'time_zone': 'Tokyo', 'url': 'https://t.co/kBNSgJyHod', 'notifications': False, 'profile_image_url': 'http://pbs.twimg.com/profile_images/428063035995869184/aSdLGr6h_normal.jpeg', 'contributors_enabled': False, 'protected': False, 'profile_link_color': 'CD9D94', 'translator_type': 'none', 'name': 'ちょまど@11/11(金)大阪で講演', 'profile_background_image_url_https': 'https://pbs.twimg.com/profile_background_images/789779664/9ea03a14c4e099ac3b30a45890c10383.jpeg', 'friends_count': 496, 'is_translation_enabled': False, 'has_extended_profile': True, 'followers_count': 18371, 'screen_name': 'chomado', 'favourites_count': 96143, 'profile_use_background_image': True, 'entities': {'description': {'urls': [{'indices': [95, 118], 'url': 'https://t.co/yTai357tiX', 'expanded_url': 'https://codeiq.jp/magazine/tag/codeacademy/', 'display_url': 'codeiq.jp/magazine/tag/c…'}]}, 'url': {'urls': [{'indices': [0, 23], 'url': 'https://t.co/kBNSgJyHod', 'expanded_url': 'http://aka.ms/chomado/', 'display_url': 'aka.ms/chomado/'}]}}, 'profile_image_url_https': 'https://pbs.twimg.com/profile_images/428063035995869184/aSdLGr6h_normal.jpeg', 'utc_offset': 32400, 'id_str': '949438177', 'verified': False, 'muting': False, 'geo_enabled': True, 'profile_background_color': 'EDBDB4', 'profile_sidebar_fill_color': 'E5507E', 'default_profile_image': False, 'default_profile': False, 'profile_background_tile': True, 'follow_request_sent': False, 'profile_text_color': '362720', 'id': 949438177, 'following': False, 'status': {'place': None, 'favorited': False, 'text': 'RT @chomado: @chomado \n新たなる日本語がww\n\n「What is オトナノアマサ? Sweet for adult? 」', 'source': '<a href="http://twitter.com/download/iphone" rel="nofollow">Twitter for iPhone</a>', 'id_str': '795590083147501568', 'retweeted_status': {'place': None, 'favorited': False, 'text': '@chomado \n新たなる日本語がww\n\n「What is オトナノアマサ? Sweet for adult? 」', 'source': '<a href="http://twitter.com/download/iphone" rel="nofollow">Twitter for iPhone</a>', 'id_str': '795589688400588800', 'retweet_count': 4, 'coordinates': None, 'truncated': False, 'in_reply_to_status_id': 795581464087695360, 'in_reply_to_status_id_str': '795581464087695360', 'favorite_count': 6, 'in_reply_to_screen_name': 'chomado', 'geo': None, 'lang': 'ja', 'id': 795589688400588800, 'in_reply_to_user_id': 949438177, 'in_reply_to_user_id_str': '949438177', 'created_at': 'Mon Nov 07 11:32:17 +0000 2016', 'is_quote_status': False, 'retweeted': False, 'contributors': None, 'entities': {'hashtags': [], 'symbols': [], 'user_mentions': [{'name': 'ちょまど@11/11(金)大阪で講演', 'id': 949438177, 'id_str': '949438177', 'indices': [0, 8], 'screen_name': 'chomado'}], 'urls': []}}, 'retweet_count': 4, 'coordinates': None, 'truncated': False, 'in_reply_to_status_id': None, 'in_reply_to_status_id_str': None, 'favorite_count': 0, 'in_reply_to_screen_name': None, 'geo': None, 'lang': 'ja', 'id': 795590083147501568, 'in_reply_to_user_id': None, 'in_reply_to_user_id_str': None, 'created_at': 'Mon Nov 07 11:33:51 +0000 2016', 'is_quote_status': False, 'retweeted': False, 'contributors': None, 'entities': {'hashtags': [], 'symbols': [], 'user_mentions': [{'name': 'ちょまど@11/11(金)大阪で講演', 'id': 949438177, 'id_str': '949438177', 'indices': [3, 11], 'screen_name': 'chomado'}, {'name': 'ちょまど@11/11(金)大阪で講演', 'id': 949438177, 'id_str': '949438177', 'indices': [13, 21], 'screen_name': 'chomado'}], 'urls': []}}, 'created_at': 'Thu Nov 15 09:59:48 +0000 2012', 'statuses_count': 50032, 'profile_banner_url': 'https://pbs.twimg.com/profile_banners/949438177/1452698072'}

WEBクライアントに戻って確認してみると・・・

f:id:mochizuki_p:20161107204543p:plain

このようにちゃんとフォローされています!

注意点

APIを利用した自動フォローを過剰に行うとすぐにアカウントが凍結されてしまいます。1日のフォロー数は多くとも50程度にとどめておく、また短い間に連続してフォローを実行しないなどの注意が必要です

正しい使い方は、たとえば自分と共通の趣味を持っている人をフォローするために検索APIを組み合わせてフォローを行うなどです。