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

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

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

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

Python

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

Q&A

解決済

1回答

942閲覧

Twitter APIで指定ユーザーのフォロワーをフォローしたい。

yuutayaro

総合スコア1

Twitter

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

Python

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

0グッド

0クリップ

投稿2021/07/02 05:29

Twitterで指定ユーザーのフォロワーをフォローしたい。

使用言語:Python
使用API :Twitter API

下記の手順をプログラムに落とし込み開発したいと思っております。

1.OAuth認証を行いログイン
2.指定ユーザーのフォロワー取得
3.フォロー実行

プログラム実行時にエラーが発生しております。
質問の仕方など至らぬ点あるかと思いますが、回答頂ければと思います。

発生している問題・エラーメッセージ

File "d:\ダウンロード\python\フォロワー欄フォロー取得\test.py", line 16, in <module> follower_ids = pd.Series(api.followers_ids()) File "C:\python\lib\site-packages\tweepy\binder.py", line 253, in _call return method.execute() File "C:\python\lib\site-packages\tweepy\binder.py", line 234, in execute raise TweepError(error_msg, resp, api_code=api_error_code) tweepy.error.TweepError: [{'code': 215, 'message': 'Bad Authentication data.'}]

該当のソースコード

Python

1import tweepy 2import pandas as pd 3from tweepy import api 4 5def get_twitter_api(): 6 API_key = "設定済" 7 API_secret = "設定済" 8 Access_token ="設定済" 9 Access_secret = "設定済" 10 screen_name = "設定済" 11 auth = tweepy.OAuthHandler(API_key, API_secret) 12 auth.set_access_token(Access_token, Access_secret) 13 api = tweepy.API(auth, wait_on_rate_limit = True) 14 return api,screen_name 15 16follower_ids = pd.Series(api.followers_ids()) 17 18follower_dic = {} 19for index,follower_ids in enumerate(follower_ids): 20 print(index) 21 try: 22 user = api.get_user(id = follower_ids) 23 except tweepy.error.TweepError as e: 24 print(e) 25 follower_dic[user.screen_name] = user.description 26df = pd.DataFrame(follower_dic.values(),index = follower_dic.keys()).reset_index() 27df.columns= ["screen_name","profile"] 28 29def follows(api,follower_ids): 30 target = api.get_user(id = follower_ids) 31 followCount = 0 32 33 if target.protected == False and followCount<100 : 34 try: 35 api.create_friendship(follower_ids) 36 followCount = followCount+1 37 print("follow" + str(follower_ids)) 38 except: 39 print("Follow error" + str(follower_ids))

試したこと

API KEYとaccess tokenの再発行で解決したと記載があったので
再発行をしましたが解決にはいたりませんでした。

参考
https://teratail.com/questions/236548

補足情報(FW/ツールのバージョンなど)

Python 3.9.5

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

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

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

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

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

quickquip

2021/07/02 06:08

このコードだと follower_ids = pd.Series(api.followers_ids()) の行でapiがNameErrorを起こすはずです。 ですから、「実行されているコードをちゃんと書いてない」か、「"実行されている"コードと、"実行していると思っている"コードが食い違っている」可能性があります。 前者であれば動くコードを質問に書いてください。
quickquip

2021/07/02 08:53 編集

Jupyterあたりを使っているなら「実行したあと消した」コードがあった可能性もあります。(↑のバリエーションですが)
yuutayaro

2021/07/02 09:14

回答ありがとうございます。コードの食い違いは起きておりません。またVScodeというエディタを使用しております。 動くコードを記載とのことですが現在投稿している問題で止まっているため 記載することができません。 tweepy.error.TweepError: [{'code': 215, 'message': 'Bad Authentication data.'}] 上記エラーコードについて何か知っていましたら解決方法を教えて頂けますでしょうか。 お手数をおかけしますが宜しくお願い致します。
quickquip

2021/07/02 09:20

失礼しました。from tweepy import api してますね。
guest

回答1

0

ベストアンサー

https://github.com/tweepy/tweepy/blob/v3.10.0/tweepy/init.py#L21

python

1# Global, unauthenticated instance of API 2api = API()

というようにtweepy.apiは「tweepy.APIの、グローバルな認証されていないインスタンス」として定義されているので、それを使って呼び出したら認証されていないエラーが出て当たり前です。
(こんなグローバル変数があったなんて知りませんでした。使えないものなので知らなかったことに不思議はないですが)


get_twitter_api関数を作った(わざわざ関数にした)意図が分からないのでなんとも言えないのですが、関数を書いている時点では、

python

1api, screen_name = get_twitter_api() 2follower_ids = pd.Series(api.followers_ids())

としようと考えていたのに上の行を書き忘れてしまった、あたりかと推測しました。

投稿2021/07/02 09:28

編集2021/07/02 09:39
quickquip

総合スコア11055

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

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

yuutayaro

2021/07/02 10:26

回答いただきありがとうございます。とても助かりました。 初歩的なことかもしれませんが関数を作らずただただ定義でもよかったですよね。 (参考にしたソースで使っていたのでそのまま使用しました。) 提示した問題が解決し、更に問題が発生したのですがその場合は投稿を別にするのが teratailのルールだったりしますでしょうか?
quickquip

2021/07/02 12:08

後から検索で辿り着いたりした人のこととかを考えると、別質問の方がいいですね。 回答者側としても、いつでもTeratailを見ているわけではないですし。
yuutayaro

2021/07/02 12:15

丁寧に回答ありがとうございます。 とっても感謝しております。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問