hensei-api/lib/granblue/downloaders/elemental_weapon_downloader.rb
Justin Edmund 551c2609b0 Add downloaders
Downloaders take Granblue IDs and download images for those items from the Granblue Fantasy server in all relevant sizes.

Downloaders can download to disk or stream the file directly to S3.
2025-01-12 16:02:51 -08:00

47 lines
1.3 KiB
Ruby

# frozen_string_literal: true
require_relative 'weapon_downloader'
module Granblue
module Downloader
class ElementalWeaponDownloader < WeaponDownloader
SUFFIXES = [2, 3, 4, 1, 6, 5].freeze
def initialize(id_base)
@id_base = id_base.to_i
end
def download
(1..6).each do |i|
id = @id_base + (i - 1) * 100
suffix = SUFFIXES[i - 1]
puts "Elemental Weapon #{id}_#{suffix}"
SIZES.each do |size|
path = download_path(size)
url = build_url_for_id(id, size)
filename = "#{id}_#{suffix}.jpg"
download_elemental_image(url, size, path, filename)
end
progress_reporter(count: i, total: 6, result: "Elemental Weapon #{id}_#{suffix}")
end
end
private
def build_url_for_id(id, size)
directory = directory_for_size(size)
"#{base_url}/#{directory}/#{id}.jpg"
end
def progress_reporter(count:, total:, result:, bar_len: 40)
filled_len = (bar_len * count / total).round
status = result
percents = (100.0 * count / total).round(1)
bar = '=' * filled_len + '-' * (bar_len - filled_len)
print("\n[#{bar}] #{percents}% ...#{' ' * 14}#{status}\n")
end
end
end
end