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 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
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require_relative '../lib/steam_deals'
4
+
5
+ SteamDeals::CLI.new.start
@@ -0,0 +1,12 @@
1
+ require 'open-uri'
2
+ require 'pry'
3
+ require 'nokogiri'
4
+
5
+ require "steam_deals/version"
6
+ require "steam_deals/deal"
7
+ require "steam_deals/cli"
8
+
9
+ module SteamDeals
10
+ end
11
+
12
+
@@ -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
@@ -0,0 +1,3 @@
1
+ module SteamDeals
2
+ VERSION = "0.1.1"
3
+ 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: []