pythonでdatetimeをつかい日付を計算しようとしているがうまくいきません
制作物:TWITTER 自動投稿BOT
目標機能:エクセルファイルを読み込んで、1日1回同じ時間に自動投稿を行う。
問題点:当日の投稿は問題なくできるが、日付のコントロールがうまくいかないです。
today = datetime.date.today()でもってきた本日の日付で投稿内容を生成
↓
forの最後で日付の差分、変数diffを+1
↓
diff+todayに加算して次の日付を生成
↓
次回の投稿予定日としてエクセルから読み込んだ内容分だけ投稿予約。
以上の流れで日付が11/6→11/7→11/8のように推移してほしいのですがうまく推移してくれません。おそらく、for文の中の変数の評価の仕様に私が明るくないために起きているミスだと思い一通り、関係ありそうなところを外に出したりforの中に入れたり、色々な組み合わせを試してみたのですが、printをするとすぐにカーネルがビジー状態になるパターンが多く挫折してしまいました。(jupyternotebookをアナコンダ環境で使用中)
なにかアイディアのある方、アドバイスよろしくお願いいたします。
import pandas as pd
import tweepy
import sched
import time
import datetime
#consumer_key
CK = "hogehoge"
#consumer_secret
CS = "hogehoge"
#access_token
AT = "hogehoge"
#access_token_secret
AS = "hogehoge"
exfile = r"hogehoge.xlsx"
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()
today = datetime.date.today()
diff = 0
post_hour = "2"
post_mins = "30"
td = datetime.timedelta(days=diff)
caled_date = today + td
str_date = caled_date.strftime('%Y,%m,%d')
str_date_time = str_date+","+post_hour+","+post_mins
post_date = datetime.datetime.strptime(str_date_time, '%Y,%m,%d,%H,%M')
df = pd.read_excel(exfile)
url = df['エクセル列名A'].tolist()
rev = df['エクセル列名B'].tolist()
video_length = len(url)
for urli,revi in zip(url,rev):
content = urli+revi
post_date = datetime.datetime.strptime(str_date_time, '%Y,%m,%d,%H,%M')
tweet_text = content
tweet_sched(post_date, tweet_text)
diff +=1