game_reviews 0.1.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.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 6003dc58bab98e4a5b5327049ebd92a5cbed1bd723a22c5c49ee1d76e8940670
4
+ data.tar.gz: 3d56fbb5919cf92821afff10109c9763bf50d7464d180adf256db8fd782bff64
5
+ SHA512:
6
+ metadata.gz: 50da9bcc191864423609d2430354d4e8abe48926abe9256bd280c2fe8e9cfd8760239b806ac64b330b1471a277c2ddb775435c90b8c3498129d1ae4aa973e89e
7
+ data.tar.gz: 0c327ed7ab96419cdbf4b462cf6f184f3a8a995c63a4c395d2ab49f254aaa39c84a9e50eb1bbc791aafa4ae66479bd3a5569bc0cbbf1ceebded4d8e21a6e4de2
data/bin/reviews ADDED
@@ -0,0 +1,4 @@
1
+ #!/usr/bin/env ruby
2
+ require_relative '../lib/game_reviews'
3
+
4
+ GameReviews::CLI.new.call
@@ -0,0 +1,87 @@
1
+ class GameReviews::CLI
2
+
3
+ def call
4
+ start
5
+ end
6
+
7
+ def start
8
+ welcome
9
+ input = nil
10
+ while input != 'EXIT'
11
+ puts ""
12
+ puts "Type number of desired selection or Exit to quit"
13
+ puts ""
14
+ input = gets.strip.upcase
15
+
16
+ if input != 'EXIT'
17
+ puts ""
18
+ puts ""
19
+ puts "Enter minimum review score (Out of 100)"
20
+ puts ""
21
+ score = gets.strip
22
+ puts ""
23
+ end
24
+
25
+ case input
26
+ when "1"
27
+ list("ALL PS4 GAMES",
28
+ "http://www.metacritic.com/browse/games/release-date/available/ps4/metascore",
29
+ score)
30
+
31
+ when "2"
32
+ list("LATEST PS4 RELEASES",
33
+ "http://www.metacritic.com/browse/games/release-date/new-releases/ps4/metascore",
34
+ score)
35
+
36
+ when "3"
37
+ list("ALL XBOX ONE GAMES",
38
+ "http://www.metacritic.com/browse/games/release-date/available/xboxone/metascore",
39
+ score)
40
+
41
+ when "4"
42
+ list("LATEST XBOX ONE RELEASES",
43
+ "http://www.metacritic.com/browse/games/release-date/new-releases/xboxone/metascore",
44
+ score)
45
+
46
+ when "5"
47
+ list("ALL NINTENDO SWITCH GAMES",
48
+ "http://www.metacritic.com/browse/games/release-date/available/switch/metascore",
49
+ score)
50
+
51
+ when "6"
52
+ list("LATEST NINTENDO SWITCH RELEASES",
53
+ "http://www.metacritic.com/browse/games/release-date/new-releases/switch/metascore",
54
+ score)
55
+
56
+ when "EXIT"
57
+ exit == true
58
+ end
59
+ end
60
+ end
61
+
62
+ def welcome
63
+ puts ""
64
+ puts "----------------------------------------------------------------------"
65
+ puts " - - - - - - - - - - REVIEWS BY METACRITIC SCORE - - - - - - - - - - "
66
+ puts "----------------------------------------------------------------------"
67
+ puts ""
68
+ puts " 1. All PS4 Games 2. Latest PS4 Releases"
69
+ puts ""
70
+ puts " 3. All Xbox One Games 4. Latest Xbox One Releases"
71
+ puts ""
72
+ puts " 5. All Nintendo Switch Games 6. Latest Nintendo Switch Releases"
73
+ puts ""
74
+ end
75
+
76
+ def list(name, url, score)
77
+ puts "----------------------------------------------------------------------"
78
+ puts "#{name}"
79
+ puts "----------------------------------------------------------------------"
80
+ list = GameReviews::Scraper.new(url, score)
81
+ list.clear
82
+ list.scraper
83
+ list.display
84
+ puts ""
85
+ start
86
+ end
87
+ end
@@ -0,0 +1,11 @@
1
+ class GameReviews::Reviews
2
+
3
+ attr_accessor :title, :metascore, :release_date, :link
4
+
5
+ def initialize(details = {})
6
+ @title = details[:title]
7
+ @metascore = details[:metascore]
8
+ @release_date = details[:release_date]
9
+ @link = details[:link]
10
+ end
11
+ end
@@ -0,0 +1,44 @@
1
+ class GameReviews::Scraper
2
+
3
+ attr_accessor :url, :score
4
+
5
+ def initialize(url, score)
6
+ @url = url
7
+ @score = score
8
+ end
9
+
10
+ @@games = []
11
+
12
+ def self.games
13
+ @@games
14
+ end
15
+
16
+ def clear
17
+ @@games.clear
18
+ end
19
+
20
+
21
+ def scraper
22
+ game_list = Nokogiri::HTML(open(self.url, 'User-Agent' => 'Chrome'))
23
+
24
+ game_list.css("ol.list_products li.game_product").each do |game|
25
+
26
+ @@games << GameReviews::Reviews.new({
27
+ :title => game.css("div.product_title a").text.strip,
28
+ :metascore => game.css("div.metascore_w").text,
29
+ :release_date => game.css("li.release_date span.data").text,
30
+ :link => 'http://www.metacritic.com/' +
31
+ game.css("div.product_title a").attribute("href").text
32
+ })
33
+ end
34
+ end
35
+
36
+ def display
37
+ @@games.delete_if{|game| game.metascore.to_i < @score.to_i}.each_with_index do |game, i|
38
+ puts " \n#{i+1}. #{game.title} \n
39
+ Metascore: #{game.metascore}
40
+ Release Date: #{game.release_date}
41
+ Link: #{game.link}\n \n"
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,3 @@
1
+ module GameReviews
2
+ VERSION = "0.1.0"
3
+ end
@@ -0,0 +1,14 @@
1
+ module GameReviews
2
+ end
3
+
4
+ require_relative "game_reviews/version"
5
+ require_relative "game_reviews/cli"
6
+ require_relative "game_reviews/reviews"
7
+ require_relative "game_reviews/scraper"
8
+
9
+ require 'open-uri'
10
+ require 'nokogiri'
11
+ require 'pry'
12
+ require 'rake'
13
+
14
+
metadata ADDED
@@ -0,0 +1,128 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: game_reviews
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Chris Harvey
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2018-01-30 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.11'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.11'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '10.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '10.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '3.0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '3.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: nokogiri
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '1.6'
62
+ - - ">="
63
+ - !ruby/object:Gem::Version
64
+ version: 1.6.6.2
65
+ type: :development
66
+ prerelease: false
67
+ version_requirements: !ruby/object:Gem::Requirement
68
+ requirements:
69
+ - - "~>"
70
+ - !ruby/object:Gem::Version
71
+ version: '1.6'
72
+ - - ">="
73
+ - !ruby/object:Gem::Version
74
+ version: 1.6.6.2
75
+ - !ruby/object:Gem::Dependency
76
+ name: pry
77
+ requirement: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - "~>"
80
+ - !ruby/object:Gem::Version
81
+ version: 0.10.3
82
+ type: :development
83
+ prerelease: false
84
+ version_requirements: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - "~>"
87
+ - !ruby/object:Gem::Version
88
+ version: 0.10.3
89
+ description: 'This gem returns a list of games based on a defined minimum Metacritic
90
+ Score for consoles over two date ranges: recent or alltime.'
91
+ email:
92
+ - chharvey@icloud.com
93
+ executables:
94
+ - reviews
95
+ extensions: []
96
+ extra_rdoc_files: []
97
+ files:
98
+ - bin/reviews
99
+ - lib/game_reviews.rb
100
+ - lib/game_reviews/cli.rb
101
+ - lib/game_reviews/reviews.rb
102
+ - lib/game_reviews/scraper.rb
103
+ - lib/game_reviews/version.rb
104
+ homepage: https://github.com/Harvey783/game-reviews
105
+ licenses:
106
+ - MIT
107
+ metadata: {}
108
+ post_install_message:
109
+ rdoc_options: []
110
+ require_paths:
111
+ - lib
112
+ required_ruby_version: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - ">="
115
+ - !ruby/object:Gem::Version
116
+ version: '0'
117
+ required_rubygems_version: !ruby/object:Gem::Requirement
118
+ requirements:
119
+ - - ">="
120
+ - !ruby/object:Gem::Version
121
+ version: '0'
122
+ requirements: []
123
+ rubyforge_project:
124
+ rubygems_version: 2.7.2
125
+ signing_key:
126
+ specification_version: 4
127
+ summary: Videogames by Metacritic Score
128
+ test_files: []