recently_ps4_games 0.2.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 +7 -0
- data/bin/recently_ps4_games +5 -0
- data/lib/recently_ps4_games/cli.rb +75 -0
- data/lib/recently_ps4_games/game.rb +37 -0
- data/lib/recently_ps4_games/scraper.rb +42 -0
- data/lib/recently_ps4_games/version.rb +3 -0
- data/lib/recently_ps4_games.rb +13 -0
- metadata +150 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: e0c5a5a232f395ced7e1032e4036d81d26f3db11
|
4
|
+
data.tar.gz: f20efd1eaaee29a345add70c15613eae862a1468
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 60bd26551ba9b335ba29f89fbfbec3bf67e6205dcf2ee9e36d4d03f6803ab96ddcc7d2e546fdfd78b65abc775e6335c42f597ff1c984cd244262429fc45f11c9
|
7
|
+
data.tar.gz: f33fb1bc147c640364739f82e1edf2141efc561704699a653824818213546ad89b9f1494d908faa94aa81b0b78f92ac6f0b73fcbf5d8b2411b5cb79e39e0f5ee
|
@@ -0,0 +1,75 @@
|
|
1
|
+
class RecentlyPs4Games::Cli
|
2
|
+
|
3
|
+
def call
|
4
|
+
puts "Welcome to recently_ps4_games!!"
|
5
|
+
puts "...now makinging games list..."
|
6
|
+
make_games # as Game Instance
|
7
|
+
interact_with_user # display list, ask input, display details
|
8
|
+
puts "Bye!"
|
9
|
+
end
|
10
|
+
|
11
|
+
def make_games
|
12
|
+
games_arr = RecentlyPs4Games::Scraper.scrape_game_list
|
13
|
+
RecentlyPs4Games::Game.create_by_games_arr(games_arr)
|
14
|
+
end
|
15
|
+
|
16
|
+
def interact_with_user
|
17
|
+
display_list
|
18
|
+
display_detail(get_detail(ask_what_to_detail))
|
19
|
+
interact_with_user unless ask_exit?
|
20
|
+
end
|
21
|
+
|
22
|
+
def display_list
|
23
|
+
RecentlyPs4Games::Game.all.each do |game|
|
24
|
+
puts "#{game.id}. #{game.title}"
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
def ask_what_to_detail
|
29
|
+
puts "What game would you like to get details?"
|
30
|
+
puts "Please input NUMBER."
|
31
|
+
input = gets.strip.to_i
|
32
|
+
until input.between?(1, RecentlyPs4Games::Game.all.size) do
|
33
|
+
puts "Please input valid NUMBER."
|
34
|
+
input = gets.strip.to_i
|
35
|
+
end
|
36
|
+
input
|
37
|
+
end
|
38
|
+
|
39
|
+
def get_detail(id)
|
40
|
+
game = RecentlyPs4Games::Game.find_by_id(id)
|
41
|
+
detail = RecentlyPs4Games::Scraper.scrape_details(game.detail_url)
|
42
|
+
game.add_attributes(detail)
|
43
|
+
end
|
44
|
+
|
45
|
+
def display_detail(game)
|
46
|
+
puts ""
|
47
|
+
puts "-------------------------------"
|
48
|
+
puts "\e[1m#{game.id}. #{game.title}\e[0m"
|
49
|
+
puts ""
|
50
|
+
puts "#{game.discription}"
|
51
|
+
puts ""
|
52
|
+
puts "\e[2mRelease date : \e[0m #{game.release_date}"
|
53
|
+
puts "\e[2mGenre : \e[0m #{game.genre}"
|
54
|
+
puts "\e[2mPublisher : \e[0m #{game.publisher}"
|
55
|
+
puts "\e[2mDeveloper : \e[0m #{game.developer}"
|
56
|
+
puts "-------------------------------"
|
57
|
+
puts ""
|
58
|
+
end
|
59
|
+
|
60
|
+
def ask_exit?
|
61
|
+
puts "Do you want to exit? (y/n)"
|
62
|
+
input = gets.strip
|
63
|
+
until input == "y" || input == "n" do
|
64
|
+
puts "Do you want to exit? (y/n)"
|
65
|
+
puts "Please input 'y' to exit, 'n' to continue."
|
66
|
+
input = gets.strip
|
67
|
+
end
|
68
|
+
if input == "y"
|
69
|
+
true
|
70
|
+
elsif input == "n"
|
71
|
+
false
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
class RecentlyPs4Games::Game
|
2
|
+
attr_accessor :id, :title, :detail_url, :discription, :release_date, :genre, :publisher, :developer
|
3
|
+
|
4
|
+
@@all = []
|
5
|
+
|
6
|
+
def initialize(game_hash)
|
7
|
+
game_hash.each do |k, v|
|
8
|
+
self.send("#{k}=", v)
|
9
|
+
end
|
10
|
+
@@all << self
|
11
|
+
@id = @@all.size
|
12
|
+
self
|
13
|
+
end
|
14
|
+
|
15
|
+
def self.create_by_games_arr(games_arr)
|
16
|
+
games_arr.each do |game|
|
17
|
+
self.new(game)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
def self.find_by_id(id)
|
22
|
+
self.all.detect do |game|
|
23
|
+
game.id == id
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
def add_attributes(details_hash)
|
28
|
+
details_hash.each do |k, v|
|
29
|
+
self.send("#{k}=", v)
|
30
|
+
end
|
31
|
+
self
|
32
|
+
end
|
33
|
+
|
34
|
+
def self.all
|
35
|
+
@@all
|
36
|
+
end
|
37
|
+
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
class RecentlyPs4Games::Scraper
|
2
|
+
|
3
|
+
def self.get_dynamic_page_html
|
4
|
+
Selenium::WebDriver::PhantomJS.path = Phantomjs.path
|
5
|
+
browser = Watir::Browser.new(:phantomjs)
|
6
|
+
browser.goto "https://www.playstation.com/en-us/explore/games/ps4-games/"
|
7
|
+
browser.html
|
8
|
+
end
|
9
|
+
|
10
|
+
def self.scrape_game_list
|
11
|
+
games_arr = []
|
12
|
+
list_page = Nokogiri::HTML(self.get_dynamic_page_html)
|
13
|
+
game_grids = list_page.css("div.inlineTabs.section.gameGrid")
|
14
|
+
game_grids.each do |game_grid|
|
15
|
+
games = game_grid.css("ul.clearfix li.layout-type-1 div.tile.clearfix div.game-tile-details h2 a.title")
|
16
|
+
games.each do |game|
|
17
|
+
games_arr << {
|
18
|
+
title: game.text,
|
19
|
+
detail_url: game.attr("href")
|
20
|
+
}
|
21
|
+
end
|
22
|
+
end
|
23
|
+
games_arr
|
24
|
+
end
|
25
|
+
|
26
|
+
def self.scrape_details(url)
|
27
|
+
detail_page = Nokogiri::HTML(open(url))
|
28
|
+
prod_meta = detail_page.css("div.prod-meta")
|
29
|
+
release_info = prod_meta.css("ul.release-info li")
|
30
|
+
|
31
|
+
details = {
|
32
|
+
discription: prod_meta.css("p.teaser").text,
|
33
|
+
release_date: release_info.css("span.releasedate").text.delete("\n\t"),
|
34
|
+
genre: release_info[1].children[2].text.delete("\n\t"),
|
35
|
+
publisher: release_info[2].children[1].text.delete("\n\t"),
|
36
|
+
developer: release_info[3].children[1].text.delete("\n\t")
|
37
|
+
}
|
38
|
+
|
39
|
+
details
|
40
|
+
end
|
41
|
+
|
42
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
module RecentlyPs4Games
|
2
|
+
end
|
3
|
+
|
4
|
+
require 'pry'
|
5
|
+
require 'open-uri'
|
6
|
+
require 'nokogiri'
|
7
|
+
require 'watir-webdriver'
|
8
|
+
require 'phantomjs'
|
9
|
+
|
10
|
+
require_relative "recently_ps4_games/cli.rb"
|
11
|
+
require_relative "recently_ps4_games/game.rb"
|
12
|
+
require_relative "recently_ps4_games/scraper.rb"
|
13
|
+
require_relative "recently_ps4_games/version.rb"
|
metadata
ADDED
@@ -0,0 +1,150 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: recently_ps4_games
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.2.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- ayafushimi
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2016-10-25 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: nokogiri
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ~>
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.6'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ~>
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.6'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: watir-webdriver
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ~>
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0.9'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ~>
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0.9'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: phantomjs
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ~>
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '2.1'
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ~>
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '2.1'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: bundler
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ~>
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '1.13'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ~>
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '1.13'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: rake
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ~>
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '10.0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ~>
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '10.0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: rspec
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ~>
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '3.0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ~>
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '3.0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: pry
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - '>='
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - '>='
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
111
|
+
description: With this gem, you can see the lists of new and upcoming PS4 games and
|
112
|
+
inquire the details in CLI.
|
113
|
+
email:
|
114
|
+
- aya.fushimi@gmail.com
|
115
|
+
executables:
|
116
|
+
- recently_ps4_games
|
117
|
+
extensions: []
|
118
|
+
extra_rdoc_files: []
|
119
|
+
files:
|
120
|
+
- bin/recently_ps4_games
|
121
|
+
- lib/recently_ps4_games.rb
|
122
|
+
- lib/recently_ps4_games/cli.rb
|
123
|
+
- lib/recently_ps4_games/game.rb
|
124
|
+
- lib/recently_ps4_games/scraper.rb
|
125
|
+
- lib/recently_ps4_games/version.rb
|
126
|
+
homepage: https://github.com/ayafushimi/recently_ps4_games_cli_gem
|
127
|
+
licenses:
|
128
|
+
- MIT
|
129
|
+
metadata: {}
|
130
|
+
post_install_message:
|
131
|
+
rdoc_options: []
|
132
|
+
require_paths:
|
133
|
+
- lib
|
134
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - '>='
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '0'
|
139
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
140
|
+
requirements:
|
141
|
+
- - '>='
|
142
|
+
- !ruby/object:Gem::Version
|
143
|
+
version: '0'
|
144
|
+
requirements: []
|
145
|
+
rubyforge_project:
|
146
|
+
rubygems_version: 2.6.7
|
147
|
+
signing_key:
|
148
|
+
specification_version: 4
|
149
|
+
summary: Recently PS4 Games
|
150
|
+
test_files: []
|