class Gamerom::RepoAdapters::Coolrom

Coolrom - An adapter for the CoolROM repository website

Constants

PLATFORM

Public Class Methods

extract_games(platform) { |map { |game_link| game(game_link, region) }| ... } click to toggle source
# File lib/gamerom/repo_adapters/coolrom.rb, line 47
def self.extract_games(platform)
  sections.each_with_index do |section, index|
    page = nokogiri_get("https://coolrom.com.au/roms/#{platform}/#{section}/")
    regions = page.css('input.region').map { |i| i['name'] }
    regions.each do |region|
      game_links = page.css("div.#{region} a")
      yield game_links.map { |game_link| game(game_link, region) }, index
    end
  end
end
game(game_link, region) click to toggle source
# File lib/gamerom/repo_adapters/coolrom.rb, line 58
def self.game(game_link, region)
  {
    id: game_link['href'].split('/')[3].to_i,
    name: game_link.text,
    region: region,
  }
end
install(game) { |filename| ... } click to toggle source
# File lib/gamerom/repo_adapters/coolrom.rb, line 66
def self.install(game)
  agent = Mechanize.new
  agent.pluggable_parser.default = Mechanize::Download
  agent.user_agent = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.93 Safari/537.36'

  response = nil
  agent.progressbar do
    response = agent.get("https://coolrom.com.au/downloader.php?id=#{game.id}")
  end

  return unless response.code.to_i == 200

  filename = response.filename
  FileUtils.mkdir_p(game.filepath)
  response.save!("#{game.filepath}/#{filename}")
  yield [filename]
end
platforms() click to toggle source
# File lib/gamerom/repo_adapters/coolrom.rb, line 39
def self.platforms
  PLATFORM
end
sections() click to toggle source
# File lib/gamerom/repo_adapters/coolrom.rb, line 43
def self.sections
  ('a'..'z').to_a.unshift('0')
end