初めまして。
①環境:
MacOS Mojave
②やりたいこと:
毎時15分ごとに「autoLike.py」の中身を実行したい。
②問題:
AncondaからJupyterを立ち上げて.pyファイルを作成し、ターミナル上での実行に成功。
しかし、cronで定期実行をしたいが動作しない。
③試したこと:
crontab -eの中身を記載("ユーザーネーム"の箇所は半角英数字で記載しています)
MAILTO=root PYTHONIOENCODING = 'utf-8' LANG=ja_JP.UTF-8 15 * * * * python3 /Users/ユーザーネーム/twitter/autoLike.py ルミガン >> /Users/ユーザーネーム/twitter/autoLike.log
④備考
・ターミナルでpython3 autoLike.py ルミガン
を実行すると、問題なくファイルの中身が作動します。
大変お手数ですが、ヒントをいただけますと幸いです。
よろしくお願いいたします。
追記(3/28)
/bin/bash
追記(3/30)
import tweepy import time import sys from datetime import datetime CONSUMER_KEY = "キー" CONSUMER_SECRET = "キー" ACCESS_TOKEN = "キー" ACCESS_SECRET = "キー" #関数群 def searchTweets(query): tweets = api.search(q=query, count=100) return tweets def likeTweets(tweets): like_count= 0 created_at = datetime.now().strftime("%Y%m%d%H%M%S") for tweet in tweets: user_id = tweet.user._json['screen_name'] tweet_id = tweet.id try: api.create_favorite(tweet_id) #フォロワーでなければいいねする print("{}:[INFO]以下のユーザーをいいねしました。user_id:{}".format(created_at, user_id)) like_count += 1 print("[INFO]いいね数: {}".format(like_count)) except Exception as e: print("[ERROR]いいねに失敗しました: {}".format(e)) if e.response and e.response.status == 429: print("[INFO] rate limitの上限値を超えたので、15分待機後に実行します。") time.sleep(60 * 15) if e.response and e.response.status == 139: print("[ERROR] すでにいいねをしているツイートです") return like_count if __name__ == '__main__': #Tweepy auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET) auth.set_access_token(ACCESS_TOKEN, ACCESS_SECRET) #APIインスタンスを作成 api = tweepy.API(auth) #引数を受け取る args = sys.argv query = args[1] #中身がhoge #いいねする tweets = searchTweets(query) likeTweets(tweets)
from time import sleep from threading import Thread # Threadオブジェクトをインポート target_time = 10 def up_timer(secs): for i in range(0,secs): print(i) sleep(1) print("カウントアップ終了!") def down_timer(secs): # for i in range(0,secs):から変更 for i in range(secs, -1, -1): # 以下同じ・・・ print(i) sleep(1) print("カウントダウン終了!") # Threadインスタンスをタイマーごとに生成する thread_1 = Thread(target=up_timer,args=(target_time,)) thread_2 = Thread(target=down_timer,args=(target_time,)) # それぞれのスレッドを起動する thread_1.start() thread_2.start()
(追記3/31)
「autoLike.py」の先頭にシェバンを追記
#!/usr/bin/env bash
which python3の実行結果
/anaconda3/bin/python3
crontab -eの中身(Jupyterでtwitterという名のフォルダを作成し、その中にスクリプトファイルを作成)
5 * * * * /anaconda3/bin/python3/twitter/autoLike.py ルミガン
回答3件
あなたの回答
tips
プレビュー