質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Twitter

Twitterは、140文字以内の「ツイート」と呼ばれる短文を投稿できるサービスです。Twitter上のほぼ全ての機能に対応するAPIが存在し、その関連サービスが多く公開されています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

2回答

909閲覧

pythonのモジュールscheduleを使用し時間指定ツイート

mer

総合スコア12

Twitter

Twitterは、140文字以内の「ツイート」と呼ばれる短文を投稿できるサービスです。Twitter上のほぼ全ての機能に対応するAPIが存在し、その関連サービスが多く公開されています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2019/06/06 19:42

編集2019/06/07 01:43

pythonのtweepy、schedule、timeモジュールを使用し時間指定のツイートを行う方法について。

scheduleライブラリを使ってPythonスクリプトを定期実行しよう

tweepyでpythonからツイート成功したコードに、リンク先サイトを参考にしたschedule、timeモジュールを使用して記述したところエラーがでてきてしまいました。

File "<string>", line 16, in <module> NameError: name 'auth' is not defined

pythonからツイートするだけのコードではこのようなエラーは出ずうまくいっていたのですが、このエラーはどうすればなくせるでしょうか?
scheduleモジュールを使用し、自動ツイートを行うためにはどう直せば行うことが可能になるでしょうか?

import tweepy import schedule import time CONSUMER_KEY = 'CK' CONSUMER_SECRET = 'CS' ACCESS_TOKEN = 'AT' ACCESS_SECRET = 'AS' auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET) auth.set_access_token(ACCESS_TOKEN, ACCESS_SECRET) api = tweepy.API(auth) search_results = api.search(q="API", count=10 ) for result in search_results: tweet_id = result.id #Tweetのidを取得 user_id = result.user._json['id'] #ユーザーのidを取得 try: api.create_favorite(tweet_id) #ファボする api.create_friendship(user_id) #フォローする except Exception as e: print(e) def job(): schedule.every(10).minutes.do(job) while True: schedule.run_pending() time.sleep(1)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

おそらくjobでauthを定義する前にauth.set_access_tokenを呼び出そうとしていることが原因です。インデントがずれているためにACCESS~の部分が先に実行されているのではないでしょうか。
10分ごとにツイートを行うなら、schedule設定の前に認証を行っておいて、job内の処理はupdate_statusのみで良いと思います。

投稿2019/06/07 00:36

krmn225

総合スコア19

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mer

2019/06/07 01:50

回答くださりありがとうございます。 適切かつ明確なご指摘のおかげでエラー回避できました、ありがとうございます。 ただ直したコードで再度定期実行するようpythonを起動し続けていたのですが、10分毎にTwitterの方で確認をしても定期実行されないみたいでした…。 連続ツイートが問題なのかと思いまして、コードの方はいいねとフォローをするものに変えてみたのですが、これも定期実行がうまくいかないです。 エラー文も出ていなかったのですが、他に何か原因があるのでしょうか?コードの方は質問の方に新たに書き直しましたので拝見していただけると助かります。
guest

0

スケジュールで行わせる処理をjob内に記述する必要があるので、search_results~からprint(e)までを関数jobの処理にすれば良いと思います。この辺りはあまりやったことがないので間違ってたらすみません。

投稿2019/06/08 15:41

krmn225

総合スコア19

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問