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.
@@ -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
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "bundler/setup"
4
+
5
+ require_relative "../config/env"
6
+
7
+ Toogle::CLI.new.call
8
+
@@ -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"
@@ -0,0 +1,6 @@
1
+ require "toogle/version"
2
+
3
+ module Toogle
4
+ class Error < StandardError; end
5
+ # Your code goes here...
6
+ end
@@ -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
@@ -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
@@ -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
@@ -0,0 +1,3 @@
1
+ module Toogle
2
+ VERSION = "0.1.1"
3
+ 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: []