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

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

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

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

Python

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

Q&A

解決済

1回答

1116閲覧

twitterの自動アンフォロー解除数を指定したい

ora

総合スコア5

Twitter

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

Python

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

1グッド

1クリップ

投稿2020/04/20 07:21

tweepyを使用し自動アンフォローを行い指定した数に達したらフォロー解除を停止したい。

フォロバをくれなかったアカウントを自動で古い順からアンフォローするコードを作成しているのですが、
以下のコードで古い順からアンフォローすることができたもののフォロバのないアカウントすべてをまとめていっきにリムってしまいます。
凍結防止のためにアンフォローできる人数を数人までにしたく色々と試してみていますがうまくいきません。

以下のフォロバのないアカウントをアンフォローするためのコードをどのように記述すれば
アンフォローした時希望の指定数に達した時アンフォローをやめることができるでしょうか。

該当のソースコード

python

1import tweepy 2 3keys = dict( 4 screen_name = '', 5 consumer_key = '', 6 consumer_secret = '', 7 access_token = '', 8 access_token_secret = '', 9) 10 11SCREEN_NAME = keys['screen_name'] 12CONSUMER_KEY = keys['consumer_key'] 13CONSUMER_SECRET = keys['consumer_secret'] 14ACCESS_TOKEN = keys['access_token'] 15ACCESS_TOKEN_SECRET = keys['access_token_secret'] 16 17auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET) 18auth.set_access_token(ACCESS_TOKEN, ACCESS_TOKEN_SECRET) 19api = tweepy.API(auth) 20 21followers = api.followers_ids(SCREEN_NAME) 22friends = api.friends_ids(SCREEN_NAME) 23 24for f in friends [::-1]: 25 print("ID:{}のフォローを解除しました。".format(api.get_user(f).screen_name)) 26 api.destroy_friendship(f) 27 28 29 30
Ikuuu👍を押しています

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

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

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

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

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

yamap55

2020/04/21 06:48

そもそもフォロー解除を自動化する事自体が規約違反のようですよ。 > フォローとフォロー解除の自動化: Twitterアカウントを大量または無差別にフォローしたり、フォロー解除したりしないでください。 https://help.twitter.com/ja/rules-and-policies/twitter-automation
ora

2020/04/26 13:25

自動化自体は違反ではないですよ。 付属のサイトで規約違反ではないものを引用しますと、 I. 基本原則 すべきこと ツイートで有用な情報を自動的に広めるソリューションを開発する。 自社のコンテンツに反応したアカウントに自動返信するクリエイティブキャンペーンを実施する。 ダイレクトメッセージで利用者に自動返信するソリューションを開発する。 利用者の役に立つ新しいサービスに挑戦する(ただし、Twitterのルールを遵守する)。 アプリケーションが快適に動作し、優れたユーザーエクスペリエンスを達成できるようにする(その状態を長期的に維持する)。 とあるので一部自動化を禁止しているものもありますが、自動化自体はそも違反にはならないです。 >Twitterアカウントを一括して、攻撃的に、または無差別にフォローまたはフォロー解除することはできません。積極的なフォローはTwitterルールの違反です。また、以下のルールとベストプラクティスを確認して、コンプライアンスに準拠していることを確認してください。ユーザーのフォロワーを増やすと主張するアプリケーションも、Twitterルールでは禁止されています。 ともありますので、 ”攻撃的かつ大量に、無差別に”が違反行為に該当致します。 質問にも記述しておりますが今回は無差別かつ大量のフォロー解除による凍結を避けるためのそのための質問をしております。 このままのコードでは大量にまとめてアンフォローしてしまうことになり、規約違反となるのでその違反行為を回避するために質問をさせていただきました。
guest

回答1

0

ベストアンサー

例えば、
for f in friends [::-1]:

for f in friends[:5:-1]:
にすれば5人だけを対象にできます。

投稿2020/05/02 07:50

編集2020/05/02 07:51
minaminao

総合スコア249

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

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

ora

2020/05/02 15:05

回答くださりありがとうございます。 そのままコピペさせていただいたのですが解除人数に変わりはありませんでした、コードによって相性とかあるのかな…うーん
minaminao

2020/05/02 16:29

↑は間違いでしたmm。friends[::-1][:5] あるいは friends[:-6:-1] で動作することを手元で 確認したので、お試しください。
ora

2020/05/02 17:47

ああ!できましたできました! こういったやり方もあるんですね。 ずっとやり方が分からず状態だったので本当に助かりました。本当にありがとうございます!
ora

2020/05/02 18:02

すみません…質問に記述し忘れていたのですが、 フォロワーはアンフォロー対象から除外するためのコード if f not in followers:がfor f in friendsの下にあって、 実際のコードは for f in friends[::-1]: if f not in followers: print("ID:{}のフォローを解除しました。".format(api.get_user(f).screen_name)) api.destroy_friendship(f) こういう状態だったんです。 この状態で本来はフォロバ関係にある人は除外されるコードだったのですが、教えていただいたやり方を思考していたところ記述がなかったことに今気づきましてほんと申し訳ないです…。 たぶん最初にうまくいかなかったのはif f not in followers:があったからうまくできなかったのだと思うのですが、 if f not in followers:を入れた状態での動かし方ってご存じありますでしょうか…?
minaminao

2020/05/03 00:34 編集

カウント変数 cnt = 0 を作って、cnt が n 人越えたら break みたいにすればいいと思います。 cnt = 0 for f in friends[::-1]: __if cnt >= 5: ____break __if f not in followers: ____cnt += 1 ____// フォロー解除 とかですかねー
ora

2020/05/03 08:07

すごいです!!無事フォロー返しされてない人のみを指定人数アンフォローすることが出来ました! 感激です!!!
ora

2020/05/03 08:09

こちらの追記ミスにも関わらず、検証までしてくださり適切で分かりやすいコードまで記述してくださって、ただただ感謝の気持ちでいっぱいです。 minaminao様の力添えのおかげでやっとコードが使えるようになり本当に助かりました。
ora

2020/05/03 08:10

この度はとても貴重な回答をしてくださり大変参考になりました。 コードの方大切に使おう… このご恩は忘れません。本当にありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問