Last active
December 9, 2019 20:45
-
-
Save takehiko/d4b0f318d227369e0ce8cbf91253485c to your computer and use it in GitHub Desktop.
Free song extractor for beatmania IIDX ULTIMATE MOBILE
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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