1
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 3 years have passed since last update.

Pythonを使ってTwitterに時間指定して投稿

Last updated at Posted at 2021-12-09

はじめに

指定した時間になったらTwitterで呟く方法です。
Twitter自体には予約投稿という機能がありますが、APIを叩いて予約投稿はできなさそう(多分)だったので、Schedulerを用いて強引ですが予約投稿を実装しました。
TwitterAPIの取得方法などは様々な方が解説してくださっているので割愛しています。

実行環境

  • windows10
  • Python 3.8.3

コード

import tweepy
import sched
import time
import datetime

# API Keys
CK = "Consumer Key"
CS = "Consumer Secret"
AT = "Access Token"
AS = "Access Secret"

def tweet(text):
    """ツイートする"""
    auth = tweepy.OAuthHandler(CK, CS)
    auth.set_access_token(AT, AS)
    api = tweepy.API(auth)
    api.update_status(text)

def tweet_sched(post_date, tweet_text):
    """時間を指定する"""
    scheduler = sched.scheduler(time.time, time.sleep)
    run_at = int(time.mktime(post_date.utctimetuple()))
    scheduler.enterabs(run_at, 1, tweet, (tweet_text,))
    scheduler.run()


#使用例
post_date = datetime.datetime(2021, 12, 9, 17, 0)
tweet_text = "testです"
tweet_sched(post_date, tweet_text)

時間になるまで待機させて、tweetを実行しています。
時間の精度については秒単位での誤差は出ないと思います。(多分)

post_dateで投稿する日時、tweet_textで投稿する文を指定すれば動きます。
ちなみに過去の日時を指定すると即ツイートされます。

終わりに

私がSchedulerの挙動をイマイチ理解していないので、もしかしたらバグるかもしれないです。
使用は自己責任でよろしくお願いします😉
もっといい方法があれば教えて頂けると助かります🙏

1
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
1
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?