Help us understand the problem. What is going on with this article?

PythonとTwitterAPIを用いて自動いいねやリツイート、フォローを行う

More than 1 year has passed since last update.

TwitterAPIとは?

簡単に言うと、TwitterAPIに登録すると、プログラムを介した自動いいねや自動リツイート、ツイートの投稿や、取得などのアクセスを許可しますよ。という感じである。多分・・・

詳しくはこちらをご覧ください

TwitterAPIに登録しよう

では早速プログラムを書く上で必要になってくるアクセスキーなどを取得するために、TwitterAPIに登録しましょう。

登録の仕方はこちらの記事を参考にしてください。

実際にコードを書いていく前の準備

APIの認証が済んだらtweepyのインストールをして下さい。

ターミナル
$ pip3 install tweepy



インストールが済んだら実際にコードを書いていきましょう。

自動いいね

まずは、取得したキーの設定から

API key
API secret key
Access token
Access token secret

この4つのキーを、自動いいねのコードとは別ファイルに記述します。
ここでは、キーの記述用ファイルをconfig.pyとします。

config.py
CONFIG = {
    "CONSUMER_KEY":"自分の API key を記入",
    "CONSUMER_SECRET":"自分の API secret key を記入",
    "ACCESS_TOKEN":"自分の Access token を記入",
    "ACCESS_SECRET":"自分の Access token secret を記入",
   }



キーの設定が終わったら、自動いいねのコードを書くファイルに、キーの呼び出しをする記述を書いていきます。

twitter.py
import tweepy
from config import CONFIG

CONSUMER_KEY = CONFIG["CONSUMER_KEY"]
CONSUMER_SECRET = CONFIG["CONSUMER_SECRET"]
ACCESS_TOKEN = CONFIG["ACCESS_TOKEN"]
ACCESS_SECRET = CONFIG["ACCESS_SECRET"]



先ほどインストールしたtweepyとキーの設定を行なったファイルconfig.pyからCONFIGを使える様にします。

そして、それぞれの変数に代入しています。

これでAPIを利用したコードを書く準備は整ったので、上記のコードに下記のコードを追記してください。

twitter.py
auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)

auth.set_access_token(ACCESS_TOKEN, ACCESS_SECRET)

api = tweepy.API(auth)
# ↑↑↑   インスタンス作成    ↑↑↑


search_results = api.search(q="映画", count=100)
# ↑↑↑    ここでツイートの検索をしています。    ↑↑↑


for result in search_results:
    tweet_id = result.id
    try:
        api.create_favorite(tweet_id)
    except Exception as e:
        print(e)
# ↑↑↑    ここでいいねしています    ↑↑↑



上記の流れについて解説します。

まず一番上のコードで、設定したキーを用いてAPIのインスタンスを作成しています。
TwitterAPIを用いる時に必要だという認識で大丈夫かと思います。

その次に、searchメソッドを用いて、ツイートの検索をしています。
引数のq ="映画"というキーワードを設定して、count = 100で100件という条件を指定。

つまり、映画というキーワードが含まれるツイートを100件取得していることになります。
その結果をsearch_resultsに代入した後にfor文を用いて、取得したツイート1件1件に
api.create_favorite(tweet_id)でいいねしています。

tweepyには様々なメソッドが用意されているので、他のメソッドが知りたい方はこちらを参考にしてください。

try:及びexcept Exception as e:の例外処理についての説明は割愛させていただきますが
詳しく知りたい方はこちらの記事を参考にしてください。

では、プログラムを実行してみましょう。

ターミナル
$ python twitter.py


実行すると、自動でいいねされます。

では、検索したツイートをいいねだけでなく、リツイートとそのツイート主をフォローする様にしてみましょう。
確認がしやすい様に、先ほどとは別のキーワードで検索してみます。

twitter.py
search_results = api.search(q="エンジニア", count=100)

for result in search_results:
    tweet_id = result.id
    user_id = result.user._json['id']  # ←追記
    try:
        api.create_favorite(tweet_id)
        api.retweet(tweet_id)          # ←追記
        api.create_friendship(user_id) # ←追記
    except Exception as e:
        print(e)


上記のコードについて少し解説します。

.retweet()メソッドでリツイートができます。引数はツイートのidになるのでいいねの時と同様にtweet_idを引数に渡します。

.create_friendship()メソッドを使ってフォローをするわけですが、引数にはuserのidが必要です。
なので、user_id = result.user._json['id']でuserのidを取得しています。

これでプログラムを実行すると、キーワード検索で取得したツイートに、いいねやリツイートをして、ツイート主のフォローが自動でできているかと思います。

この様に、TwitterAPIを用いると、プログラムを介してのアクセスが簡単にできます。
他にもデータ分析などの使い道があるので興味がある方は調べてみてください。

完成したコード

twitter.py
import tweepy
from config import CONFIG

CONSUMER_KEY = CONFIG["CONSUMER_KEY"]
CONSUMER_SECRET = CONFIG["CONSUMER_SECRET"]
ACCESS_TOKEN = CONFIG["ACCESS_TOKEN"]
ACCESS_SECRET = CONFIG["ACCESS_SECRET"]

auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)

auth.set_access_token(ACCESS_TOKEN, ACCESS_SECRET)

api = tweepy.API(auth)

search_results = api.search(q="エンジニア", count=100)

for result in search_results:
    tweet_id = result.id
    user_id = result.user._json['id']  # ←追記
    try:
        api.create_favorite(tweet_id)
        api.retweet(tweet_id)          # ←追記
        api.create_friendship(user_id) # ←追記
    except Exception as e:
        print(e)


おわりに

検索キーワードを複数指定したい場合には、リストにキーワードを複数入れるやり方もあります。

twitter.py
q_list = ["映画","#アベンジャーズ","#サノス"]
count  = 50

for q in q_list:
    search_results = api.search(q=q, count=count)
    for result in search_results:
        tweet_id = status.id
        user_id  = result.user._json['id']
        try:
            api.create_favorite(tweet_id)
            api.retweet(tweet_id)
            api.create_friendship(user_id)
        except Exception as e:
            print(e)


もし、複数キーワードを設定したいという方がいたらこのやり方でやってみてください。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away