internet-wisdom 0.1.2 → 0.1.4
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/internet-wisdom-0.1.3.gem +0 -0
- data/internet_wisdom.gemspec +2 -1
- data/lib/internet_wisdom.rb +2 -9
- data/lib/internet_wisdom/cli.rb +26 -16
- data/lib/internet_wisdom/site_manager.rb +27 -14
- data/lib/internet_wisdom/version.rb +1 -1
- metadata +25 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 143d0e6653751edb10fc2f9770c41de68a9ce04e
|
4
|
+
data.tar.gz: f0ef3cb45321494d44c2e8e33640df0ba5fb0d18
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0f81c56a9789fe5788745d4e4aae1b62d0796035df63df5b395e482120e838415c544d09fb2daee9acc61abb0ffe9918c3d301d6fce1234df88c0909085f07bf
|
7
|
+
data.tar.gz: 802c0cf25ef135befc654f67c450b2131aca6eb8827037c777f3f8cc51057ade59ce9aefbc38c560252c1f51c452d7c3ebc2a332fe604902cca0fb04efbbfbf7
|
Binary file
|
data/internet_wisdom.gemspec
CHANGED
@@ -22,10 +22,11 @@ Gem::Specification.new do |spec|
|
|
22
22
|
spec.add_development_dependency "bundler", "~> 1.11"
|
23
23
|
spec.add_development_dependency "rake", "~> 10.0"
|
24
24
|
spec.add_development_dependency "rspec", "~> 3.0"
|
25
|
-
spec.add_development_dependency "pry", "
|
25
|
+
spec.add_development_dependency "pry", "~> 0"
|
26
26
|
|
27
27
|
spec.add_dependency "launchy", "~> 2.4", ">=2.4.3"
|
28
28
|
spec.add_dependency "nokogiri", "~> 1.6", ">= 1.6.7.2"
|
29
|
+
spec.add_dependency 'require_all', '~> 1.3', '>= 1.3.3'
|
29
30
|
|
30
31
|
|
31
32
|
end
|
data/lib/internet_wisdom.rb
CHANGED
@@ -2,13 +2,6 @@ require "open-uri"
|
|
2
2
|
require "pry"
|
3
3
|
require "nokogiri"
|
4
4
|
require "launchy"
|
5
|
+
require 'require_all'
|
5
6
|
|
6
|
-
|
7
|
-
# @param _dir can be relative path like '/lib' or "../lib"
|
8
|
-
def require_all(_dir)
|
9
|
-
Dir[File.expand_path(File.join(File.dirname(File.absolute_path(__FILE__)), _dir)) + "/**/*.rb"].each do |file|
|
10
|
-
require file
|
11
|
-
end
|
12
|
-
end
|
13
|
-
|
14
|
-
require_all("../lib")
|
7
|
+
require_all 'lib'
|
data/lib/internet_wisdom/cli.rb
CHANGED
@@ -1,16 +1,25 @@
|
|
1
1
|
class InternetWisdom::CLI
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
INSTRUCTIONS =
|
3
|
+
BORDER = "~~~~~~~~~~~~~~~~~~~~~~~~\n\n"
|
4
|
+
WELCOME = "\nWELCOME TO INTERNET WISDOM!!!"
|
5
|
+
INSTRUCTIONS = %q(
|
6
|
+
Hotkeys:
|
7
|
+
h - help
|
8
|
+
f - follow the author on the web
|
9
|
+
x - filter posts from a specific site
|
10
|
+
[Enter] - get a new post
|
11
|
+
q - quit
|
12
|
+
)
|
6
13
|
|
7
14
|
attr_reader :manager, :current_post, :cur_site, :cur_site_index
|
8
15
|
|
9
16
|
def call
|
17
|
+
puts WELCOME
|
18
|
+
puts INSTRUCTIONS
|
19
|
+
|
10
20
|
@manager = InternetWisdom::SiteManager.new
|
11
21
|
@cur_site_index = -1
|
12
|
-
puts "\
|
13
|
-
puts INSTRUCTIONS
|
22
|
+
puts "\n"
|
14
23
|
get_wisdom
|
15
24
|
end
|
16
25
|
|
@@ -20,24 +29,24 @@ class InternetWisdom::CLI
|
|
20
29
|
end
|
21
30
|
|
22
31
|
def display_post(post)
|
23
|
-
puts
|
32
|
+
puts BORDER
|
24
33
|
@current_post = post.hash
|
25
34
|
post.hash.each do |k, v|
|
26
|
-
puts "#{v}"
|
35
|
+
puts "#{v}\n\n"
|
27
36
|
end
|
28
|
-
puts
|
37
|
+
puts BORDER
|
29
38
|
get_input
|
30
39
|
end
|
31
40
|
|
32
41
|
def filter_sites
|
33
|
-
puts "\nEnter a number below to
|
34
|
-
puts "0. Randomly
|
42
|
+
puts "\nEnter a number below to only get wisdom from a specific source"
|
43
|
+
puts "0. Randomly select wisdom from all sites (default)"
|
35
44
|
manager.sites.each.with_index(1) { |s, i| puts "#{i}. #{s.name}" }
|
36
45
|
input = gets.strip.to_i
|
37
46
|
if input >= 0 && input <= manager.sites.length
|
38
47
|
@cur_site_index = input - 1
|
39
48
|
puts "\n"
|
40
|
-
input < 1 ? (puts "
|
49
|
+
input < 1 ? (puts "Fetching wisdom from randomly chosen sites") : (puts "Fetching wisdom from #{manager.sites[cur_site_index].name}")
|
41
50
|
get_wisdom
|
42
51
|
else
|
43
52
|
puts "Invalid entry, try again"
|
@@ -47,26 +56,27 @@ class InternetWisdom::CLI
|
|
47
56
|
|
48
57
|
def get_input
|
49
58
|
input = nil
|
50
|
-
while input !=
|
59
|
+
while input != 'q'
|
51
60
|
input = gets.strip
|
52
61
|
case input
|
53
62
|
when 'f'
|
54
63
|
Launchy.open(current_post[:link]) if !current_post[:link].nil?
|
55
|
-
when '
|
64
|
+
when 'x'
|
56
65
|
filter_sites
|
57
|
-
when '
|
66
|
+
when 'h'
|
58
67
|
display_instructions
|
59
68
|
when ""
|
60
69
|
get_wisdom
|
61
70
|
else
|
62
|
-
puts "Command not recognized, type '
|
71
|
+
puts "Command not recognized, type 'h' for instructions" if input != "q"
|
63
72
|
end
|
64
73
|
end
|
65
|
-
puts "
|
74
|
+
puts "\n\nGoodbye!!"
|
66
75
|
exit
|
67
76
|
end
|
68
77
|
|
69
78
|
def display_instructions
|
79
|
+
puts WELCOME
|
70
80
|
puts INSTRUCTIONS
|
71
81
|
get_input
|
72
82
|
end
|
@@ -3,9 +3,15 @@ class InternetWisdom::SiteManager
|
|
3
3
|
attr_accessor :sites
|
4
4
|
|
5
5
|
def initialize
|
6
|
-
|
6
|
+
# uncomment debug_scrape to use Nokogiri in development
|
7
7
|
#debug_scrape
|
8
|
-
|
8
|
+
|
9
|
+
# put all your sites and custom scraping here
|
10
|
+
@sites = [
|
11
|
+
self.class.scrape_funtweets,
|
12
|
+
self.class.scrape_brainy_quote_funny,
|
13
|
+
self.class.scrape_brainy_quote_inspirational
|
14
|
+
]
|
9
15
|
end
|
10
16
|
|
11
17
|
def debug_scrape
|
@@ -15,14 +21,9 @@ class InternetWisdom::SiteManager
|
|
15
21
|
binding.pry
|
16
22
|
end
|
17
23
|
|
18
|
-
|
19
|
-
@sites = [
|
20
|
-
create_funtweets,
|
21
|
-
create_brainy_quote
|
22
|
-
]
|
23
|
-
end
|
24
|
+
# SITES:
|
24
25
|
|
25
|
-
def
|
26
|
+
def self.scrape_funtweets
|
26
27
|
funtweets = InternetWisdom::Site.new("FunTweets.com", true)
|
27
28
|
funtweets.refresh_method = Proc.new do |site|
|
28
29
|
doc = Nokogiri::HTML(open("http://funtweets.com/random"))
|
@@ -39,8 +40,8 @@ class InternetWisdom::SiteManager
|
|
39
40
|
funtweets.refresh!
|
40
41
|
end
|
41
42
|
|
42
|
-
def
|
43
|
-
brainy = InternetWisdom::Site.new("BrainyQuotes.com", true)
|
43
|
+
def self.scrape_brainy_quote_funny
|
44
|
+
brainy = InternetWisdom::Site.new("BrainyQuotes.com - Funny", true)
|
44
45
|
brainy.refresh_method = Proc.new do |site|
|
45
46
|
site.page_index = (1..39).to_a.sample
|
46
47
|
doc = Nokogiri::HTML(open("http://www.brainyquote.com/quotes/topics/topic_funny#{site.page_index}.html"))
|
@@ -56,9 +57,21 @@ class InternetWisdom::SiteManager
|
|
56
57
|
brainy.refresh!
|
57
58
|
end
|
58
59
|
|
59
|
-
|
60
|
-
|
61
|
-
|
60
|
+
def self.scrape_brainy_quote_inspirational
|
61
|
+
brainy = InternetWisdom::Site.new("BrainyQuotes.com - Inspirational", true)
|
62
|
+
brainy.refresh_method = Proc.new do |site|
|
63
|
+
site.page_index = (1..15).to_a.sample
|
64
|
+
doc = Nokogiri::HTML(open("http://www.brainyquote.com/quotes/topics/topic_inspirational#{site.page_index}.html"))
|
65
|
+
site.posts = doc.search(".masonryitem").collect do |quote|
|
66
|
+
h = {
|
67
|
+
:author => quote.search("div.bq-aut a").text,
|
68
|
+
:text => quote.search("span.bqQuoteLink a").text,
|
69
|
+
:link => "http://www.brainyquote.com#{quote.search("div.bq-aut a").attribute("href").value}"
|
70
|
+
}
|
71
|
+
InternetWisdom::Post.new(h)
|
72
|
+
end
|
73
|
+
end
|
74
|
+
brainy.refresh!
|
62
75
|
end
|
63
76
|
|
64
77
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: internet-wisdom
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tom Johns
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-06-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -56,14 +56,14 @@ dependencies:
|
|
56
56
|
name: pry
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- - "
|
59
|
+
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
61
|
version: '0'
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- - "
|
66
|
+
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '0'
|
69
69
|
- !ruby/object:Gem::Dependency
|
@@ -106,6 +106,26 @@ dependencies:
|
|
106
106
|
- - ">="
|
107
107
|
- !ruby/object:Gem::Version
|
108
108
|
version: 1.6.7.2
|
109
|
+
- !ruby/object:Gem::Dependency
|
110
|
+
name: require_all
|
111
|
+
requirement: !ruby/object:Gem::Requirement
|
112
|
+
requirements:
|
113
|
+
- - "~>"
|
114
|
+
- !ruby/object:Gem::Version
|
115
|
+
version: '1.3'
|
116
|
+
- - ">="
|
117
|
+
- !ruby/object:Gem::Version
|
118
|
+
version: 1.3.3
|
119
|
+
type: :runtime
|
120
|
+
prerelease: false
|
121
|
+
version_requirements: !ruby/object:Gem::Requirement
|
122
|
+
requirements:
|
123
|
+
- - "~>"
|
124
|
+
- !ruby/object:Gem::Version
|
125
|
+
version: '1.3'
|
126
|
+
- - ">="
|
127
|
+
- !ruby/object:Gem::Version
|
128
|
+
version: 1.3.3
|
109
129
|
description: Bits of wisdom from the internet
|
110
130
|
email:
|
111
131
|
- tommyskies@hotmail.com
|
@@ -125,6 +145,7 @@ files:
|
|
125
145
|
- bin/console
|
126
146
|
- bin/internet-wisdom
|
127
147
|
- bin/setup
|
148
|
+
- internet-wisdom-0.1.3.gem
|
128
149
|
- internet_wisdom.gemspec
|
129
150
|
- lib/internet_wisdom.rb
|
130
151
|
- lib/internet_wisdom/cli.rb
|