Saturday, February 2, 2013

guess anonymous plurk's owner

匿名噗是噗浪近期提供的新功能

主要用意是讓大家可以趁亂告白講出內心的話

不過,猜猜噗主的真實身份其實也挺有趣的

寫了一個簡單的腳本來做這件事

其中 $p 是 plurk 的 API 物件,請參考其他機器人的 code


Usage:

給定一個 plurk link ,Ex. http://www.plurk.com/p/asdfgh

看 source code 可以拿到該噗的 plurk_id      Ex. data-pid="1094072786">

傳給這個 function 即可得到統計資料分析出可能的匿名噗擁有者

原理:紀錄該噗回應的好友交集,假若交集愈大的話愈可能是匿名噗的主人


sub guess_anon_by_pid {                                                         
    my $pid = shift;                                                            
    my %pool;                                                                   
    my @rank = ();                                                              
                                                                                
    my $response = $p->callAPI('/APP/Responses/get', plurk_id => $pid);                                                                
    for my $f_list (keys $response->{friends}) {                                
        my $fri = $p->callAPI('/APP/FriendsFans/getFriendsByOffset', user_id => $f_list, limit => 300);
        for (@$fri) {                                                           
            $pool{$_->{display_name}}++ if ($_->{display_name});                
        }                                                                       
    }                                                                           
                                                                                
    for (keys %pool) {                                                          
        push @rank, [$_, $pool{$_}];                                            
    }                                                                           
                                                                                
    @rank = sort {$b->[1] >= $a->[1]} @rank;                                    
                                                                                
    say $_->[0], " => ", $_->[1] for (@rank[0..10]);                            
}

No comments:

Post a Comment