INFINITY -数学とかプログラミングとか-

統計とプログラムを使って役に立たせたい

TeX用コマンド入力を支援するための辞書をご利用ください。
sanctuary's blogは,適当なことが書いてあります。

$useridのブックマークのタグを取得。

#!/usr/bin/perl

use strict;
use warnings;
use HatenaBookmark::Number; #my director
use XML::FeedPP;
use Data::Dumper;
use Array::Uniq;

my $userid = "infinity_th4";
my @user = ($userid);

sub gettag {
    my (@user) = @_;
    my @tags = ();
    my $allnum = HatenaBookmark::Number::allnum(@user); #ユーザーのすべてのブックマーク数
    for (my $i=0;$i < $allnum;$i = $i+20){
        #tagを取得 #?
        my $source = 'http://b.hatena.ne.jp/'.$userid.'/atomfeed?of='.$i;
        
        my $feed = XML::FeedPP->new( $source );
        foreach my $item ( $feed->get_item() ) {
            my @feedtags = $item->get("dc:subject");
            
            foreach my $tag (@feedtags){
                if(defined($tag)){
                    push(@tags,$tag);
                    
                }
            }
            @tags = uniq sort {"\L$a" cmp "\L$b"} @tags; #重複削除
        }
    }
    return @tags;
}

#Get tag of $userid.
print Dumper gettag(@user);

これでは、http://b.hatena.ne.jp/infinity_th4/にあるタグの数に一致しない。
なぜなら、atomfeedでは、の部分で、小文字と大文字を区別しているからだ。
例えば、Mysqlmysqlを区別している。
しかし、http://b.hatena.ne.jp/infinity_th4/では、Mysqlmysqlを同一視している。

lc()をつかって同一視をなくす。