toogle 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 +7 -0
- data/bin/toogle +8 -0
- data/config/env.rb +16 -0
- data/lib/toogle.rb +6 -0
- data/lib/toogle/art.rb +17 -0
- data/lib/toogle/cli.rb +76 -0
- data/lib/toogle/query.rb +32 -0
- data/lib/toogle/scraper.rb +28 -0
- data/lib/toogle/version.rb +3 -0
- metadata +99 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 764fa2a38e2342f107286edaee18c4a905da85c8915cf47e6e275b2a30e2ff08
|
4
|
+
data.tar.gz: 06cfdcb625e0e9504245683467a338a2c9d8e441541b338a9483553c7065648a
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 84317f1c4e0f3a227995af0ca6cc8c60a52f259bb42e725d91a931eaf9f1f1ebc6b160085ff2b888638c78959c81f8d379b9a6fd7044016993b6a80808d19322
|
7
|
+
data.tar.gz: 87db1df17168ba2aed15b4d651031b10978966acbc32cd6847b4ed6b47461871d26ad353aa765ba44e5a5c8ae8fb2ed8203c1eea0ba819608f3caf90bb48b08f
|
data/bin/toogle
ADDED
data/config/env.rb
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
# LIBRARIES
|
2
|
+
require "webdrivers"
|
3
|
+
require "watir"
|
4
|
+
require "colorize"
|
5
|
+
require "tty-spinner"
|
6
|
+
require "tty-progressbar"
|
7
|
+
require "tty-font"
|
8
|
+
require "pastel"
|
9
|
+
require "pry"
|
10
|
+
|
11
|
+
# Main Files
|
12
|
+
require_relative "../lib/toogle/version"
|
13
|
+
require_relative "../lib/toogle/art"
|
14
|
+
require_relative "../lib/toogle/query"
|
15
|
+
require_relative "../lib/toogle/scraper"
|
16
|
+
require_relative "../lib/toogle/cli"
|
data/lib/toogle.rb
ADDED
data/lib/toogle/art.rb
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
class Toogle::FontArt
|
2
|
+
|
3
|
+
def self.line_1
|
4
|
+
puts "#{('_'.yellow * 14) + ('_'.red * 14)}"
|
5
|
+
end
|
6
|
+
|
7
|
+
def self.get_font_art
|
8
|
+
tg = "#{'T'.blue} #{'E'.red} #{'R'.yellow} #{'M'.blue} #{'I'.green} #{'N'.red} #{'A'.blue} #{'L'.red} #{'G'.blue} #{'O'.red} #{'O'.yellow} #{'G'.blue} #{'L'.green} #{'E'.red}"
|
9
|
+
intro = " \n#{tg}"
|
10
|
+
puts intro
|
11
|
+
end
|
12
|
+
|
13
|
+
def self.line_2
|
14
|
+
puts "#{('_'.green * 14) + ('_'.blue * 14)}"
|
15
|
+
end
|
16
|
+
|
17
|
+
end
|
data/lib/toogle/cli.rb
ADDED
@@ -0,0 +1,76 @@
|
|
1
|
+
class Toogle::CLI
|
2
|
+
|
3
|
+
def call
|
4
|
+
show_title_intro
|
5
|
+
creation
|
6
|
+
get_and_show_data
|
7
|
+
perform_new_search?
|
8
|
+
end
|
9
|
+
|
10
|
+
def show_title_intro
|
11
|
+
font_art = Toogle::FontArt
|
12
|
+
font_art.line_1
|
13
|
+
font_art.get_font_art
|
14
|
+
font_art.line_2
|
15
|
+
end
|
16
|
+
|
17
|
+
def scraper_gets_user_info
|
18
|
+
scraper = Toogle::Scraper.new
|
19
|
+
while true
|
20
|
+
puts "\nEnter your".red + " search term/s".green
|
21
|
+
print "\n> ".green
|
22
|
+
query = gets.chomp.to_s.downcase
|
23
|
+
if query == ""
|
24
|
+
puts "\nSorry, you must enter a valid search, or if you wish to exit type 'exit' or press Control C"
|
25
|
+
elsif query == 'exit'
|
26
|
+
goodbye
|
27
|
+
else
|
28
|
+
print "\nHow many pages would you like for you search, choose between 1 and 5? "
|
29
|
+
pages = gets.chomp.to_i
|
30
|
+
if !(1..5).include?(pages)
|
31
|
+
puts "\nSorry, you can only search within the first 5 pages"
|
32
|
+
elsif pages.to_s == 'exit'
|
33
|
+
goodbye
|
34
|
+
else
|
35
|
+
break
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
puts "\nLoading".yellow + " search".green + " results".blue + " ...".red
|
40
|
+
scraper.query_data(query, pages)
|
41
|
+
end
|
42
|
+
|
43
|
+
def creation
|
44
|
+
Toogle::Query.create
|
45
|
+
end
|
46
|
+
|
47
|
+
def get_and_show_data
|
48
|
+
Toogle::Query.all.each do |ele|
|
49
|
+
puts "\n#{ele.title.green}"
|
50
|
+
puts "_".yellow * ele.title.length
|
51
|
+
puts "\n#{ele.link.blue}"
|
52
|
+
puts ele.description.red
|
53
|
+
puts
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
def perform_new_search?
|
58
|
+
while true
|
59
|
+
puts "\nWould you like to enter a new search?(Y/n)"
|
60
|
+
input = gets.chomp.downcase
|
61
|
+
if input == 'y'
|
62
|
+
creation
|
63
|
+
get_and_show_data
|
64
|
+
elsif input == 'n' || input != 'y'
|
65
|
+
goodbye
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
def goodbye
|
71
|
+
puts "\nSee you soon!"
|
72
|
+
puts
|
73
|
+
exit!
|
74
|
+
end
|
75
|
+
|
76
|
+
end
|
data/lib/toogle/query.rb
ADDED
@@ -0,0 +1,32 @@
|
|
1
|
+
class Toogle::Query
|
2
|
+
|
3
|
+
@@all = []
|
4
|
+
|
5
|
+
attr_accessor :title, :link, :description
|
6
|
+
|
7
|
+
def initialize(title=nil, link=nil, description=nil)
|
8
|
+
@title = title
|
9
|
+
@link = link
|
10
|
+
@description = description
|
11
|
+
@@all << self
|
12
|
+
end
|
13
|
+
|
14
|
+
def self.create
|
15
|
+
data = Toogle::CLI.new
|
16
|
+
queried_data = data.scraper_gets_user_info
|
17
|
+
i = 0
|
18
|
+
while i < queried_data[:titles].length
|
19
|
+
this_title = queried_data[:titles][i]
|
20
|
+
this_link = queried_data[:links][i]
|
21
|
+
this_desc = queried_data[:descriptions][i]
|
22
|
+
self.new(this_title, this_link, this_desc)
|
23
|
+
|
24
|
+
i += 1
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
def self.all
|
29
|
+
@@all
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
class Toogle::Scraper
|
2
|
+
|
3
|
+
def get_page
|
4
|
+
Watir::Browser.new :chrome, headless: true, options: {options: {detach: true}}
|
5
|
+
end
|
6
|
+
|
7
|
+
def query_data(users_search, chosen_pages)
|
8
|
+
this = get_page
|
9
|
+
total_pages = chosen_pages
|
10
|
+
this.goto("http://google.com")
|
11
|
+
this.input(name: 'q').send_keys(users_search, :return)
|
12
|
+
|
13
|
+
results = {:titles => [], :links => [], :descriptions => []}
|
14
|
+
|
15
|
+
next_page = 1
|
16
|
+
while next_page <= total_pages.to_i
|
17
|
+
this.elements(css: "div.srg div.rc").each do |ele|
|
18
|
+
results[:titles] << ele.element(css: "h3.LC20lb").text
|
19
|
+
results[:links] << ele.element(css: "div.r a:nth-of-type(1)").attribute('href')
|
20
|
+
results[:descriptions] << ele.element(css: "div.s span.st").text
|
21
|
+
end
|
22
|
+
this.element(css: "table tbody tr td a#pnnext").click
|
23
|
+
next_page += 1
|
24
|
+
end
|
25
|
+
results
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
metadata
ADDED
@@ -0,0 +1,99 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: toogle
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Naya Willis
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2019-11-17 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: '2.0'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '2.0'
|
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: '3.0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '3.0'
|
55
|
+
description: With this gem, you can get only the most relevant results for your 'google'
|
56
|
+
search "who cares about a page 100,000".
|
57
|
+
email:
|
58
|
+
- greedybrain18@gmail.com
|
59
|
+
executables:
|
60
|
+
- toogle
|
61
|
+
extensions: []
|
62
|
+
extra_rdoc_files: []
|
63
|
+
files:
|
64
|
+
- bin/toogle
|
65
|
+
- config/env.rb
|
66
|
+
- lib/toogle.rb
|
67
|
+
- lib/toogle/art.rb
|
68
|
+
- lib/toogle/cli.rb
|
69
|
+
- lib/toogle/query.rb
|
70
|
+
- lib/toogle/scraper.rb
|
71
|
+
- lib/toogle/version.rb
|
72
|
+
homepage: https://github.com/greedybrain/toogle
|
73
|
+
licenses:
|
74
|
+
- MIT
|
75
|
+
metadata:
|
76
|
+
homepage_uri: https://github.com/greedybrain/toogle
|
77
|
+
source_code_uri: https://github.com/greedybrain/toogle
|
78
|
+
changelog_uri: https://github.com/greedybrain/toogle
|
79
|
+
post_install_message:
|
80
|
+
rdoc_options: []
|
81
|
+
require_paths:
|
82
|
+
- lib
|
83
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
84
|
+
requirements:
|
85
|
+
- - ">="
|
86
|
+
- !ruby/object:Gem::Version
|
87
|
+
version: '0'
|
88
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
89
|
+
requirements:
|
90
|
+
- - ">="
|
91
|
+
- !ruby/object:Gem::Version
|
92
|
+
version: '0'
|
93
|
+
requirements: []
|
94
|
+
rubygems_version: 3.0.3
|
95
|
+
signing_key:
|
96
|
+
specification_version: 4
|
97
|
+
summary: Take your traditional google searching "DOWN" a level by using Terminal Google
|
98
|
+
aka Toogle
|
99
|
+
test_files: []
|