はてなブックマーク お気に入られ数ランキング (2010/11/05)
はてなブックマーク お気に入られ数ランキング (2010/09/23) - でぶぬる日記
前回と同様、はてなブックマークのお気に入られ数ランキングを作ってみました。
前回と異なる点は以下の通りです。
総ブックマーク数の取得
各ユーザのRSSフィードに含まれる、"opensearch:totalResults" に、ユーザの総ブックマーク数が含まれているみたいですので、それを自動で取得してみました。
Ruby添付のRSS Parserでは(というか多分RSS Parser全般では)OpenSearch関連のタグは認識出来そうにないこともあり、NokogiriのXML Parserで無理やり読み込んであげています。
ついでなので今回は、総ブックマーク数のランキングも出しています。
最新ブックマーク日時の取得
非アクティブなユーザをランキングから除外する為に、最新のブックマーク日時も取得するようにしてみました。
生データ(CSVファイル)については、もしニーズがあれば公開したいと思います。@aquarlaまでお気軽にご連絡ください。
お気に入られ数のランキング
順位 | ID | お気に入られ数 | 総ブックマーク |
---|---|---|---|
1 | naoya | 2095 | 7975 |
2 | hatenabookmark | 1590 | 92 |
3 | otsune | 1409 | 101074 |
4 | jkondo | 1386 | 3063 |
5 | umedamochio | 1325 | 12417 |
6 | y_arim | 1251 | 18240 |
7 | kanose | 1170 | 69190 |
8 | Hamachiya2 | 1154 | 2667 |
9 | amachang | 1130 | 3628 |
10 | fromdusktildawn | 1100 | 10582 |
11 | miyagawa | 1059 | 24544 |
12 | finalvent | 954 | 31647 |
13 | guldeen | 928 | 35698 |
14 | kensuu | 870 | 11913 |
15 | yuiseki | 727 | 132765 |
16 | REV | 721 | 71506 |
17 | ashitano244 | 689 | 5928 |
18 | HolyGrail | 664 | 21537 |
19 | kokorosha | 654 | 5110 |
20 | koizuka | 646 | 19599 |
21 | ululun | 621 | 38657 |
22 | maname | 590 | 69 |
23 | secondlife | 521 | 3986 |
24 | pha | 506 | 9359 |
25 | complex_cat | 474 | 24345 |
26 | laiso | 471 | 35142 |
27 | nitoyon | 470 | 6371 |
28 | kanimaster | 469 | 42167 |
28 | netafull | 469 | 3965 |
30 | wacky | 460 | 20895 |
31 | kotorikotoriko | 446 | 5068 |
32 | nipotan | 435 | 5435 |
33 | higepon | 434 | 3582 |
34 | jt_noSke | 431 | 56384 |
35 | TAKESAKO | 423 | 17117 |
36 | wideangle | 420 | 32149 |
37 | mereco | 410 | 3618 |
38 | NATROM | 403 | 6100 |
39 | yamifuu | 400 | 72746 |
40 | ekken | 397 | 19650 |
41 | kyo_ju | 396 | 24112 |
42 | gotanda6 | 392 | 6429 |
42 | antipop | 392 | 8217 |
44 | FTTH | 390 | 26823 |
44 | zu2 | 390 | 21505 |
46 | Kamekiti | 386 | 6771 |
47 | westerndog | 381 | 114225 |
47 | kawasaki | 381 | 11392 |
47 | umeten | 381 | 30752 |
50 | tsupo | 377 | 20516 |
51 | Delete_All | 373 | 4228 |
52 | kawango | 372 | 681 |
53 | pollyanna | 368 | 584 |
54 | yto | 367 | 2455 |
55 | jazzanova | 363 | 37057 |
55 | lovelovedog | 363 | 4626 |
57 | FUKAMACHI | 357 | 6074 |
58 | ono_matope | 353 | 9536 |
59 | KoshianX | 351 | 19242 |
60 | yellowbell | 347 | 6455 |
61 | hatayasan | 344 | 32433 |
62 | myrmecoleon | 331 | 27620 |
63 | inumash | 328 | 11339 |
64 | kaitoster | 326 | 11917 |
65 | rikuo | 324 | 16560 |
66 | yachimon | 313 | 31036 |
66 | kurokuragawa | 313 | 15309 |
68 | lovecall | 311 | 9902 |
68 | vantguarde | 311 | 18521 |
70 | SeiSaguru | 308 | 9451 |
71 | hejihogu | 303 | 33607 |
72 | rna | 302 | 18989 |
73 | BUNTEN | 298 | 14374 |
74 | kusigahama | 297 | 23004 |
75 | noreply | 296 | 262 |
76 | girls_fashion | 294 | 112454 |
77 | hotomaru | 290 | 16851 |
78 | toya | 288 | 21266 |
79 | ryuzi_kambe | 287 | 18031 |
80 | hiroyukiegami | 286 | 12937 |
81 | retlet | 285 | 54197 |
82 | crow2008 | 281 | 12432 |
82 | nkoz | 281 | 80727 |
84 | yappo | 279 | 5833 |
84 | WinterMute | 279 | 10343 |
86 | suVene | 278 | 15356 |
87 | feita | 277 | 20144 |
88 | yugui | 276 | 13553 |
89 | cho45 | 275 | 4036 |
90 | b4-tt | 271 | 63392 |
90 | medtoolz | 271 | 1624 |
92 | mala | 266 | 25 |
93 | steam_heart | 265 | 18771 |
94 | n-styles | 264 | 2604 |
95 | essa | 263 | 1684 |
95 | feather_angel | 263 | 11593 |
97 | TakahashiMasaki | 261 | 45273 |
98 | massunnk | 258 | 10944 |
99 | blackshadow | 257 | 12698 |
100 | funaki_naoto | 255 | 50175 |
総ブックマーク数のランキング
順位 | ID | 総ブックマーク | お気に入られ数 |
---|---|---|---|
1 | A410 | 134103 | 103 |
2 | yuiseki | 132765 | 727 |
3 | toronei | 126561 | 195 |
4 | westerndog | 114225 | 381 |
5 | girls_fashion | 112454 | 294 |
6 | Naruhodius | 111389 | 146 |
7 | zephyr_82 | 109903 | 69 |
8 | otsune | 101074 | 1409 |
9 | RanTairyu | 86014 | 138 |
10 | nkoz | 80727 | 281 |
11 | minazuki6 | 78468 | 139 |
12 | pongpongland | 77602 | 242 |
13 | yamifuu | 72746 | 400 |
14 | REV | 71506 | 721 |
15 | ak9 | 71479 | 250 |
16 | kanose | 69190 | 1170 |
17 | activecute | 69021 | 236 |
18 | Donca | 64998 | 49 |
19 | b4-tt | 63392 | 271 |
20 | solunaris149 | 63090 | 61 |
21 | Nean | 61069 | 175 |
22 | bsiyo | 56893 | 92 |
23 | jt_noSke | 56384 | 431 |
24 | wackunnpapa | 55160 | 142 |
25 | retlet | 54197 | 285 |
26 | yuu-kuni | 53140 | 213 |
27 | funaki_naoto | 50175 | 255 |
28 | TakahashiMasaki | 45273 | 261 |
29 | kechack | 44757 | 165 |
30 | iriso | 44340 | 13 |
31 | pema | 43868 | 84 |
32 | kanimaster | 42167 | 469 |
33 | sankaseki | 41832 | 190 |
34 | CAX | 41749 | 124 |
35 | wartanenemon | 39065 | 64 |
36 | ululun | 38657 | 621 |
37 | kozai | 37957 | 179 |
38 | zyugem | 37292 | 126 |
39 | jazzanova | 37057 | 363 |
40 | cubisme_face | 36973 | 32 |
41 | giffie11 | 36584 | 58 |
42 | cloverleaf24 | 36492 | 172 |
43 | ore_de_work | 36364 | 195 |
44 | mosshm | 36249 | 185 |
45 | fs001493 | 36074 | 174 |
46 | guldeen | 35698 | 928 |
47 | pc_nagomu | 35317 | 75 |
48 | bunoum | 35184 | 109 |
49 | zonia | 35156 | 225 |
50 | laiso | 35142 | 471 |
51 | advblog | 34330 | 194 |
52 | mikomiko77 | 33785 | 142 |
53 | hejihogu | 33607 | 303 |
54 | nilab | 33391 | 201 |
55 | acqua_alta | 33317 | 235 |
56 | mickn | 32985 | 67 |
57 | brainparasite | 32953 | 225 |
58 | rosa_nera | 32603 | 32 |
59 | hatayasan | 32433 | 344 |
60 | wideangle | 32149 | 420 |
61 | akillerOKN | 31945 | 116 |
62 | nofrills | 31838 | 162 |
63 | finalvent | 31647 | 954 |
64 | toratorazero | 31214 | 158 |
65 | yachimon | 31036 | 313 |
66 | kashmir108 | 30756 | 141 |
67 | umeten | 30752 | 381 |
68 | sassano | 30652 | 120 |
69 | rahoraho | 30571 | 69 |
70 | memoclip | 30317 | 233 |
71 | pho | 30163 | 203 |
72 | dododod | 30027 | 149 |
73 | gouzou | 30026 | 138 |
74 | Itisango | 29446 | 55 |
75 | denken | 28350 | 176 |
76 | myrmecoleon | 27620 | 331 |
77 | atasinti | 27476 | 26 |
78 | wanderingdj | 27314 | 109 |
79 | rekramkoob | 27306 | 59 |
80 | brax | 27083 | 132 |
81 | tailtame | 27047 | 119 |
82 | tarchan | 26830 | 59 |
83 | FTTH | 26823 | 390 |
84 | sarutoru | 26638 | 45 |
85 | mfluder | 26629 | 43 |
86 | sirouto2 | 26621 | 218 |
87 | unproblematic | 26596 | 80 |
88 | kennak | 26559 | 121 |
89 | snow113 | 26450 | 52 |
90 | colombo | 26384 | 93 |
91 | maple_magician | 26374 | 26 |
92 | F-name | 26097 | 129 |
93 | kiku72 | 25973 | 176 |
94 | oguogu | 25666 | 81 |
95 | yomiusi | 25518 | 64 |
96 | sphynx | 25272 | 36 |
97 | kno | 25241 | 70 |
98 | s1090018 | 25184 | 138 |
99 | Cat-Tram | 25155 | 58 |
100 | k_wizard | 25136 | 102 |
ソースコードはこんな感じ
require 'open-uri' require 'rubygems' require 'json' require 'rss' require 'nokogiri' usernames = ["aquarla"] done_usernames = [] # お気に入られ数を取得 def get_followers(username) json_url = "http://b.hatena.ne.jp/#{username}/follower.json" open(json_url) do |f| JSON.parse(f.read) end end # はてブRSSをXMLとして取得 def open_hatebu_rss(username) rss_url = "http://b.hatena.ne.jp/#{username}/rss" open(rss_url) do |file| yield file.read end end # XMLから最も新しいブックマークの作成時刻を取得 def get_latest_created_at(xml) RSS::Parser.parse(xml).items[0].date.localtime.strftime("%Y-%m-%d %H:%M:%S") rescue nil end # XMLから現在の総ブックマーク数を取得 def get_bookmark_count(xml) # Nokogiriは、namespaceを厳密に指定してあげないと動作しなかったりするみたい namespaces = { 'opensearch' => 'http://a9.com/-/spec/opensearchrss/1.0/', } Nokogiri::XML.parse(xml).at('.//opensearch:totalResults', namespaces).text.to_i rescue -1 end # メインルーチンはここから while !usernames.empty? username = usernames.shift next if done_usernames.include?(username) begin followers = get_followers(username) latest_created_at, bookmark_count = open_hatebu_rss(username) do |xml| [get_latest_created_at(xml), get_bookmark_count(xml)] end puts "#{username},#{followers.size},#{latest_created_at},#{bookmark_count}" STDOUT.flush sleep(5) followers.each do |f| usernames.push(f["name"]) end rescue StandardError,Timeout::Error puts "#{username}" end done_usernames.push(username) end