2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

scheduleライブラリで定期的にTwitterの検索andいいね

Last updated at Posted at 2019-05-12

はじめに

今回はscheduleモジュールを使用して, Twitterにて定期的な処理を自動的に実行できるようにしていきます.

#scheduleモジュール
まずは, インストールしましょう.

pip install schedule

公式ドキュメントを参考にして使い方を確認しましょう.

import schedule
import time

# 実行したい処理
def job():
    print("I'm working...")

# 10分ごと
schedule.every(10).minutes.do(job)
# 1時間ごと
schedule.every().hour.do(job)
# 毎日10:30
schedule.every().day.at("10:30").do(job)
# 毎週月曜日
schedule.every().monday.do(job)
# 毎週水曜13:15
schedule.every().wednesday.at("13:15").do(job)
# 毎時17分
schedule.every().minute.at(":17").do(job)

while True:
    schedule.run_pending()
    time.sleep(1)

まずはjob()関数の中で実行したい処理を設定します.

def job():
    print("I'm working...")

そしてschedule.every()で実行したいjobをライブラリに登録します.
様々な時間単位で登録できるようですね.

# 10分ごと
schedule.every(10).minutes.do(job)
# 1時間ごと
schedule.every().hour.do(job)
# 毎日10:30
schedule.every().day.at("10:30").do(job)
# 毎週月曜日
schedule.every().monday.do(job)
# 毎週水曜13:15
schedule.every().wednesday.at("13:15").do(job)
# 毎時17分
schedule.every().minute.at(":17").do(job)

最後にschedule.run_pending()で登録したjobを実行しています. 1度の呼び出しで1度実行するので, while分でループさせて呼び出しています.

while True:
    schedule.run_pending()
    time.sleep(1)

#Twitterで定期的に検索andいいね
それではscheduleモジュールを用いて, Twitterの定期的な検索といいねを実装しましょう.
今回は6時間ごとに「大谷翔平」と検索して, いいねをするという仕様にしています.
Twitterの検索といいねに関しては, こちらを参照してください.

# coding: utf-8
import tweepy
import time
import schedule

# 先ほど取得した各種キーを代入する
CK="Consumer Key"
CS="Consumer Secret"
AT="Access Token"
AS="Access Token Secret"

# Twitterオブジェクトの生成
auth = tweepy.OAuthHandler(CK, CS)
auth.set_access_token(AT, AS)
api = tweepy.API(auth)

# 処理関数
def job():
    # 1ツイートずつループ
    for status in api.search(q='大谷翔平', count=50):
        tweet_id = status.id
        # 例外処理をする
        try:
            # いいね実行
            api.create_favorite(tweet_id)
        except:
            print('error')

def main():
    # 6時間ごと
    schedule.every(6).hours.do(job)


    while True:
        schedule.run_pending()
        time.sleep(1)

main()

#参考サイト
【Python】scheduleライブラリで定期実行を実装してみよう

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?