既存リスト内のメンバーとフォロワーorフォローしてるひと(フォロイー)の差分をとってリストに突っ込む。

のるるんが想像以上にでかくてびびった。
のるるんが想像以上にでかくてびびった。

TimeLine Copier – Twitterでフォローしてる人をリストにコピーするツール
のるるん先生イベントに行こうとしたらおもくそ寝坊して14時だったので、前からやろうやろうと思っていたlistのコードの整理をしてみました。
リーダブルコードを途中まで読んだので「よっしゃ実践してみよう!」と思ったのですが実際やってみると結構難しくて全然うまく行きませんでした。
あの本読むと不思議と「あれ?めっちゃ簡単にできんじゃね?」って気分になるのがすごいです。
それでも前よりはだいぶすっきりした気がします(前がひどすぎたので相対的に綺麗に見える)。一個の関数に全部ぶち込んでるのは仕様です。
ついでに、既存のリスト内のメンバーとFollowing(or Follower)の差分をとってリストに突っ込む機能を追加しました。
ログ見てると結構高頻度に毎回リスト作り直してる方がいらっしゃるようで、1回1回新しいリスト作るの面倒臭いだろうし既存リストに新しいユーザー追加できたほうがいいだろう、と思って作ったのですが、こういうのもう既にありそうですね。

リストに登録した人と登録に失敗してる人(登録されてない人)の差分を取る関数はこんな感じです。

#$ntはNet::Twitter::Liteのオブジェクト
sub getFaultedMember {
	my $list_id = shift; #リストのID
	my $mem = shift; #比較対象リストのリファレンス

	my $cursor = -1;
	my $list_members = $nt->list_members({list_id => $list_id, cursor => $cursor});

	my @list_mem;
	for my $a (@{$list_members->{users}}){
		push(@list_mem,$a->{id_str});
	}
	$cursor = $list_members->{next_cursor};
	while ($cursor != 0){
		$list_members = $nt->list_members({list_id => $list_id, cursor => $cursor});
		for my $a (@{$list_members->{users}}){
			push(@list_mem,$a->{id_str});
		}
		$cursor = $list_members->{next_cursor};
	}

	my $lc = List::Compare->new($mem, @list_mem);
	my @only = $lc->get_Lonly; #登録されてないひとリスト
	return @only;
}

あと、増税前にREALFORCE91Uを買って、先日やっと届いたので使っているのですがキー打ってるだけでほんと幸せな気持ちになれます。タッチタイプできないけど。

追記

バグってるのに気づいたので出先でタブレット使って修正してみました。一行くらい修正してホットデプロイするくらいならなんとかなっちゃうんですね。
ついでにメイン処理も関数化したのでだいぶ見通しが良くなりました。