Hatena::Groupsubtech

#生存戦略 、それは

-> 06 { 10 / 04 }

グループ間対抗ブクマカウンターバトル

17:08 | はてなブックマーク - グループ間対抗ブクマカウンターバトル - #生存戦略 、それは

サブテクは三位かぁ…。

  1. g:fragments - 14884
  2. g:hatena - 9493
  3. g:subtech - 3267
  4. g:beta - 2686
  5. g:mohican - 2133
  6. g:leftovers - 1504
  7. g:neo - 1396
  8. g:dogfood - 613
  9. g:lightnovel - 532
  10. g:pico - 502
  11. g:hatenadiary - 502
  12. g:neocup - 443
  13. g:css - 425
  14. g:guide - 269
  15. g:orera - 213
  16. g:monsterhunter - 199
  17. g:secretsociety - 164
  18. g:plagger - 154
  19. g:nikki - 144
  20. g:rubyist - 141
  21. g:haskell - 122
  22. g:book - 99
  23. g:downer - 95
  24. g:flicker - 83
  25. g:chinese - 62
  26. g:train - 48
  27. g:freebsd - 45
  28. g:theme - 44
  29. g:jigokugumi - 43
  30. g:onlinegames - 43
#!/usr/bin/env ruby

require 'xmlrpc/client'
require 'open-uri'

grouplist = 'http://g.hatena.ne.jp/grouplist?of=%s&s=membercount&r=1'
groups = []

of = 0
10.times do
  uri = grouplist % of
  groups << open(uri).read.scan(%r{(http://\w+\.g\.hatena\.ne\.jp/)register})
  of += 20
end

results = {}
server = XMLRPC::Client.new('b.hatena.ne.jp', '/xmlrpc')
groups.flatten.sort.uniq.each do |uri|
  count = server.call('bookmark.getTotalCount', uri) rescue retry
  gname = *uri.scan(%r{http://([^\.]+)})
  results[gname] = count if count > 0
end

results.sort_by {|i| i.last}.reverse.to_a.first(30).each {|g,c| puts "+ g:#{g} - #{c}" }