8bitpeopleチップチューン
久しぶりに「8bitpeople」に行くと、音楽がすっげ増えてる。
8bitpeopleとはネットで活動しているレーベルで、主な曲調としては「チップチューン」いわゆる「ピコピコ音」やら「ファミコン時代の音楽」。
んで、以前ダウンロードした曲も無くしてしまったので、一気にダウンロードしてしまおうと思いrubyでスクリプトを組んだ。
#!/usr/bin/ruby -Ku require "open-uri" LogFile = "log.txt" url = ARGV[0] jamp = 0 if(!ARGV[1].empty?) jamp = ARGV[1].to_i end def logger(url, f) print "*** get #{url} ***\n" print "\t#{f.status}\n\n" end if(!url.match(%r!https?://.+/!)) print "argmet ERROR : First argment must be URI\n" exit end rootFile = nil open(url){ | f | rootFile = f.read logger(url, f) } i=0 rootFile.gsub(%r!<a[^<>]+href=('|")?(http://)?[^#"' ]+\.mp3('|")?( |>)!){ | m | if(jamp == 0) print "target #{m}\n" m.gsub(%r!((http|ftp)://.+.mp3)!){ | mm | mm.gsub(%r![^/]+.mp3!){ | nn | i += 1 p i open(mm){ | f | print "stored in #{nn}\n" open(nn, "w"){ | ff | ff.print f.read } logger(mm, f) } } } #DDos対策に対する対策 #sl = rand(50) #print "sleep #{sl}\n\n" #sleep(sl) else jamp -= 1 i += 1 end }
使い方はコマンドライン上で、
ruby スクリプト名.rb http://www.8bitpeoples.com/discography_gfx.php 0
とやればモリモリmp3ファイルが落ちてくる。
- 第一引数は.mp3へのリンクを持つHTMLファイルのURL
- 第二引数はスキップする数。
・・・・cygwinで動かしたらwindowsのファイアウォールに怒られた。
追記 : どうやらhttp://www.8bitpeoples.com/discography_gfx.php内にリンクがあるFTPサーバはこのスクリプトを受け付けないみたい。そういやrubyのopen-uriのUAってなんて書いてあるのかな?