website_worth 0.3.9

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 2f597ed2f1853bec9184dc6715f44facefa7559ab17421aaa00ad43ae72e9d65
4
+ data.tar.gz: '04366479a5f1fafdabf34e5fe74015456bbe5513366e8cb42b3c0b719b713495'
5
+ SHA512:
6
+ metadata.gz: 1d8ea134e1d60c7ef3b79b32d06c725bb8df3688b5663c52878a43e3fe4cda58a7924c519f048c55be5d36991205407706e11afddcc511517de5a6ba80f4a75c
7
+ data.tar.gz: 1b12248fdff71dc048b941853a96b2d715e278cfc1f20f7dd5d5c629d9d6b9eb32b0ae0fe96a4a231d3f046fbb5412918d091f85430520171e7e2161623a7579
data/bin/website_worth ADDED
@@ -0,0 +1,11 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "bundler/setup"
4
+
5
+ require_relative "../config/environment.rb"
6
+
7
+ worth = WebsiteWorth::CLI.new
8
+ worth.intro
9
+ worth.shows_big_name_data
10
+ worth.call
11
+
@@ -0,0 +1,13 @@
1
+ # LIBRARIES
2
+
3
+ require "nokogiri"
4
+ require "open-uri"
5
+ require "pry"
6
+ require "csv"
7
+
8
+ # MAIN ENVIRONMENT FILES
9
+
10
+ require_relative "../lib/website_worth/version"
11
+ require_relative "../lib/website_worth/scraper"
12
+ require_relative "../lib/website_worth/user"
13
+ require_relative "../lib/website_worth/cli"
@@ -0,0 +1,6 @@
1
+ module WebsiteWorth
2
+ class Error < StandardError; end
3
+ # Your code goes here...
4
+ end
5
+
6
+ require_relative '../config/environment.rb'
@@ -0,0 +1,75 @@
1
+ require 'csv'
2
+ class WebsiteWorth::CLI
3
+
4
+ # MAIN METHOD
5
+ def call
6
+ list_users_site_info
7
+ another?
8
+ end
9
+
10
+ # Priority Methods
11
+
12
+ def intro
13
+ time = Time.now
14
+ print "\nPlease enter your name: "
15
+ name = gets.chomp
16
+ puts "\nHello, #{WebsiteWorth::User.new(name).name}. Welcome to the Website Worth checker."
17
+ puts "\nBelow is a very short list of some of the most popular websites along with their estimated revenue and traffic data as of #{get_date_and_time}, Take a look!"
18
+ puts "=========================================================="
19
+ puts
20
+ end
21
+
22
+ def shows_big_name_data
23
+ scraper_object = WebsiteWorth::Scraper.new
24
+ revenue_data = scraper_object.gets_big_name_data
25
+ # binding.pry
26
+ puts "Google > #{revenue_data[0]}"
27
+ puts "Amazon > #{revenue_data[1]}"
28
+ puts "Facebook > #{revenue_data[2]}"
29
+ puts "Youtube > #{revenue_data[3]}"
30
+ puts
31
+ end
32
+
33
+ # WILLIS
34
+
35
+ def list_users_site_info
36
+ print "\nEnter the website that you're interested in > (eg. google.com, repl.it, yoursite.net): "
37
+ scraper_object = WebsiteWorth::Scraper.new
38
+ scraper_object.get_user_site_data
39
+ # WebsiteWorth::Scraper.prep_for_csv
40
+ end
41
+
42
+ def another?
43
+ yes_no = nil
44
+ while yes_no != 'n'
45
+ print "\nWould you like to try another site?(y/n) or (Ctrl+C[Windows Users] or Control+C[Mac Users]) to exit: "
46
+ yes_no = gets.chomp.to_s.downcase
47
+ if yes_no == "y"
48
+ list_users_site_info
49
+ elsif yes_no != 'y' || yes_no != 'n'
50
+ next
51
+ elsif yes_no == ""
52
+ next
53
+ else
54
+ exit!
55
+ end
56
+ end
57
+ end
58
+
59
+ # Supplement Methods
60
+
61
+ def get_date_and_time
62
+ time = Time.now
63
+ months = ["January", "February", "March", "April", "May", "June", "July", "August","September", "October", "November","December"]
64
+ days = ["Sunday", "Monday", "Tuesday", "Wednesday" ,"Thursday", "Friday", "Saturday"]
65
+ "#{days[time.wday]}, #{months[time.month - 1]} #{time.day}, #{time.year}."
66
+ end
67
+
68
+ end
69
+
70
+
71
+
72
+
73
+
74
+
75
+
@@ -0,0 +1,94 @@
1
+ class WebsiteWorth::Scraper
2
+
3
+ #attributes
4
+ attr_accessor :site_name, :overall_revenue, :rev_daily, :rev_monthly, :rev_yearly, :visits_daily, :visits_monthly, :visits_yearly, :views_daily, :views_monthly, :views_yearly, :alexa_rank, :attri
5
+
6
+ # Priority Methods
7
+
8
+ def gets_big_name_data
9
+ urls = ["https://www.worthofweb.com/website-value/google/", "https://www.worthofweb.com/website-value/amazon/", "https://www.worthofweb.com/website-value/facebook/", "https://www.worthofweb.com/website-value/youtube/"]
10
+ worth = []
11
+ urls.each do |url|
12
+ worth << Nokogiri::HTML(open(url)).css('div.card-body div.side-left p:nth-of-type(2)')[0].text
13
+ end
14
+ worth
15
+ end
16
+
17
+ def get_user_site_data
18
+ get_data_source
19
+ pin_point_data
20
+ print_data
21
+ get_site_attributes
22
+ end
23
+
24
+ def get_data_source
25
+ @site_name = WebsiteWorth::User.gives_a_site_name
26
+ @site = Nokogiri::HTML(open("https://www.worthofweb.com/website-value/#{site_name}/"))
27
+ end
28
+
29
+ def pin_point_data
30
+ # ========== Revenue ========== #
31
+ begin
32
+ @overall_revenue = @site.css('div.card-body div.side-left p:nth-of-type(2)')[0].text
33
+ rescue NoMethodError
34
+ puts "Sorry, it seems that the website you entered was invalid"
35
+ WebsiteWorth::CLI.new.call
36
+ end
37
+ @rev_daily = @site.css('div.card-body .col-md-4 p:nth-of-type(2)')[0].text
38
+ @rev_monthly = @site.css('div.card-body .col-md-4 p:nth-of-type(2)')[1].text
39
+ @rev_yearly = @site.css('div.card-body .col-md-4 p:nth-of-type(2)')[2].text
40
+ # ========== Visits ========== #
41
+ @visits_daily = @site.css('div.card-body .col-md-4 p:nth-of-type(2)')[3].text
42
+ @visits_monthly = @site.css('div.card-body .col-md-4 p:nth-of-type(2)')[5].text
43
+ @visits_yearly = @site.css('div.card-body .col-md-4 p:nth-of-type(2)')[7].text
44
+ # ========== Page Views ========== #
45
+ @views_daily = @site.css('div.card-body .col-md-4 p:nth-of-type(2)')[4].text
46
+ @views_monthly = @site.css('div.card-body .col-md-4 p:nth-of-type(2)')[6].text
47
+ @views_yearly = @site.css('div.card-body .col-md-4 p:nth-of-type(2)')[8].text
48
+ # ========== Alexa Rank ========== #
49
+ @alexa_rank = @site.css('div.row')[25].text.gsub(/\R+/, ' ').strip.split[9]
50
+ end
51
+
52
+ def print_data
53
+ puts "\n #{@site_name.upcase}"
54
+ get_site_attributes << @site_name.upcase
55
+ puts
56
+ puts "========== REVENUE =========="
57
+ puts
58
+ puts "===== Overall/ #{@overall_revenue} ====="
59
+ get_site_attributes << @overall_revenue
60
+ puts "===== Daily/ #{@rev_daily} ====="
61
+ get_site_attributes << @rev_daily
62
+ puts "===== Monthly/ #{@rev_monthly} ====="
63
+ get_site_attributes << @rev_monthly
64
+ puts "===== Yearly/ #{@rev_yearly} ====="
65
+ get_site_attributes << @rev_yearly
66
+ puts
67
+ puts "========== VISITS =========="
68
+ puts
69
+ puts "===== Daily/ #{@visits_daily} ====="
70
+ get_site_attributes << @visits_daily
71
+ puts "===== Monthly/ #{@visits_monthly} ====="
72
+ get_site_attributes << @visits_monthly
73
+ puts "===== Yearly/ #{@visits_yearly} ====="
74
+ get_site_attributes << @visits_yearly
75
+ puts
76
+ puts "========== PAGE VIEWS =========="
77
+ puts
78
+ puts "===== Daily/ #{@views_daily} ====="
79
+ get_site_attributes << @views_daily
80
+ puts "===== Monthly/ #{@views_monthly} ====="
81
+ get_site_attributes << @views_monthly
82
+ puts "===== Yearly/ #{@views_yearly} ====="
83
+ get_site_attributes << @views_yearly
84
+ puts
85
+ puts "========== Alexa Rank/ #{@alexa_rank} =========="
86
+ get_site_attributes << @alexa_rank
87
+ end
88
+
89
+ def get_site_attributes
90
+ @attri = []
91
+ attri
92
+ end
93
+
94
+ end
@@ -0,0 +1,28 @@
1
+ require "pry"
2
+ class WebsiteWorth::User
3
+
4
+ attr_reader :name
5
+
6
+ # responsible for providing his/her name and the necessary info to scrape
7
+ def initialize(name)
8
+ if name == ""
9
+ @name = "User"
10
+ else
11
+ @name = name[0].upcase + name[1..-1].downcase
12
+ end
13
+ end
14
+
15
+ def self.gives_a_site_name
16
+ while true
17
+ user_choice = gets.chomp.downcase.to_s
18
+ if user_choice == ""
19
+ print "\nPlease enter a valid website name: "
20
+ next
21
+ else
22
+ break
23
+ end
24
+ end
25
+ user_choice
26
+ end
27
+
28
+ end
@@ -0,0 +1,3 @@
1
+ module WebsiteWorth
2
+ VERSION = "0.3.9"
3
+ end
metadata ADDED
@@ -0,0 +1,79 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: website_worth
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.3.9
5
+ platform: ruby
6
+ authors:
7
+ - "'Naya Willis'"
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2019-10-29 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
+ description: Get the latest estimated revenue and traffic data on any website.
42
+ email:
43
+ - "'greedybrain18@gmail.com'"
44
+ executables:
45
+ - website_worth
46
+ extensions: []
47
+ extra_rdoc_files: []
48
+ files:
49
+ - bin/website_worth
50
+ - config/environment.rb
51
+ - lib/website_worth.rb
52
+ - lib/website_worth/cli.rb
53
+ - lib/website_worth/scraper.rb
54
+ - lib/website_worth/user.rb
55
+ - lib/website_worth/version.rb
56
+ homepage: https://github.com/greedybrain/website_worth.git
57
+ licenses:
58
+ - MIT
59
+ metadata: {}
60
+ post_install_message:
61
+ rdoc_options: []
62
+ require_paths:
63
+ - lib
64
+ required_ruby_version: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ required_rubygems_version: !ruby/object:Gem::Requirement
70
+ requirements:
71
+ - - ">="
72
+ - !ruby/object:Gem::Version
73
+ version: '0'
74
+ requirements: []
75
+ rubygems_version: 3.0.3
76
+ signing_key:
77
+ specification_version: 4
78
+ summary: Website revenue and its' traffic data at your disposal
79
+ test_files: []