Twitter で「はてなダイアラー」ときゃっふきゃっふしよう!
と言うわけで
ツイッターをやっているはてなダイアラーランキング Top 100 を作ってみた!
さらに
500 位までの人を以下のリストにまとめてみました
@amachang/hatena-top-500 on Twitter
けっこう、おもしろいタイムラインになっております!
じゃんじゃんフォローしちゃおう!きゃっふきゃっふしよう><
まとめ
こうやって見ると、みんなけっこうツイッターやってるんですね!
つんつくつん (σ・e・)σ(≧ェ≦;)
べ、べつに Twitter 記法を使ってみたかったわけじゃないんだからね!(///
おまけ「このリストの作り方」
最後にこのリストを作る方法を紹介します。
1. TopHatenar から「はてブ数」の多い「はてなダイアラー」を抽出する
まずは、 ブログランキングサイト [TopHatenar] から上から 5000 人のはてな ID を以下のプログラムを使って抽出してきます。
#! /usr/bin/perl use strict; use warnings; use LWP::Simple; use HTML::TreeBuilder::XPath; sub get_rank_url { my $offset = shift; $offset += 1; return 'http://tophatenar.com/ranking/bookmark/' . $offset . '?blog=hatena'; } sub get_tree { my $url = shift; my $tree = HTML::TreeBuilder::XPath->new; my $content = get($url); $tree->parse($content); $tree->eof(); } sub main { for (my $i = 0; $i < 100; $i++) { my $url = get_rank_url($i * 50); my $tree = get_tree($url); my @nodes = $tree->findnodes('//table[contains(@class, "ranking")]//tr/td[2]/a'); for my $node (@nodes) { print($node->as_text() . "\n"); } warn($url . "\n"); sleep(2) } } main();2. 抽出した「はてなダイアラー」から id:furyu-tei さんが作った API で Twitter ID を抽出する
はてなID ⇔ Twitterユーザー名の相互変換APIを作ってみました - 風柳メモ
この API は、 http://www.hatena.ne.jp/はてなID のページから Twitter にリンクされてる場合に Twitter ID を抽出できます。
ですので、この時点でだいぶ絞られることになりますね。
以下のプログラムは、 hatena_id と twitter_id の対を CSV 形式で出力します。#! /usr/bin/perl use strict; use warnings; use LWP::Simple; use JSON::XS; my $diary_id; while ($diary_id = <>) { chomp($diary_id); my $content = get('http://hatena-anohito.appspot.com/c/?hatena_id=' . $diary_id); my $obj = decode_json($content); if (defined($obj->{twitter}->{screen_name})) { print($obj->{hatena}->{id} . ',' . $obj->{twitter}->{screen_name} . "\n"); } warn('http://hatena-anohito.appspot.com/c/?hatena_id=' . $diary_id . "\n"); sleep(2); }3. はてな記法の出力
以下のプログラムで、 はてな記法を出力します。
#! /usr/bin/perl use strict; use warnings; my $rank = 1; my $line; while ($line = <>) { chomp($line); if ($line =~ m/^([a-zA-Z0-9_-]+),([a-zA-Z0-9_-]+)$/) { warn $line . "\n"; my $diary_id = $1; my $twitter_id = $2; print('|' . $rank . '|id:' . $diary_id . '|twitter:@' . $twitter_id . "|\n"); } else { die 'bad line'; } $rank ++; }4. Twitter のリストに追加する
以下のプログラムで、 @amachang/hatena-top-500 on Twitter に Top 500 人を追加します。
#! /usr/bin/perl use strict; use warnings; use Net::Twitter::Lite; my $username = 'ゆーざーめい'; my $password = 'ぱすわーど'; my $listname = 'りすとめい'; my $twitter = Net::Twitter::Lite->new( username => $username, password => $password ); my $line; my $count = 0; while ($line = <>) { chomp($line); if ($line =~ m/^([a-zA-Z0-9_-]+),([a-zA-Z0-9_-]+)$/) { warn $line . "\n"; my $user = $2; eval { $twitter->add_list_member($username, $listname, $user); }; } else { die 'bad line'; } $count++; unless ($count < 600) { last; } }5. あとは、ちょこっと文章書いて!
投稿するだけ!