steamdeals-cli-gem 0.1.1
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/steam-deals +5 -0
- data/lib/steam_deals.rb +12 -0
- data/lib/steam_deals/cli.rb +80 -0
- data/lib/steam_deals/deal.rb +53 -0
- data/lib/steam_deals/version.rb +3 -0
- metadata +134 -0
checksums.yaml
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
SHA1:
|
|
3
|
+
metadata.gz: 6f7917c0f28de2d5c153061a3c03bb8e74d48d47
|
|
4
|
+
data.tar.gz: d60c0894e0533a82772ced0fece2cd0b2358ecd5
|
|
5
|
+
SHA512:
|
|
6
|
+
metadata.gz: 4cd5c418a119469e0124216f5e08c76da58fc1e8b063acc38ffa4d78d0112e6c02c111ddaeb0ae62797b03ca8193739a6ac4e264350dbe95233cc9a55a9dce84
|
|
7
|
+
data.tar.gz: aaccc37ecbae4de3d2d9685ba2da9f04200c060b3c57940085ba3ac5ea3b0e24d2409a4e144a209b3b318d1093af21a25ae4420d7639956d0088e4591a745ec1
|
data/bin/steam-deals
ADDED
data/lib/steam_deals.rb
ADDED
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
class SteamDeals::CLI
|
|
2
|
+
|
|
3
|
+
def start
|
|
4
|
+
input = ""
|
|
5
|
+
while input != "exit"
|
|
6
|
+
puts "Here are the apps listed for today's Steam Daily Deals"
|
|
7
|
+
puts "-------------------------------------------------------"
|
|
8
|
+
SteamDeals::Deal.scrape_deals_list
|
|
9
|
+
SteamDeals::Deal.all.each.with_index(1) do |app, index|
|
|
10
|
+
puts "#{index}. #{app.name}"
|
|
11
|
+
end
|
|
12
|
+
puts " "
|
|
13
|
+
|
|
14
|
+
puts "Which game would you like to see in detail? (Enter the number associtaed with game on list)"
|
|
15
|
+
puts "or you can enter 'exit' to exit out of the program"
|
|
16
|
+
input = gets.chomp
|
|
17
|
+
|
|
18
|
+
if input.downcase == "exit"
|
|
19
|
+
puts "\nGoodbye!"
|
|
20
|
+
elsif input.to_i > 0 && game = SteamDeals::Deal.app_at(input.to_i)
|
|
21
|
+
display_details(game)
|
|
22
|
+
else
|
|
23
|
+
puts "\nInvalid input. Try again.\n"
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def display_details(game)
|
|
29
|
+
input = ""
|
|
30
|
+
while input.downcase != "exit"
|
|
31
|
+
puts ""
|
|
32
|
+
puts "What details would you like to see? (Enter number choice or type exit to return to previous menu"
|
|
33
|
+
puts ""
|
|
34
|
+
puts "1. Sale Details"
|
|
35
|
+
puts "2. Game Details"
|
|
36
|
+
puts ""
|
|
37
|
+
|
|
38
|
+
input = gets.chomp
|
|
39
|
+
case input
|
|
40
|
+
when "1"
|
|
41
|
+
show_sale_details(game)
|
|
42
|
+
when "2"
|
|
43
|
+
show_app_details(game)
|
|
44
|
+
when "exit"
|
|
45
|
+
puts "\nReturning to menu\n"
|
|
46
|
+
else
|
|
47
|
+
puts "\nInvalid input. Try again.\n"
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
def show_sale_details(game)
|
|
54
|
+
puts ""
|
|
55
|
+
puts "Here are the sale details"
|
|
56
|
+
puts "-------------------------"
|
|
57
|
+
puts "Name : #{game.name}"
|
|
58
|
+
puts "Discount : #{game.discount}"
|
|
59
|
+
puts "Sale Price : #{game.price}"
|
|
60
|
+
puts "--------------------------"
|
|
61
|
+
puts ""
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
def show_app_details(game)
|
|
65
|
+
puts ""
|
|
66
|
+
puts "Here are the app details"
|
|
67
|
+
puts "------------------------"
|
|
68
|
+
puts "Name : #{game.name}"
|
|
69
|
+
puts "App Type : #{game.app_type}"
|
|
70
|
+
puts "Developer : #{game.developer}"
|
|
71
|
+
puts "Publisher : #{game.publisher}"
|
|
72
|
+
puts "Supported Systems: #{game.supported_os}"
|
|
73
|
+
puts ""
|
|
74
|
+
puts "Description"
|
|
75
|
+
puts "--------------------------------------------------"
|
|
76
|
+
puts "#{game.app_desc}"
|
|
77
|
+
puts "---------------------------------------------------"
|
|
78
|
+
puts ""
|
|
79
|
+
end
|
|
80
|
+
end
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
class SteamDeals::Deal
|
|
2
|
+
|
|
3
|
+
@@all = []
|
|
4
|
+
|
|
5
|
+
attr_accessor :name, :discount, :price, :details_url, :app_type, :developer, :publisher, :supported_os, :app_desc
|
|
6
|
+
|
|
7
|
+
def initialize(name = "", url = "", discount = "", price = "")
|
|
8
|
+
@name = name
|
|
9
|
+
@details_url = url
|
|
10
|
+
@discount = discount
|
|
11
|
+
@price = price
|
|
12
|
+
@developer = "N/A"
|
|
13
|
+
@publisher = "N/A"
|
|
14
|
+
@supported_os = "N/A"
|
|
15
|
+
@app_desc = "N/A"
|
|
16
|
+
scrape_add_details
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def self.scrape_deals_list #only scrapes daily deal for now
|
|
20
|
+
@@all.clear
|
|
21
|
+
doc = Nokogiri::HTML(open("https://steamdb.info/sales/"))
|
|
22
|
+
app_list = doc.css("#sales-section-dailydeal .table-sales .appimg")
|
|
23
|
+
app_list.each do |app|
|
|
24
|
+
app_name = app.css("a.b")[0].text
|
|
25
|
+
app_url ="https://steamdb.info/#{app.css("a.b")[0]["href"]}"
|
|
26
|
+
discount = app.css(".price-discount i").text
|
|
27
|
+
price = "#{app.css("td")[4].text}"
|
|
28
|
+
game = SteamDeals::Deal.new(app_name,app_url,discount,price)
|
|
29
|
+
@@all << game
|
|
30
|
+
end
|
|
31
|
+
self.all
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def self.all
|
|
35
|
+
@@all
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def self.app_at(num)
|
|
39
|
+
@@all[num-1]
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def scrape_add_details
|
|
43
|
+
doc = Nokogiri::HTML(open(@details_url))
|
|
44
|
+
@app_desc = doc.css(".span4 p.header-description").text
|
|
45
|
+
app_details = doc.css(".table-dark tr")
|
|
46
|
+
if app_details[0].css("td")[0].text == "App ID"
|
|
47
|
+
@app_type = app_details[1].css("td")[1].text
|
|
48
|
+
@developer = app_details[3].css("td")[1].text
|
|
49
|
+
@publisher = app_details[4].css("td")[1].text
|
|
50
|
+
@supported_os = app_details.css(".icon").collect{|element| element["aria-label"]}.join(", ")
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
end
|
metadata
ADDED
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: steamdeals-cli-gem
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 0.1.1
|
|
5
|
+
platform: ruby
|
|
6
|
+
authors:
|
|
7
|
+
- Justin Thomas
|
|
8
|
+
autorequire:
|
|
9
|
+
bindir: bin
|
|
10
|
+
cert_chain: []
|
|
11
|
+
date: 2016-01-07 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.10'
|
|
20
|
+
type: :development
|
|
21
|
+
prerelease: false
|
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
23
|
+
requirements:
|
|
24
|
+
- - "~>"
|
|
25
|
+
- !ruby/object:Gem::Version
|
|
26
|
+
version: '1.10'
|
|
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: '0'
|
|
48
|
+
type: :development
|
|
49
|
+
prerelease: false
|
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
51
|
+
requirements:
|
|
52
|
+
- - ">="
|
|
53
|
+
- !ruby/object:Gem::Version
|
|
54
|
+
version: '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: '0'
|
|
62
|
+
type: :development
|
|
63
|
+
prerelease: false
|
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
65
|
+
requirements:
|
|
66
|
+
- - ">="
|
|
67
|
+
- !ruby/object:Gem::Version
|
|
68
|
+
version: '0'
|
|
69
|
+
- !ruby/object:Gem::Dependency
|
|
70
|
+
name: pry
|
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
|
72
|
+
requirements:
|
|
73
|
+
- - ">="
|
|
74
|
+
- !ruby/object:Gem::Version
|
|
75
|
+
version: '0'
|
|
76
|
+
type: :development
|
|
77
|
+
prerelease: false
|
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
79
|
+
requirements:
|
|
80
|
+
- - ">="
|
|
81
|
+
- !ruby/object:Gem::Version
|
|
82
|
+
version: '0'
|
|
83
|
+
- !ruby/object:Gem::Dependency
|
|
84
|
+
name: open-uri
|
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
|
86
|
+
requirements:
|
|
87
|
+
- - ">="
|
|
88
|
+
- !ruby/object:Gem::Version
|
|
89
|
+
version: '0'
|
|
90
|
+
type: :development
|
|
91
|
+
prerelease: false
|
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
93
|
+
requirements:
|
|
94
|
+
- - ">="
|
|
95
|
+
- !ruby/object:Gem::Version
|
|
96
|
+
version: '0'
|
|
97
|
+
description: Scrape steamdb.info for daily steam deals
|
|
98
|
+
email:
|
|
99
|
+
- jvthomas0209@gmail.com
|
|
100
|
+
executables:
|
|
101
|
+
- steam-deals
|
|
102
|
+
extensions: []
|
|
103
|
+
extra_rdoc_files: []
|
|
104
|
+
files:
|
|
105
|
+
- bin/steam-deals
|
|
106
|
+
- lib/steam_deals.rb
|
|
107
|
+
- lib/steam_deals/cli.rb
|
|
108
|
+
- lib/steam_deals/deal.rb
|
|
109
|
+
- lib/steam_deals/version.rb
|
|
110
|
+
homepage:
|
|
111
|
+
licenses: []
|
|
112
|
+
metadata: {}
|
|
113
|
+
post_install_message:
|
|
114
|
+
rdoc_options: []
|
|
115
|
+
require_paths:
|
|
116
|
+
- lib
|
|
117
|
+
- lib/steam_deals
|
|
118
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
119
|
+
requirements:
|
|
120
|
+
- - ">="
|
|
121
|
+
- !ruby/object:Gem::Version
|
|
122
|
+
version: '0'
|
|
123
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
124
|
+
requirements:
|
|
125
|
+
- - ">="
|
|
126
|
+
- !ruby/object:Gem::Version
|
|
127
|
+
version: '0'
|
|
128
|
+
requirements: []
|
|
129
|
+
rubyforge_project:
|
|
130
|
+
rubygems_version: 2.4.5.1
|
|
131
|
+
signing_key:
|
|
132
|
+
specification_version: 4
|
|
133
|
+
summary: Scrape steamdb.info for daily steam deals
|
|
134
|
+
test_files: []
|