Wassrでfollowingに居ないfollowersをfollowする
Wassr でイチイチ更新を購読するのが面倒くさい - にぽたん研究所(と関連するエントリ)を見て、便利そうだなと思いつつも レンサバでメール設定が面倒なので、ちっと加えてみた。
まず、WWW::Wassr にfollowers メソッドと followingメソッド追加しました。
my $wassr = WWW::Wassr->new( user => 'username', passwd => 'password', ); $wassr->login(); my $from = $wassr->following(); my $to= $wassr->followers(); print Data::Dumper::Dumper $from #講読ユーザ一覧 print Data::Dumper::Dumper $to #被講読ユーザ一覧
followers & following ともに、ID,Nameが返ってきます。加えて相互講読している場合はridが返ってきます。
つまり、followers リストでrid が無いユーザは、被講読のみです。こいつを講読すればいいのです。
これであれば、既に講読されていてるが、まだ講読してない(再度講読のメールが飛んでくる可能性が薄い)ユーザ全体も対象にできます。
ということで、以下スクリプト
use strict; use warnings; use WWW::Wassr; my @ignore_list = (); my $wassr = WWW::Wassr->new( user => 'username', passwd => 'password', ); $wassr->login(); my $followers = $wassr->followers(); for (@$followers){ if($_->{rid} eq '' and any_eq($_->{id},\@ignore_list)){ $wassr->follow($_->{id}); } } sub any_eq { my $id = shift; my $list = shift; for (@$list){ return 0 if $_ eq $id } return 1 }
あと、敢えて講読にしてねーんだよ!というID の方がいれば @ignore_list にIDを指定してあげれば、それは飛ばしてくれます。
WWW::Wassr は、ツリー内に trunk とか掘らないで直下に入ってたので、動かしてもらったほうが良いかもですね。
ご指摘ありがとう御座います。掘った気になってましたが忘れてたようです。
id:tokuhirom が掘ってくれました ウh(自重 あと、typoの指摘とかもありがとう御座います><