![見出し画像](https://assets.st-note.com/production/uploads/images/64559024/rectangle_large_type_2_2c405fb7c03e9321de6f9cce6779d61a.jpg?width=1200)
Rubyで指定したユーザーのフォロワーをブロックする奴
1.Twitterは口論し合う場ではないと思う人向け
Twitterを使っていると、クソリプや罵倒、誹謗中傷を目にする機会があると思います。
そういった時はこれまで『Twitter Block Chain』『Red Block』『TweetBloc』を使ってきました。
上記二つは500アカウント毎にブラウザのCookieを消去しないとTwitterにログイン出来なくなるのが面倒な所。
三つ目の『TweetBloc』はキーワードやアカウント名を指定するだけで自動でブロックが進行していく便利なサービスでしたが、10月21日にサービス終了となってしまいました。
勝手ながらTweetBlocのサービスを本日付けで終了いたしました。サービス終了の理由は、結果的には誤解がとけたのですが、法律事務所から発信者情報開示請求が当方に送られる事態が発生したためです。すでにリクエストを受付済みのブロック、ミュートはそのまま実行します。続く
— ktpc_software (@ktpc_software) October 21, 2021
こうなったら自分で作ってみようと思い、Rubyで試してみる事に。
2.コードについて
サンプルコードは上記のサイトからお借りしました、ありがとうございます!
require 'twitter'
#APIキー設定
client = Twitter::REST::Client.new do |config|
config.consumer_key = "自分のキー"
config.consumer_secret = "自分のキー"
config.access_token = "自分のキー"
config.access_token_secret = "自分のキー"
end
#自分がフォローしている人のidを取得
a = client.friend_ids("自分のID").take(取得したい数)
#指定したフォロワーのidを取得
b = client.follower_ids("他人のID").take(取得したい数)
#自分がフォローしている人のidを除外
c = [a, b]
d = c.uniq
d.delete(a)
puts "■指定したユーザーのフォロワーの中から自分がフォローしているアカウントを除外してブロック"
client.users(d).each do |tw|
client.block(tw.screen_name)
puts "#{tw.name}をブロックしました"
end
下記の記事によれば、アカウントidの取得にはAPIリクエスト1回で最大5000ユーザー、さらに各API15分につきリクエストが最大15回まで、という決まりがあるようです。
さらに、このコードを使用した事でTwitterアカウントが凍結される恐れもあり、その件に関しては自己責任でお願いいたします。
3.試作品のため不具合があります
Ruby初心者が書いたサンプルコードですので、色々足りない所があります。
1.指定したアカウントをフォローしているとエラーになる
2.4万以上のアカウントを指定するとエラーが出やすい
3.そもそも自分がフォローしているアカウントを正しく除外できていない
4.ブロック済みを判別していないのでエラーが出ると最初からやり直しになる
4.アカウントを消したり別垢を作ったりする前に
自分が見たい物だけを見ましょう。
他人のリツイートを非表示にする事は、実はとても簡単です。
Twitterのミュートワードに『RT @』と記載するだけです。
前述の要領で、自分がフォローしているアカウントを全員アンフォローする事も可能です。
require 'twitter'
#APIキー設定
client = Twitter::REST::Client.new do |config|
config.consumer_key = "自分のキー"
config.consumer_secret = "自分のキー"
config.access_token = "自分のキー"
config.access_token_secret = "自分のキー"
end
#自分がフォローしている人のidを取得
a = client.friend_ids("自分のID").take(取得したい数)
puts "■自動アンフォロー"
client.users(a).each do |tw|
client.unfollow(tw.screen_name)
puts "#{tw.name}をアンフォローしました"
end
その前に、icotileなどのリスト管理アプリで見たいユーザーだけをお気に入り登録しておくと再フォローがしやすいです。