NeverBlog::Likk::Unexistable;

見なかったことにして下さい

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の指摘とかもありがとう御座います><