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

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

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

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

Python

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

Q&A

解決済

2回答

1587閲覧

python tweepyでのリプライを除く自動いいね

pentell

総合スコア40

Twitter

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

Python

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

0グッド

0クリップ

投稿2019/06/05 14:37

編集2019/06/06 10:15

下記サイトを参考に、tweepyで指定したワードを@IDリプライを除くツイートのみを自動いいねするものなのですが、エラーが出てしまいます。
http://s4t.hatenablog.com/entry/2017/12/27/235241

エラー文
NameError: name 'dic' is not defined

tweepyの普通のツイートやフォローなどはちゃんと動きAPIキーも間違いないです。
こちらのサイトではない通常の指定ワードいいねはちゃんとできるのですが、@ID返信リプを除くツイートのみをいいねするものがこちらのサイトしか見つけられなかったのですがこちらのエラーの原因はなんなのでしょうか?
@ID返信リプを除くツイートのみを自動いいねするにはどうしたら良いのでしょうか。

~以下コード~
※ツイッターAPIの××××のみ任意のものに変更しています。

import tweepy def api(): consumer_key = '××××' consumer_secret = '××××' access_key = '××××' access_secret = '××××' auth = tweepy.OAuthHandler(consumer_key, consumer_secret) auth.set_access_token(access_key, access_secret) api = tweepy.API(auth) return api dic={} for tweet in api().search('通貨'): text = tweet.text id = tweet.id dic.update({id:text}) if '@' in dic[id]: pass else: api().create_favorite(id)

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

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

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

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

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

CHERRY

2019/06/05 21:50

ソースコードは、コード部分を選択して、ツールバーの <code> ボタンを利用するなどの方法で見やすく記述していただけないでしょうか。  [ソースコードを書きましょう]( https://teratail.com/help/question-tips#questionTips3-5-1 ) 参照 特に Python は、インデントがずれると別の意味になりますので、正しいインデントで記載をお願いします。
guest

回答2

0

色々分からないことだらけで頭悩ませていたんですが、とても丁寧に優しく教えてくださりコードまで記述していただき大変助かりました、この度は本当にありがとうございました!

投稿2019/06/06 13:12

pentell

総合スコア40

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

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

0

ベストアンサー

-追記-

参考リンク先に載っていたコードを改めてこちらに載せておきます。
インデントミスのないよう気をつけてください。

import tweepy def api(): #関数apiを生成します。https://apps.twitter.com にて consumerkey等を取得して各自で代入して下さい consumer_key = 'consumer_key' consumer_secret = 'consumer_secret' access_key = 'access_key' access_secret = 'access_secret' auth = tweepy.OAuthHandler(consumer_key, consumer_secret) auth.set_access_token(access_key, access_secret) api = tweepy.API(auth) return api dic = {} #辞書を定義しておきます。 for tweet in api().search('仮想通貨'): #エゴサ用の単語を入れます。 if tweet.retweeted == False: #リツイート”していない”ツイートだけを抽出。 text = tweet.text #ツイートのテキスト部分を変数textに代入。 id = tweet.id #ツイートの識別番号を変数idに代入 dic.update({id:text}) #変数textと変数idの紐付けをし、辞書dicに追加。 if '@' in dic[id]: #辞書dicにキーである変数idを代入し、テキスト本文を出力。@を含むツイート(リプライ)を除外。 pass else: api().retweet(id) #リツイートする #api().create_favorite(id) どうせリツイートするならふぁぼっちゃえばいいじゃないですか。

-追記終わり-

dicを定義していないのが原因です。for文の前に空辞書dicを定義させれば実行できると思います。

dic={}

参考:特定の文字列を含むツイートをリツイートするやつ

投稿2019/06/06 00:04

編集2019/06/06 11:28
amahara_waya

総合スコア1029

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

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

pentell

2019/06/06 05:22

回答くださりありがとうございます。 for文の前に空のdic={}を入れたところ質問のエラーは出てこなくなりました。 ですが以下のようなエラーがでてきてしまいました。 line 15 syntaxError: 'return' outside function line15は return apiの部分になります。 これはなにが原因なのでしょうか?
amahara_waya

2019/06/06 07:16

エラー内容を訳すと「'return'が関数の外にある」となります。 タブキーを使ってreturn apiをずらしてあげると直るはずです。
pentell

2019/06/06 10:18

度々ありがとうございます。 コードの方編集させていただいたのですが、 return apiの前にタブを挿入してもインデントエラーとして扱われてしまうのですが、どうしたら良いのでしょうか。。 File "<string>", line 15 return api ^ IndentationError: unexpected indent
amahara_waya

2019/06/06 11:25

コード拝見しました。returnの前にある文の段階で関数の外に出てしまっているのが原因ですね。 回答の方に参考として紹介したgithubコードは見ましたか?改めて追記しておきます。 修正意見にある通り、インデント1つでコードの実行内容は大きく変わってしまいます。 returnの部分以外でもインデントエラーになりうる要素がいくつかありますので、回答に追記したコードを見て、ご自身で修正してみてください。
pentell

2019/06/06 13:10

コード記載してくれていたとは大変助かりました。教えていただいたコードで無事できました。
yuicho

2021/01/15 12:53

老婆心ながら… RTは大丈夫なんですが、いいねの自動化は自動化ルールに反していますので、自動化として検出された場合凍結の可能性もあります。 お気をつけください…… > いいねの自動化: 自動的にツイートをいいねすることは禁止されています。 https://help.twitter.com/ja/rules-and-policies/twitter-automation
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問