gamerom 0.4.1 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
metadata CHANGED
@@ -1,14 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gamerom
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.1
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Lucas Mundim
8
- autorequire:
9
8
  bindir: exe
10
9
  cert_chain: []
11
- date: 2021-05-18 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
13
  name: mechanize
@@ -16,14 +15,14 @@ dependencies:
16
15
  requirements:
17
16
  - - "~>"
18
17
  - !ruby/object:Gem::Version
19
- version: 2.8.0
18
+ version: 2.14.2
20
19
  type: :runtime
21
20
  prerelease: false
22
21
  version_requirements: !ruby/object:Gem::Requirement
23
22
  requirements:
24
23
  - - "~>"
25
24
  - !ruby/object:Gem::Version
26
- version: 2.8.0
25
+ version: 2.14.2
27
26
  - !ruby/object:Gem::Dependency
28
27
  name: mechanize-progressbar
29
28
  requirement: !ruby/object:Gem::Requirement
@@ -44,28 +43,28 @@ dependencies:
44
43
  requirements:
45
44
  - - "~>"
46
45
  - !ruby/object:Gem::Version
47
- version: 1.11.3
46
+ version: 1.19.4
48
47
  type: :runtime
49
48
  prerelease: false
50
49
  version_requirements: !ruby/object:Gem::Requirement
51
50
  requirements:
52
51
  - - "~>"
53
52
  - !ruby/object:Gem::Version
54
- version: 1.11.3
53
+ version: 1.19.4
55
54
  - !ruby/object:Gem::Dependency
56
55
  name: progressbar
57
56
  requirement: !ruby/object:Gem::Requirement
58
57
  requirements:
59
58
  - - "~>"
60
59
  - !ruby/object:Gem::Version
61
- version: 0.9.0
60
+ version: 1.13.0
62
61
  type: :runtime
63
62
  prerelease: false
64
63
  version_requirements: !ruby/object:Gem::Requirement
65
64
  requirements:
66
65
  - - "~>"
67
66
  - !ruby/object:Gem::Version
68
- version: 0.9.0
67
+ version: 1.13.0
69
68
  - !ruby/object:Gem::Dependency
70
69
  name: rest-client
71
70
  requirement: !ruby/object:Gem::Requirement
@@ -86,14 +85,14 @@ dependencies:
86
85
  requirements:
87
86
  - - "~>"
88
87
  - !ruby/object:Gem::Version
89
- version: 1.1.0
88
+ version: 1.5.0
90
89
  type: :runtime
91
90
  prerelease: false
92
91
  version_requirements: !ruby/object:Gem::Requirement
93
92
  requirements:
94
93
  - - "~>"
95
94
  - !ruby/object:Gem::Version
96
- version: 1.1.0
95
+ version: 1.5.0
97
96
  description: A command-line installer for game ROMs from many repositories.
98
97
  email:
99
98
  - lucas.mundim@gmail.com
@@ -107,6 +106,7 @@ files:
107
106
  - ".rspec"
108
107
  - ".rubocop.yml"
109
108
  - ".ruby-version"
109
+ - ".tool-versions"
110
110
  - CHANGELOG.md
111
111
  - CODE_OF_CONDUCT.md
112
112
  - Dockerfile
@@ -124,12 +124,13 @@ files:
124
124
  - lib/gamerom.rb
125
125
  - lib/gamerom/cli.rb
126
126
  - lib/gamerom/config.rb
127
+ - lib/gamerom/errors.rb
127
128
  - lib/gamerom/game.rb
128
129
  - lib/gamerom/game_info.rb
129
130
  - lib/gamerom/repo.rb
130
131
  - lib/gamerom/repo_adapter.rb
131
132
  - lib/gamerom/repo_adapters/coolrom.rb
132
- - lib/gamerom/repo_adapters/romnation.rb
133
+ - lib/gamerom/repo_adapters/edgeemu.rb
133
134
  - lib/gamerom/repo_adapters/vimm.rb
134
135
  - lib/gamerom/version.rb
135
136
  - lib/mechanizeprogress.rb
@@ -141,7 +142,7 @@ metadata:
141
142
  homepage_uri: https://github.com/lucasmundim/gamerom
142
143
  source_code_uri: https://github.com/lucasmundim/gamerom
143
144
  changelog_uri: https://github.com/lucasmundim/gamerom/blob/master/CHANGELOG.md
144
- post_install_message:
145
+ rubygems_mfa_required: 'true'
145
146
  rdoc_options: []
146
147
  require_paths:
147
148
  - lib
@@ -149,15 +150,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
149
150
  requirements:
150
151
  - - ">="
151
152
  - !ruby/object:Gem::Version
152
- version: 3.0.1
153
+ version: 3.4.2
153
154
  required_rubygems_version: !ruby/object:Gem::Requirement
154
155
  requirements:
155
156
  - - ">="
156
157
  - !ruby/object:Gem::Version
157
158
  version: '0'
158
159
  requirements: []
159
- rubygems_version: 3.2.15
160
- signing_key:
160
+ rubygems_version: 3.6.9
161
161
  specification_version: 4
162
162
  summary: The Video Game ROM downloader
163
163
  test_files: []
@@ -1,110 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'cgi'
4
- require 'mechanize'
5
- require 'mechanize/progressbar'
6
- require 'mechanizeprogress'
7
-
8
- module Gamerom
9
- module RepoAdapters
10
- # Romnation - An adapter for the ROMNation repository website
11
- class Romnation
12
- extend Gamerom::RepoAdapter
13
-
14
- PLATFORM = {
15
- 'amstrad' => 'Amstrad',
16
- 'atari2600' => 'Atari 2600',
17
- 'atari5200' => 'Atari 5200',
18
- 'atari7800' => 'Atari 7800',
19
- 'atarijaguar' => 'Atari Jaguar',
20
- 'atarilynx' => 'Atari Lynx',
21
- 'colecovision' => 'ColecoVision',
22
- 'commodore64' => 'Commodore 64',
23
- 'gamegear' => 'Game Gear',
24
- 'gb' => 'Game Boy',
25
- 'gbc' => 'Game Boy Color',
26
- 'gcdvectrex' => 'Vectrex',
27
- 'genesis' => 'Genesis',
28
- 'intellivision' => 'Intellivision',
29
- 'mame' => 'MAME',
30
- 'msx1' => 'MSX',
31
- 'msx2' => 'MSX2',
32
- 'mtx' => 'MTX',
33
- 'n64' => 'N64',
34
- 'neogeocd' => 'Neo Geo CD',
35
- 'neogeopocket' => 'Neo Geo Pocket',
36
- 'nes' => 'NES',
37
- 'oric' => 'Oric',
38
- 'pce' => 'PC Engine',
39
- 'radioshackcolorcomputer' => 'TRS-80',
40
- 'samcoupe' => 'SAM Coupé',
41
- 'segacd' => 'Sega CD',
42
- 'segamastersystem' => 'Master System',
43
- 'snes' => 'SNES',
44
- 'thompsonmo5' => 'Thomson MO5',
45
- 'virtualboy' => 'Virtual Boy',
46
- 'watara' => 'Watara Supervision',
47
- 'wonderswan' => 'WonderSwan',
48
- }.freeze
49
-
50
- def self.platforms
51
- PLATFORM
52
- end
53
-
54
- def self.sections
55
- ('a'..'z').to_a.unshift('0')
56
- end
57
-
58
- def self.extract_games(platform)
59
- sections.each_with_index do |section, index|
60
- pages = extract_pages(platform, section)
61
- yield extract_games_from_section_pages(platform, section, pages), index
62
- end
63
- end
64
-
65
- def self.extract_pages(platform, section)
66
- page = nokogiri_get("https://www.romnation.net/srv/roms/#{platform}/#{section}/sort-title.html")
67
- pages = ['1']
68
- pages = page.css('.pagination').first.css('a').map(&:text).map(&:strip).reject(&:empty?) unless page.css('.pagination').empty?
69
- pages
70
- end
71
-
72
- def self.extract_games_from_section_pages(platform, section, pages)
73
- pages.reduce([]) do |section_games, p|
74
- page = nokogiri_get("https://www.romnation.net/srv/roms/#{platform}/#{section}/page-#{p}_sort-title.html")
75
- games_links = page.css('table.listings td.title a')
76
- section_games.append(*games_links.map { |game_link| game(game_link) })
77
- end
78
- end
79
-
80
- def self.game(game_link)
81
- game_info = GameInfo.new(game_link.text)
82
- {
83
- id: game_link['href'].split('/')[3].to_i,
84
- name: game_link.text,
85
- region: game_info.region,
86
- tags: game_info.tags,
87
- }
88
- end
89
-
90
- def self.install(game)
91
- agent = Mechanize.new
92
- agent.pluggable_parser.default = Mechanize::Download
93
- 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'
94
- page = agent.get("https://www.romnation.net/download/rom/#{game.id}")
95
-
96
- response = nil
97
- agent.progressbar do
98
- response = page.link_with(text: 'Download This Rom').click
99
- end
100
-
101
- return unless response.code.to_i == 200
102
-
103
- filename = CGI.unescape(response.filename.split('_host=').first)
104
- FileUtils.mkdir_p(game.filepath)
105
- response.save!("#{game.filepath}/#{filename}")
106
- yield [filename]
107
- end
108
- end
109
- end
110
- end