scrape_got 0.1.0 → 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 +4 -4
- data/Gemfile.lock +11 -1
- data/README.md +4 -4
- data/lib/scrape_got.rb +4 -1
- data/lib/scrape_got/api.rb +18 -1
- data/lib/scrape_got/books.rb +30 -0
- data/lib/scrape_got/cli.rb +53 -36
- data/lib/scrape_got/houses.rb +34 -0
- data/lib/scrape_got/version.rb +1 -1
- data/scrape_got.gemspec +4 -0
- metadata +33 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5871e9a144c33f888653770d112dc0b83bb569c9a17a230efb104940f25197e5
|
4
|
+
data.tar.gz: 447b1252e7bb09fe2bab56900c3325d96d5dae7d02476e021211ecab1ab704af
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5116def5f330d7599e296c0c66c3cc565923b07465a90d3185fa625bc6110601cac1ea72ff2cdd8e570569811443c6a180bd1d2cd3e4a041d689fc79bd259eef
|
7
|
+
data.tar.gz: 75c394ef7cc43fe4098020d7579ddec23592258a8931a1291fb721763d89b8a0b26fcdcb88cfd5820df226034d9eaccf0afc7503eb18d547d3264ac23586522c
|
data/Gemfile.lock
CHANGED
@@ -1,14 +1,22 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
scrape_got (0.1.
|
4
|
+
scrape_got (0.1.1)
|
5
5
|
|
6
6
|
GEM
|
7
7
|
remote: https://rubygems.org/
|
8
8
|
specs:
|
9
9
|
coderay (1.1.3)
|
10
|
+
colorize (0.8.1)
|
10
11
|
gem-release (2.1.1)
|
12
|
+
httparty (0.18.1)
|
13
|
+
mime-types (~> 3.0)
|
14
|
+
multi_xml (>= 0.5.2)
|
11
15
|
method_source (1.0.0)
|
16
|
+
mime-types (3.3.1)
|
17
|
+
mime-types-data (~> 3.2015)
|
18
|
+
mime-types-data (3.2020.0512)
|
19
|
+
multi_xml (0.6.0)
|
12
20
|
pry (0.13.1)
|
13
21
|
coderay (~> 1.1)
|
14
22
|
method_source (~> 1.0)
|
@@ -18,7 +26,9 @@ PLATFORMS
|
|
18
26
|
ruby
|
19
27
|
|
20
28
|
DEPENDENCIES
|
29
|
+
colorize
|
21
30
|
gem-release
|
31
|
+
httparty
|
22
32
|
pry
|
23
33
|
rake (~> 12.0)
|
24
34
|
scrape_got!
|
data/README.md
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
# ScrapeGot
|
2
2
|
|
3
|
-
Welcome to
|
3
|
+
Welcome to Scrape_Got, I scrape and I know things!
|
4
4
|
|
5
|
-
|
5
|
+
I'm a current student at the [Flatiron School](https://flatironschool.com/) and this is my CLI Project. This CLI gem scrapes data from [An API of Ice and Fire](https://anapioficeandfire.com/). It displays a simple menu to the user and gives them a choice of seeing all the books or 20 houses. This was a fun learning experience and I hope to flesh it out further as my knowledge improves. :P
|
6
6
|
|
7
7
|
## Installation
|
8
8
|
|
@@ -22,7 +22,7 @@ Or install it yourself as:
|
|
22
22
|
|
23
23
|
## Usage
|
24
24
|
|
25
|
-
|
25
|
+
Once the gem is installed enter 'scrape_got' into the command line to start Scrape_Got. The user will be presented with options to follow on screen.
|
26
26
|
|
27
27
|
## Development
|
28
28
|
|
@@ -32,7 +32,7 @@ To install this gem onto your local machine, run `bundle exec rake install`. To
|
|
32
32
|
|
33
33
|
## Contributing
|
34
34
|
|
35
|
-
Bug reports and pull requests are welcome on GitHub at https://github.com/
|
35
|
+
Bug reports and pull requests are welcome on GitHub at https://github.com/ByteSizeMagic/scrape_got.
|
36
36
|
|
37
37
|
|
38
38
|
## License
|
data/lib/scrape_got.rb
CHANGED
@@ -1,7 +1,10 @@
|
|
1
|
-
require "pry"
|
2
1
|
require_relative "./scrape_got/version"
|
3
2
|
require_relative "./scrape_got/cli"
|
4
3
|
require_relative "./scrape_got/api"
|
4
|
+
require_relative "./scrape_got/houses"
|
5
|
+
require_relative "./scrape_got/books"
|
6
|
+
|
7
|
+
|
5
8
|
|
6
9
|
module ScrapeGot
|
7
10
|
class Error < StandardError; end
|
data/lib/scrape_got/api.rb
CHANGED
@@ -1,3 +1,20 @@
|
|
1
|
-
|
1
|
+
require 'pry'
|
2
|
+
require 'httparty'
|
2
3
|
|
4
|
+
module ScrapeGot
|
5
|
+
class API
|
6
|
+
|
7
|
+
def self.get_books
|
8
|
+
response = HTTParty.get("https://www.anapioficeandfire.com/api/books?page=1&pageSize=20")
|
9
|
+
body = response.body
|
10
|
+
@data = JSON.parse(body)
|
11
|
+
end
|
12
|
+
|
13
|
+
def self.get_houses
|
14
|
+
response = HTTParty.get("https://www.anapioficeandfire.com/api/houses?page=1&pageSize=20")
|
15
|
+
body = response.body
|
16
|
+
@data = JSON.parse(body)
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
3
20
|
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
module ScrapeGot
|
2
|
+
class Books
|
3
|
+
|
4
|
+
attr_accessor :name, :number_of_pages, :released
|
5
|
+
|
6
|
+
|
7
|
+
def self.all_books
|
8
|
+
@@all_books ||= self.load_books
|
9
|
+
end
|
10
|
+
|
11
|
+
def self.load_books
|
12
|
+
API.get_books.collect do |book_hash|
|
13
|
+
Books.new(book_hash)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
def initialize(attributes = {})
|
18
|
+
@name = attributes["name"]
|
19
|
+
@number_of_pages = attributes["numberOfPages"]
|
20
|
+
@released = attributes["released"]
|
21
|
+
end
|
22
|
+
|
23
|
+
def self.print_books
|
24
|
+
Books.all_books.each.with_index(1) do |book, index|
|
25
|
+
puts "Book #{index}: #{book.name}, released: #{book.released}"
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
end
|
30
|
+
end
|
data/lib/scrape_got/cli.rb
CHANGED
@@ -1,42 +1,59 @@
|
|
1
|
-
|
2
|
-
def run
|
3
|
-
system("clear")
|
4
|
-
greeting
|
5
|
-
puts "___________________________\nPlease choose an option: "
|
6
|
-
@user_input = nil
|
7
|
-
menu
|
8
|
-
while @user_input != "exit"
|
9
|
-
@user_input = gets.strip.downcase
|
10
|
-
if @user_input == "1"
|
11
|
-
print_articles
|
12
|
-
elsif @user_input == "2"
|
13
|
-
"puts more here"
|
14
|
-
elsif @user_input == "exit"
|
15
|
-
break
|
16
|
-
else
|
17
|
-
puts "Please enter a menu item number or 'exit' to exit the program"
|
18
|
-
end
|
19
|
-
end
|
20
|
-
binding.pry
|
21
|
-
end_program
|
22
|
-
end
|
1
|
+
require 'colorize'
|
23
2
|
|
24
|
-
|
25
|
-
|
3
|
+
module ScrapeGot
|
4
|
+
class CLI
|
26
5
|
|
27
|
-
|
6
|
+
def run
|
7
|
+
system("clear")
|
8
|
+
greeting
|
9
|
+
Books.all_books
|
10
|
+
Houses.all_houses
|
11
|
+
|
12
|
+
@user_input = nil
|
13
|
+
menu
|
14
|
+
while @user_input != "exit"
|
15
|
+
@user_input = gets.strip.downcase
|
16
|
+
if @user_input == "1"
|
17
|
+
puts "List Books:".colorize(:light_yellow)
|
18
|
+
Books.print_books
|
19
|
+
menu
|
20
|
+
elsif @user_input == "2"
|
21
|
+
puts "List Houses:".colorize(:light_yellow)
|
22
|
+
Houses.print_houses
|
23
|
+
menu
|
24
|
+
else
|
25
|
+
@user_input == "exit" ? break : display_menu_message
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end_program
|
29
|
+
end
|
28
30
|
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
2. To see next page of articles.
|
33
|
-
Enter 'exit' to exit program.
|
34
|
-
MENU
|
35
|
-
end
|
36
|
-
|
37
|
-
def end_program
|
38
|
-
puts "Thanks for checking out I scrape and I know things, see ya soon!"
|
39
|
-
end
|
31
|
+
def greeting
|
32
|
+
puts " ... Welcome to ... \n I scrape and I know things!\n ".colorize(:light_yellow)
|
33
|
+
end
|
40
34
|
|
35
|
+
def menu
|
36
|
+
display_line
|
37
|
+
puts "Please choose an option: "
|
38
|
+
puts <<-MENU
|
39
|
+
1. List All Books
|
40
|
+
2. List 20 Houses
|
41
|
+
MENU
|
42
|
+
display_menu_message
|
43
|
+
end
|
41
44
|
|
45
|
+
def display_menu_message
|
46
|
+
puts "Please enter a menu item number or type " + "exit".colorize(:red) + " to exit the program"
|
47
|
+
end
|
48
|
+
|
49
|
+
def display_line
|
50
|
+
puts "___________________________________\n".colorize(:light_yellow)
|
51
|
+
end
|
52
|
+
|
53
|
+
def end_program
|
54
|
+
puts "Thanks for checking out I scrape and I know things, see ya soon!".colorize(:light_yellow)
|
55
|
+
display_line
|
56
|
+
end
|
57
|
+
|
58
|
+
end
|
42
59
|
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
module ScrapeGot
|
2
|
+
class Houses
|
3
|
+
|
4
|
+
attr_accessor :name, :coat, :region, :words
|
5
|
+
|
6
|
+
|
7
|
+
def self.all_houses
|
8
|
+
@@all_houses ||= self.load_houses
|
9
|
+
end
|
10
|
+
|
11
|
+
def self.load_houses
|
12
|
+
API.get_houses.collect do |houses_hash|
|
13
|
+
Houses.new(houses_hash)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
def initialize(attributes = {})
|
18
|
+
@name = attributes["name"]
|
19
|
+
@coat = attributes["coatOfArms"]
|
20
|
+
@region = attributes["region"]
|
21
|
+
@words = attributes["words"]
|
22
|
+
end
|
23
|
+
|
24
|
+
def self.print_houses
|
25
|
+
Houses.all_houses.each.with_index(1) do |house, index|
|
26
|
+
puts "#{index} #{house.name}: #{house.words}"
|
27
|
+
puts "Coat of Arms: #{house.coat}"
|
28
|
+
puts "Region: #{house.region}"
|
29
|
+
puts "-----------------------------------".colorize(:light_yellow)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
end
|
34
|
+
end
|
data/lib/scrape_got/version.rb
CHANGED
data/scrape_got.gemspec
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
lib = File.expand_path("lib", __dir__)
|
2
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
1
3
|
require_relative 'lib/scrape_got/version'
|
2
4
|
|
3
5
|
Gem::Specification.new do |spec|
|
@@ -29,4 +31,6 @@ Gem::Specification.new do |spec|
|
|
29
31
|
|
30
32
|
spec.add_development_dependency "pry"
|
31
33
|
spec.add_development_dependency "gem-release"
|
34
|
+
spec.add_development_dependency "httparty"
|
35
|
+
spec.add_development_dependency "colorize"
|
32
36
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: scrape_got
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- ByteSizeMagic
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-07-
|
11
|
+
date: 2020-07-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: pry
|
@@ -38,6 +38,34 @@ dependencies:
|
|
38
38
|
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: httparty
|
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: colorize
|
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'
|
41
69
|
description: I scrape and I know things. Provides a CLI to run and find info about
|
42
70
|
Game of Thrones.
|
43
71
|
email:
|
@@ -58,7 +86,9 @@ files:
|
|
58
86
|
- bin/setup
|
59
87
|
- lib/scrape_got.rb
|
60
88
|
- lib/scrape_got/api.rb
|
89
|
+
- lib/scrape_got/books.rb
|
61
90
|
- lib/scrape_got/cli.rb
|
91
|
+
- lib/scrape_got/houses.rb
|
62
92
|
- lib/scrape_got/version.rb
|
63
93
|
- scrape_got.gemspec
|
64
94
|
homepage: https://github.com/ByteSizeMagic/scrape_got
|
@@ -83,7 +113,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
83
113
|
- !ruby/object:Gem::Version
|
84
114
|
version: '0'
|
85
115
|
requirements: []
|
86
|
-
rubygems_version: 3.
|
116
|
+
rubygems_version: 3.0.8
|
87
117
|
signing_key:
|
88
118
|
specification_version: 4
|
89
119
|
summary: Game of Thrones scraping CLI gem
|