Update logic for downloaders

These are responsible for downloading variants (01, 02, etc)
This commit is contained in:
Justin Edmund 2025-01-15 19:12:02 -08:00
parent db9be1aee9
commit 29c52469a3
3 changed files with 121 additions and 0 deletions

View file

@ -3,8 +3,48 @@
module Granblue module Granblue
module Downloader module Downloader
class CharacterDownloader < BaseDownloader class CharacterDownloader < BaseDownloader
def download
character = Character.find_by(granblue_id: @id)
return unless character
download_variants(character)
end
private private
def download_variants(character)
# All characters have 01 and 02 variants
variants = ["#{@id}_01", "#{@id}_02"]
# Add FLB variant if available
variants << "#{@id}_03" if character.flb
# Add ULB variant if available
variants << "#{@id}_04" if character.ulb
log_info "Downloading character variants: #{variants.join(', ')}" if @verbose
variants.each do |variant_id|
download_variant(variant_id)
end
end
def download_variant(variant_id)
log_info "-> #{variant_id}" if @verbose
return if @test_mode
SIZES.each_with_index do |size, index|
path = download_path(size)
url = build_variant_url(variant_id, size)
process_download(url, size, path, last: index == SIZES.size - 1)
end
end
def build_variant_url(variant_id, size)
directory = directory_for_size(size)
"#{@base_url}/#{directory}/#{variant_id}.jpg"
end
def object_type def object_type
'character' 'character'
end end

View file

@ -3,8 +3,50 @@
module Granblue module Granblue
module Downloader module Downloader
class SummonDownloader < BaseDownloader class SummonDownloader < BaseDownloader
def download
summon = Summon.find_by(granblue_id: @id)
return unless summon
download_variants(summon)
end
private private
def download_variants(summon)
# All summons have base variant
variants = [@id]
# Add ULB variant if available
variants << "#{@id}_02" if summon.ulb
# Add Transcendence variants if available
if summon.transcendence
variants.push("#{@id}_03", "#{@id}_04")
end
log_info "Downloading summon variants: #{variants.join(', ')}" if @verbose
variants.each do |variant_id|
download_variant(variant_id)
end
end
def download_variant(variant_id)
log_info "-> #{variant_id}" if @verbose
return if @test_mode
SIZES.each_with_index do |size, index|
path = download_path(size)
url = build_variant_url(variant_id, size)
process_download(url, size, path, last: index == SIZES.size - 1)
end
end
def build_variant_url(variant_id, size)
directory = directory_for_size(size)
"#{@base_url}/#{directory}/#{variant_id}.jpg"
end
def object_type def object_type
'summon' 'summon'
end end

View file

@ -3,8 +3,47 @@
module Granblue module Granblue
module Downloader module Downloader
class WeaponDownloader < BaseDownloader class WeaponDownloader < BaseDownloader
def download
weapon = Weapon.find_by(granblue_id: @id)
return unless weapon
download_variants(weapon)
end
private private
def download_variants(weapon)
# All weapons have base variant
variants = [@id]
# Add transcendence variants if available
if weapon.transcendence
variants.push("#{@id}_02", "#{@id}_03")
end
log_info "Downloading weapon variants: #{variants.join(', ')}" if @verbose
variants.each do |variant_id|
download_variant(variant_id)
end
end
def download_variant(variant_id)
log_info "-> #{variant_id}" if @verbose
return if @test_mode
SIZES.each_with_index do |size, index|
path = download_path(size)
url = build_variant_url(variant_id, size)
process_download(url, size, path, last: index == SIZES.size - 1)
end
end
def build_variant_url(variant_id, size)
directory = directory_for_size(size)
"#{@base_url}/#{directory}/#{variant_id}.jpg"
end
def object_type def object_type
'weapon' 'weapon'
end end