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-uriUAってなんて書いてあるのかな?