ニコニコ動画で、検索結果一覧をたどって、動画IDを保存する。動画のIDをちまちま取り出すのがめんどくさくなった。かっとなってやった。
require 'rubygems' require 'mechanize' def search( *tags ) tags = tags.map{|e| e.split }.flatten video_ids = [] m = Mechanize.new m.max_history = 2 # mechanize で1M超すファイルをDLし続けると履歴がメモリオーバーになる。 link = "http://www.nicovideo.jp/search/#{tags.join('+')}?sort=f" begin m.get link list = m.page.links.map{|e| e.href}.map{|e| e =~/watch\/(sm[0-9]+)/ ; $1}.select{|e| e} link = m.page.search("/html/head/link[@title='次のページ']/@href") video_ids.push list end while m.page.search("/html/head/link[@title='次のページ']").size>0 video_ids.flatten end
やってみる
search( "JOYSOUND配信中", " VOCALOID 殿堂入り" ).size #=> 758 search( "JOYSOUND配信中", " VOCALOID 殿堂入り" )[0..10] #=>["sm16133185", "sm16133185", "sm16110005", "sm16110005", "sm16104322", "sm16104322", "sm15977003", "sm15977003", "sm15679694", "sm15679694", "sm15622476"]
できた。