Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

【Python】Tweepyを使ってTwitterで自動いいね

More than 1 year has passed since last update.

Python

Pythonの勉強として、今回はTwitterいいねbotを作ってみました。Pythonは豊富なライブラリをが揃っていますのでとても魅力的です。

目的

Pythonのライブラリであるtweepyを使って、Twitterで自動いいねができるプログラムを作る。

環境

  • MacOS
  • Python 3.8.0
  • Tweepy(ライブラリ)

Twitter API

まずTwitterAPIを使うために開発者の登録が必要です。登録は以下のURLから可能です。
https://developer.twitter.com/

登録手順に関しては、ここでは省略します。
今回の開発で必要なのは、consumer_key, consumer_secret_key, access_token_key, access_token_secret_key の4つです。登録手順は以下の記事を参考にするといいです。写真付きでわかりやすいです。
https://qiita.com/kngsym2018/items/2524d21455aac111cdee

Tweepyをインストール

以下のコマンドでTweepyのインストールをおこなってください。

$ pip3 install tweepy

コード

インストールが完了した後、コードを書くためのファイルを作成します。今回はtweepyというディレクトリーを作成します。その中にtweet_liked.pyというファイルを作成し、以下のコードを書いてください。

tweepy/tweet_liked.py
import tweepy
import time

# consumer 第一引数に(consumer key) 第二引数に(consumer secret) #
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
# ACCESS_TOKEN_KEY 第一引数に(Access token) 第二引数に(Access token secret) #
auth.set_access_token(access_token_key, access_token_secret)

# wait_on_rate_limit = レート制限が補充されるのを自動的に待つかどうか #
# wait_on_rate_limit_notify = Tweepyがレート制限の補充を待っているときに通知を出力するかどうか #
api = tweepy.API(auth, wait_on_rate_limit=True, wait_on_rate_limit_notify=True)


# '#ブログ, #旅行'をそれぞれ3件ずついいね #
# 取得したいキーワード #
search_list = ['#ブログ', '#旅行']
# ツイート数3件 #
tweet_count = 3

for search in search_list:
    print('Searching... {}' .format(search))
    # サーチ結果 #
    search_result = api.search(q=search, count=tweet_count)
    for tweet in search_result:
        tweet_id = tweet.id
        try:
            # いいねの処理 #
            api.create_favorite(id=tweet_id)
            print('Tweet_liked')
            time.sleep(4)
        except tweepy.TweepError as e:
            print(e.reason)
        except StopIteration:
            break


##########################################################################
# いいねは24時間で1000件まで。1000件以上いいねをするとペナルティを受けます。 #
##########################################################################

解説

インポート

tweepy/tweet_liked.py
import tweepy
import time

まず、先ほどインストールしたtweepyと今回はtimeをインポートし有効化します。

APIの設定

tweepy/tweet_liked.py
# CONSUMER 第一引数に(consumer key) 第二引数に(consumer secret) #
auth = tweepy.OAuthHandler('consumer_key', 'consumer_secret')
# ACCESS_TOKEN_KEY 第一引数に(Access token) 第二引数に(Access token secret) #
auth.set_access_token('access_token_key', 'access_token_secret')

# wait_on_rate_limit = レート制限が補充されるのを自動的に待つかどうか #
# wait_on_rate_limit_notify = Tweepyがレート制限の補充を待っているときに通知を出力するかどうか #
api = tweepy.API(auth, wait_on_rate_limit=True, wait_on_rate_limit_notify=True)

次にAPIを使用できるように設定します。

最初の2行は、開発者用アカウントの登録時に取得した4つのキー(consumer_key, consumer_secret_key, access_token_key, access_token_secret_key)をそれぞれ書き換えてください。

3行目は Twitterオブジェクトを生成しています。第2引数、第3引数は rate limits (アクセス制限)についての設定です。Trueにすることで適用されます。

自動いいね

tweepy/tweet_liked.py
# '#ブログ, #旅行'をそれぞれ3件ずついいね #
# 取得したいキーワード #
search_list = ['#ブログ', '#旅行']
# ツイート数3件 #
tweet_count = 3

for search in search_list:
    print('Searching... {}' .format(search))
    # サーチ結果 #
    search_result = api.search(q=search, count=tweet_count)
    for tweet in search_result:
        tweet_id = tweet.id
        try:
            # いいねの処理 #
            api.create_favorite(id=tweet_id)
            print('Tweet_liked')
            time.sleep(4)
        except tweepy.TweepError as e:
            print(e.reason)
        except StopIteration:
            break

最後がメインの部分です。

tweepy/tweet_liked.py
# 取得したいキーワード #
search_list = ['#ブログ', '#旅行']
# ツイート数3件 #
tweet_count = 3

まず、search_list = ['#ブログ', '#旅行']のように取得したいキーワードをリストを使って、変数を指定します。tweet_count = 3は今回取得したいツイート数です。

tweepy/tweet_liked.py
for search in search_list:
    print('Searching... {}' .format(search))
    # サーチ結果 #
    search_result = api.search(q=search, count=tweet_count)
    for tweet in search_result:
        tweet_id = tweet.id
        try:
            # いいねの処理 #
            api.create_favorite(id=tweet_id)
            print('Tweet_liked')
            time.sleep(4)
        except tweepy.TweepError as e:
            print(e.reason)
        except StopIteration:
            break

上記のコードの流れは、
- 変数 search_listをfor文で繰り返し処理。
- api.search(q=search, count=tweet_count)q=searchは取得したいキーワードを指定。count=tweet_countは先ほど指定したツイート数を指定。
- 上記の結果を繰り返し処理。
- twitterのIDを取得し、それを使っていいねをする。 api.create_favorite(id=tweet_id)がいいねをする処理
- いいねが成功すると、Tweet_likedと表示され、4秒後同じ処理を開始(時間をあけないと検知される可能性)。
- 2個目の繰り返し文が終わると1回目のfor文が実行され同じプロセスを開始。

exceptの部分は処理が失敗した時にエラーメッセージが吐き出される処理です。

実行結果

$ python tweet_liked.py

上記のコマンドを実行し。以下の結果が出れば成功です。あとは自分おTwitterの登録したアカウントでいいねがされているか確認してください。

Searching... #ブログ
Tweet_liked
Tweet_liked
Tweet_liked
Searching... #旅行
Tweet_liked
Tweet_liked
Tweet_liked

注意

TwitterのAPIの使用には制限があります。それを超えてしまうと、ペナルティーを受けることになるので気をつけてください。

まとめ

プログラムの手順

  • Twitterの開発者用に登録し4つのキーを取得
  • tweepyをインストール
  • TwitterのAPIを使うために4つのキーを使って設定 twitterオブジェクトも生成
  • 自動いいねのプログラムを書く

今回は、いいねの自動化を実装しましたが、フォローの自動化やフォロー解除などいろいろ試すことができます。tweppyについて詳しく知りたい方は、以下のURLのドキュメント読んでみてください。

http://docs.tweepy.org/en/latest/

Pythonはスクレイピングで知られていると思いますが、Djangoというフレームワークを使用すれば、 Webアプリケーションも作ることができます。

この記事をきっかけにPythonistaが増えてくれると嬉しいです。

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