class Gamerom::RepoAdapters::Romnation
Romnation
- An adapter for the ROMNation repository website
Constants
- PLATFORM
Public Class Methods
extract_games(platform) { |extract_games_from_section_pages(platform, section, pages), index| ... }
click to toggle source
# File lib/gamerom/repo_adapters/romnation.rb, line 58 def self.extract_games(platform) sections.each_with_index do |section, index| pages = extract_pages(platform, section) yield extract_games_from_section_pages(platform, section, pages), index end end
extract_games_from_section_pages(platform, section, pages)
click to toggle source
# File lib/gamerom/repo_adapters/romnation.rb, line 72 def self.extract_games_from_section_pages(platform, section, pages) pages.reduce([]) do |section_games, p| page = nokogiri_get("https://www.romnation.net/srv/roms/#{platform}/#{section}/page-#{p}_sort-title.html") games_links = page.css('table.listings td.title a') section_games.append(*games_links.map { |game_link| game(game_link) }) end end
extract_pages(platform, section)
click to toggle source
# File lib/gamerom/repo_adapters/romnation.rb, line 65 def self.extract_pages(platform, section) page = nokogiri_get("https://www.romnation.net/srv/roms/#{platform}/#{section}/sort-title.html") pages = ['1'] pages = page.css('.pagination').first.css('a').map(&:text).map(&:strip).reject(&:empty?) unless page.css('.pagination').empty? pages end
game(game_link)
click to toggle source
# File lib/gamerom/repo_adapters/romnation.rb, line 80 def self.game(game_link) game_info = GameInfo.new(game_link.text) { id: game_link['href'].split('/')[3].to_i, name: game_link.text, region: game_info.region, tags: game_info.tags, } end
install(game) { |filename| ... }
click to toggle source
# File lib/gamerom/repo_adapters/romnation.rb, line 90 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' page = agent.get("https://www.romnation.net/download/rom/#{game.id}") response = nil agent.progressbar do response = page.link_with(text: 'Download This Rom').click end return unless response.code.to_i == 200 filename = CGI.unescape(response.filename.split('_host=').first) FileUtils.mkdir_p(game.filepath) response.save!("#{game.filepath}/#{filename}") yield [filename] end
platforms()
click to toggle source
# File lib/gamerom/repo_adapters/romnation.rb, line 50 def self.platforms PLATFORM end
sections()
click to toggle source
# File lib/gamerom/repo_adapters/romnation.rb, line 54 def self.sections ('a'..'z').to_a.unshift('0') end