toogle 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -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: []