ruby aikatsup.rb 大空あかり キャラ["19", "20", "23", "36", "37", "38", "41", ... "4315", "4318", "4324"]
ruby aikatsup.rb 穏やかじゃない セリフ["35", "79", "167", "268", "368", "377", "383", ... "3586", "3784", "4202"]
| require "digest" | |
| require "open-uri" | |
| FILEPATH = "./aikatsup20230422.csv" | |
| EXPECTED_SHA256 = "14648f557a2ad394b513c0800afd3b1f4d1ee23964f501820a392cb6779a9a19" | |
| def download_from_github_and_succeeded | |
| URI.open("https://raw.githubusercontent.com/kaosf/AikatsuDOWN/master/data/aikatsup20230422.csv") do |file| | |
| File.open(FILEPATH, 'wb') do |output| | |
| output.write(file.read) | |
| end | |
| end | |
| File.exist?(FILEPATH) && Digest::SHA256.file(FILEPATH).hexdigest == EXPECTED_SHA256 | |
| rescue | |
| false | |
| end | |
| def download_from_source_and_succeeded | |
| URI.open("http://aikatsup.com/static/aikatsup20230422.csv") do |file| | |
| File.open(FILEPATH, 'wb') do |output| | |
| output.write(file.read) | |
| end | |
| end | |
| File.exist?(FILEPATH) && Digest::SHA256.file(FILEPATH).hexdigest == EXPECTED_SHA256 | |
| rescue | |
| false | |
| end | |
| def prepare | |
| return if File.exist?(FILEPATH) && Digest::SHA256.file(FILEPATH).hexdigest == EXPECTED_SHA256 | |
| return if download_from_github_and_succeeded | |
| return if download_from_source_and_succeeded | |
| $stderr.puts "CSV file could not be prepared." | |
| exit 1 | |
| end | |
| prepare | |
| if ARGV.size < 2 | |
| $stderr.puts "Usage: ruby aikatsup.rb 検索ワード Type=(キャラ|セリフ)" | |
| $stderr.puts "Example 1: ruby aikatsup.rb 大空あかり キャラ" | |
| $stderr.puts "Example 2: ruby aikatsup.rb 穏やかじゃない セリフ" | |
| exit 1 | |
| end | |
| keyword = ARGV[0] | |
| type = ARGV[1] | |
| require "csv" | |
| table = CSV.read(FILEPATH, headers: true) | |
| ids = | |
| case type | |
| when "キャラ" | |
| table.filter { _1[4..].include?(keyword) }.map { _1["ID"] } | |
| when "セリフ" | |
| table.filter { _1["Words"] =~ /#{keyword}/ }.map { _1["ID"] } | |
| else | |
| $stderr.puts "Invalid type." | |
| exit 1 | |
| end | |
| p ids |
ruby aikatsup.rb 大空あかり キャラ["19", "20", "23", "36", "37", "38", "41", ... "4315", "4318", "4324"]
ruby aikatsup.rb 穏やかじゃない セリフ["35", "79", "167", "268", "368", "377", "383", ... "3586", "3784", "4202"]