scrape_got 0.1.0 → 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- 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
|