Skip to content

Instantly share code, notes, and snippets.

@takehiko
Last active December 9, 2019 20:45
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save takehiko/d4b0f318d227369e0ce8cbf91253485c to your computer and use it in GitHub Desktop.
Save takehiko/d4b0f318d227369e0ce8cbf91253485c to your computer and use it in GitHub Desktop.
Free song extractor for beatmania IIDX ULTIMATE MOBILE
#!/usr/bin/env ruby
require "kconv"
# iidxum-extractor.rb : Free song extractor for beatmania IIDX ULTIMATE MOBILE
# by takehikom
# see also: https://takehikom.hateblo.jp/entry/2019/12/10/000000
# beatmania IIDX ULTIMATE MOBILEの楽曲一覧
# (https://p.eagate.573.jp/game/2dx/mobile/music/game.html?game_id=27.0 など)
# から無料でプレイできる楽曲を取り出す。このプログラムは通信をせず、
# 1.0, 1.5, 2.0, 3.0, ..., 27.0(という名前)の各ファイルを読み出す。
class IIDXumExtractor
def initialize
init_version_hash
@versions = @version_hash.keys
# @versions = ((1..27).map { |i| i.to_f } + [1.5]).sort
end
def init_version_hash
@version_hash = {}
DATA.each_line do |line|
if /,/ =~ line.strip
@version_hash[$`.to_f] = $'
end
end
end
def extract(ver)
html = open(ver.to_s).read
html2 = html.toutf8
# html2.sub!(/charset=shift.?jis/, "charset=utf-8")
result = []
html2.scan(/<tr class="free"><td>(.*?)<\/td><td>(.*?)<\/td>/) do |u, v|
# '<tr class="free"><td>Calvados Queen</td><td>OSTER project feat. かなたん</td>'
# のとき,u = 'Calvados Queen', v = 'OSTER project feat. かなたん'
result << [u, v]
end
result
end
def start
total = 0
@versions.each do |ver|
next if !test(?f, ver.to_s)
print @version_hash[ver]
result = extract(ver)
puts ": #{result.length} song#{result.length == 1 ? '' : 's'}"
total += result.length
result.each do |u, v|
puts " #{u} | #{v}"
end
puts
end
puts "Total: #{total} songs"
end
end
if __FILE__ == $0
IIDXumExtractor.new.start
end
__END__
1.0,beatmania IIDX
1.5,beatmania IIDX substream
2.0,beatmania IIDX 2nd style
3.0,beatmania IIDX 3rd style
4.0,beatmania IIDX 4th style
5.0,beatmania IIDX 5th style
6.0,beatmania IIDX 6th style
7.0,beatmania IIDX 7th style
8.0,beatmania IIDX 8th style
9.0,beatmania IIDX 9th style
10.0,beatmania IIDX 10th style
11.0,beatmania IIDX 11 IIDXRED
12.0,beatmania IIDX 12 HAPPY SKY
13.0,beatmania IIDX 13 DistorteD
14.0,beatmania IIDX 14 GOLD
15.0,beatmania IIDX 15 DJ TROOPERS
16.0,beatmania IIDX 16 EMPRESS
17.0,beatmania IIDX 17 SIRIUS
18.0,beatmania IIDX 18 Resort Anthem
19.0,beatmania IIDX 19 Lincle
20.0,beatmania IIDX 20 tricoro
21.0,beatmania IIDX 21 SPADA
22.0,beatmania IIDX 22 PENDUAL
23.0,beatmania IIDX 23 copula
24.0,beatmania IIDX 24 SINOBUZ
25.0,beatmania IIDX 25 CANNON BALLERS
26.0,beatmania IIDX 26 Rootage
27.0,beatmania IIDX 27 HEROIC VERSE
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment