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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 137e1597ef456e8c42af6d982c2df5269a41647d
4
- data.tar.gz: f36247fcfeda8c45ded485c60a6a21bc974d8d5e
3
+ metadata.gz: 143d0e6653751edb10fc2f9770c41de68a9ce04e
4
+ data.tar.gz: f0ef3cb45321494d44c2e8e33640df0ba5fb0d18
5
5
  SHA512:
6
- metadata.gz: 286f2c68913ccc062d5a9ac262c06ee20b0c3e4208200ab6780fcfa38600dc5e8da1bbaf71295dfc485637d3025af4a2198b5ffc9b38a36d37aaf465391cee66
7
- data.tar.gz: 334be18e040db5e4dde2106159eb33f9b2e5cb2c9e2a18431b13cac5db105e16dbf5c08bb21662b8d63e1fd54dc9ae8887ac46e9d295c1a19c2a346a27c581dc
6
+ metadata.gz: 0f81c56a9789fe5788745d4e4aae1b62d0796035df63df5b395e482120e838415c544d09fb2daee9acc61abb0ffe9918c3d301d6fce1234df88c0909085f07bf
7
+ data.tar.gz: 802c0cf25ef135befc654f67c450b2131aca6eb8827037c777f3f8cc51057ade59ce9aefbc38c560252c1f51c452d7c3ebc2a332fe604902cca0fb04efbbfbf7
Binary file
@@ -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", ">= 0"
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
@@ -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
- # requires all files recursively inside a directory from current dir
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'
@@ -1,16 +1,25 @@
1
1
  class InternetWisdom::CLI
2
2
 
3
- BORDER_TOP = "------------------------"
4
- BORDER_BOT = "------------------------\n"
5
- INSTRUCTIONS = "Type 'f' to follow a link, 'filter' to apply a site filter, 'help' for help, 'exit' to quit or press 'Enter' to get a new post\n"
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 "\nWELCOME TO INTERNET WISDOM!!!"
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 BORDER_TOP
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 BORDER_BOT
37
+ puts BORDER
29
38
  get_input
30
39
  end
31
40
 
32
41
  def filter_sites
33
- puts "\nEnter a number below to apply a site filter"
34
- puts "0. Randomly selects a site (default)"
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 "Choosing wisdom from randomly chosen sites") : (puts "Choosing wisdom from #{manager.sites[cur_site_index].name}")
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 != "exit"
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 'filter'
64
+ when 'x'
56
65
  filter_sites
57
- when 'help'
66
+ when 'h'
58
67
  display_instructions
59
68
  when ""
60
69
  get_wisdom
61
70
  else
62
- puts "Command not recognized, type 'help' for instructions" if input != "exit"
71
+ puts "Command not recognized, type 'h' for instructions" if input != "q"
63
72
  end
64
73
  end
65
- puts "Goodbye"
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
- @sites = []
6
+ # uncomment debug_scrape to use Nokogiri in development
7
7
  #debug_scrape
8
- create_sites
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
- def create_sites
19
- @sites = [
20
- create_funtweets,
21
- create_brainy_quote
22
- ]
23
- end
24
+ # SITES:
24
25
 
25
- def create_funtweets
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 create_brainy_quote
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
- def refresh_site(site)
61
- site.refresh!
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
 
@@ -1,3 +1,3 @@
1
1
  module InternetWisdom
2
- VERSION = "0.1.2"
2
+ VERSION = "0.1.4"
3
3
  end
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.2
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-02-12 00:00:00.000000000 Z
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