Hatena::ブログ(Diary)

webネタ

2011-09-07

たった21行の一括フォロースクリプト

2012/4/20 一括アンフォロー。使い方は同じです。

javascript:(function(){var $followElem=$('.js-action-unfollow');var followElemCount=$followElem.length;var currentNum=0;var manager=function(){if(currentNum<followElemCount){performer($followElem.eq(currentNum));currentNum+=1;}else{alert('complete');}};var performer=function($elem){var rand=(Math.floor(Math.random()*1000))+100;setTimeout(function(){$elem.trigger('click');manager();},rand);};manager();})();

世の中では邪道?とされているtwitterの一括フォローだが、フォロー数を増やしたい場合はやっぱり一つ一つフォローボタンを押すのはめんどう。さっきtwitter本家のサイトを見ててふと思いついたので一括フォローできるスクリプトを書いた。ブックマークレットにすればボタン一発で実行できるょ。

使い方

1、下記のプログラムURLの代わりにブックマークする。 (トリプルクリックすると一気に選択できます) (※1)

javascript:(function(){var $followElem=$('.js-action-follow');var followElemCount=$followElem.length;var currentNum=0;var manager=function(){if(currentNum<followElemCount){performer($followElem.eq(currentNum));currentNum+=1;}else{alert('complete');}};var performer=function($elem){var rand=(Math.floor(Math.random()*3000))+100;setTimeout(function(){$elem.trigger('click');manager();},rand);};manager();})();

2、https://twitter.com/#!/who_to_follow に移動。検索などする。

3、登録したブックマークレットを押す。

4、自動フォローがはじまる。

このとき自動でフォローされるのは、表示された20件だけです。もっと一度にしたい場合は、下にいっぱいスクロールして実行するといいですw

技術的な仕組み

発想自体は至極簡単で、クリックを動的に行うだけ。jQueryでtrigger()って関数があるから、引数にclickを渡すとクリックをスクリプトから発動させれる。

だから実際は

$('.follow-button').trigger('click');

だけで一括でフォローできてしまう。

だけど、一気にフォローするとなんだがスクリプトくさいので一個ずつ時間バラしたw

スクリプトの説明

managerさんとperformerさんを関数で用意。

managerさんがperformerさんに処理を依頼し、完了したらmanagerに報告。managerは次のフォローをperformerに依頼する。(繰り替し)

うさんくさいデザインパターンっぽいな、、、

ソースコード

(function() {
	var $followElem = $('.follow-button');
	var followElemCount = $followElem.length;
	var currentNum = 0;

	/**
	 * Manager
	 * マネージャーはパフォーマーに処理を依頼します。
	 */
	var manager = function() {
		if (currentNum < followElemCount) {
			performer($followElem.eq(currentNum));
			currentNum += 1;
		} else {
			alert('complete');
		}
	};

	/**
	 * Performer
	 * パフォーマーは処理を実行し、完了したらマネージャーに報告します。
	 */
	var performer = function($elem) {
		var rand = (Math.floor(Math.random() * 3000)) + 100;
		setTimeout(function() {
			$elem.trigger('click');
			manager();
		}, rand);
	};
	manager();
})();

まとめ

OAuthしてユーザーひっぱって頑張って一括フォローしてるとこもあるけど、ブックマークレットなら簡単にできたというお話^^

備考

※1 はてなダイアリーでブックマークレットを貼る方法が分からなかった;ω;

HUMIHUMI 2012/02/15 23:42 ものすごく、こちらのブックマークレット助かっていました。しかし、このたびツイッターの仕様が変更され、使えなくなってしまいました。
お時間があれば、新仕様に対応したスクリプトを作成していただければ・・非常に幸いです。

R-HR-H 2012/02/16 21:14 対応しました。ご指摘ありがとございます^^!

HUMIHUMI 2012/02/22 16:05 ええ!!本当ですか!すごくすごく、本当にありがとうございます!「スクリプト」って何?たべもの??ってレベルの頭なので、本当に助かります!早速使わせていただきます!

AKIAKI 2012/03/07 01:51 凄いです。
ありがとうございます^^
時短になりますv

RFRF 2012/03/11 12:28 色々と一括サイト巡って出来なかったことが本家で、しかもワンクリックで出来るとは…
ありがとうございました。

qoposqopos 2012/03/17 20:01 おもしろい!

.follow-button → .follow-btn になったよね

でもそれだけ直してもフォローできてないらしい。
ループは回ってるみたいだけど。。
改良の余地があるね・・

qoposqopos 2012/03/17 20:15
$elem.trigger('click');
ができてないみたいです・・!
JS初心者の僕にはわかりませんが・・

どうしてjQueryが動くのかもわかりません・・
さいごの「();」の意味もわかりません・・
というか全体がカッコで囲まれてる意味も・・
JS勉強したーーーい!!

R-HR-H 2012/03/17 21:39 あれ、できてないですか!?
IE8,Chrome,FFで確認してます。なんだろ。
ブラウザの種類とバージョンおしえてくらさいー。

>どうしてjQueryが動くのかもわかりません・・
https://twitter.com/#!/who_to_followのソース見ると分かると思いますがにjQueryが読み込まれてるからですねー

>さいごの「();」の意味もわかりません・・
()はくくってる匿名functionを実行するって意味ですねー。

意外に需要あるからちょっと凝ってバージョンUPしてみようかなー。

qoposqopos 2012/03/18 11:59 Macの最新版Chromeです!

.follow-button → .follow-btn 
に修正したらループは回るようになったのですが、
completeしてもフォローできてないようです。。

$elem.trigger('click'); を
$elem.click() にしたり初心者なりにもがいてみたのですがだめでしたw

とれてる要素が間違ってるのかな・・

質問に親切に答えていただいてありがとうございます!
よくわかりました!(´∇`)

R-HR-H 2012/03/18 12:42 >.follow-button → .follow-btn
あれ古いほう使ってるんですかね。
ページの一番上に最新版のを載せてますが、.js-action-follow でやってます。これならどうですか?

qoposqopos 2012/03/18 12:55 古い方使ってただけでしたw
長々とすいません・・!
べんきょうになりました・・!ありがとうございます!><

morinagamorinaga 2012/06/16 13:52 凄いですね! 仕組みはさっぱりですが、
毎度のフォロー返しのclickの手間が省けて重宝しています!
これの、フェイスブックでいいね!版はありませんか?
もしありましたらお願いします!

cielphycielphy 2012/07/10 15:59 もし出来るのなら、一括フォロー時に「鍵付きアカウント」は無視する(フォローしない)設定に出来たら良いですね。

kamisugirukamisugiru 2012/08/29 19:17 ありがとうございます!凄い助かってます!
範囲を決めれてフォローできたらな…、とは思うのですが。。。
一気に出来るアンフォローのもお願いします!スプリクトくさくてもいいので(^^ゞ

tukaenaitukaenai 2012/09/01 14:54 使えなくなってしまっています><
対応お願いしますm(_ _)m

tukaenaitukaenai 2012/09/01 15:37 反応したり、しなかったり、するみたいです。
検索だと使えたのが、他人のアカウントのフォロー人をフォローするとなると使えませんでした。間違ってたらすいません><

名無し名無し 2012/09/04 12:08 twitterが仕様変更したのか、使えなくなってしましましたーー><

SATOSATO 2012/09/05 10:01 とても助かっています。いつもありがとうございます。他人のアカウントのフォローができなくなっていたので、上記でやってみたのですが、使えないです・・FFとChromeでやってみたのですが・・

ね 2012/09/05 10:18 使えませんよー「自動フォロー」スクリプトコード見たら最初のと同じじゃないですか、動くはずがない。貼り間違えでしょうか?

RSRS 2012/09/09 17:54 私も、使えません。
新しいコード、お願いできませんか?

RSRS 2012/09/09 17:54 私も、使えません。
新しいコード、お願いできませんか?

nasayuyanasayuya 2012/09/09 21:49 使えませんね^^:

d.hatena.ne.jpd.hatena.ne.jp 2012/09/14 22:05 早く何とかしてくださいよ。放置ってのはよくないよ。

R-HR-H 2012/09/14 22:38 他人のアカウントのフォローはできません。検索のみです。
そのうち対応するかもしれません。

ぽんこぽんこ 2012/09/20 12:17 とても便利な機能で重宝していました。対応可能でしたらして頂けると嬉しいです。

ハイサイハイサイ 2012/09/24 18:51 横から失礼します。
私も愛用者の一人でございます。

取り急ぎ私の方で直してみました。
下記がソースになります。

ブックマークにべっとりと貼りつけてください。
javascript:(function(){var $followElem=$('.not-following .js-follow-btn');var followElemCount=$followElem.length;var currentNum=0;var manager=function(){if(currentNum<followElemCount){performer($followElem.eq(currentNum));currentNum+=1;}else{alert('complete');}};var performer=function($elem){var rand=(Math.floor(Math.random()*3000))+100;setTimeout(function(){$elem.trigger('click');manager();},rand);};manager();})();

修正した個所は、指定しているclass名を変えてみました。
http://haisai.info/archives/post_185.html

R-HR-H 2012/09/24 19:02 おお。ありがとうございます。
私の場合、twitterにアクセスしても .js-action-follow しかいないんで゛
頂いたコードだといきなりcompleteになってしまいます。
一部の人は新しい?htmlになってるんですね。webサービスだとよくあることですもんね...
感謝!

ぽんこぽんこ 2012/09/27 10:43 動作確認しました!R-Hさん、ハイサイさんありがとうございます。

どうもどうも 2012/09/30 17:48 いつも使わせて頂いています!このフォロースクリプトを自分のブログとPDFで紹介する際に使わせて頂いても良いですか?有料の販売には使いません。info-bookで使わせて頂きます。よろしくお願いします。

ふみふみ 2012/10/02 20:11 いつもありがとうございます!つかわせていただきます!

aa 2015/11/08 19:01 タダでスクリプト書いてもらって使わせて頂いてる分際で「放置ってのは良くないよ」じゃねーよクソが。嫌ならサポート用の金払うか自分でスクリプト勉強しなおせ。

aa 2015/11/08 19:21 基本的には以下だ。.trigger('click');は絶対に触れてはならない。

javascript:$('.follow-button').trigger('click');
問答無用でフォローボタンをクリック。これが一番シンプルなスクリプト。

javascript:$('.not-following .js-follow-btn').trigger('click');
フォローしてない人だけのボタンをクリックするスクリプト。

仕様が変更されて使えなくなったら上記の$()内をいじる必要がある。
それはソースコードを開いて自力で見つけ出すことだな。
GitHubでオープンソースのフォローbotを貰ってくるのもいい方法だ。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/R-H/20110907/1315354486