totalshares 1.0.0 → 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b7eb9662e622a3409879daaed4c21e5968e447fb
4
- data.tar.gz: ac6539ef0b9e9625bc3f40c1b5076a99afcb72ae
3
+ metadata.gz: 920c671498f685d00753f08d6391b6ee55ba7581
4
+ data.tar.gz: 4f1530352149e20c61dcf218c3fc2b7733fb38cb
5
5
  SHA512:
6
- metadata.gz: ac6049c15d2a98e206ec4411bdb1fd98b3199b8725dbf1403b95192377ce677bf23b4aa59cf441be0bc4ae758520de904878451f3cfdefc9797f169bbdb92d2f
7
- data.tar.gz: c74c4b480576988ce991bad4d1a8415d1fc1190db31f462da6737d5ea2eb63823f0722ad8939a55720abd19e8d8cac086423dfe76a1afa934d2e8724ae076d9c
6
+ metadata.gz: 75e62b5d2819b55e47aaa66a17dd42cf23488d76a1a25eb57689a252a9ead15eae6f9f27bc7373dd84ed0bd221bcf31b744c49267787dd71bfb482af0530ed43
7
+ data.tar.gz: c9ee2e2472828a4baf34d4aa0255d4191f053b92f025e0d29a557cd78e0ebd32534b2e4f93f89644d47cb8bbd7ff2e4156d074019cecefd04efbe55cda6e3e83
data/examples/example.rb CHANGED
@@ -4,7 +4,7 @@ require 'totalshares'
4
4
 
5
5
 
6
6
 
7
- webpage = Webpage.new "http://www.thegeekstuff.com/2014/10/linux-kvm-create-guest-vm/"
7
+ webpage = Totalshares::Webpage.new "http://www.thegeekstuff.com/2014/10/linux-kvm-create-guest-vm/"
8
8
 
9
9
  webpage.gplus :v => true
10
10
  webpage.twitter :v => true
@@ -29,7 +29,7 @@ puts webpage.all
29
29
 
30
30
 
31
31
 
32
- website = Website.new("www.thegeekstuff.com")
32
+ website = Totalshares::Website.new("www.thegeekstuff.com")
33
33
 
34
34
  puts website.facebook :depth_limit => 1, :v => true
35
35
  puts website.twitter :depth_limit => 1
data/lib/totalshares.rb CHANGED
@@ -1,13 +1,13 @@
1
1
  module Totalshares
2
- SOCIAL_URLS = {
3
- "twitter" => "http://cdn.api.twitter.com/1/urls/count.json?url=",
4
- "facebook" => "http://graph.facebook.com/?id=",
5
- "linkedin" => "http://www.linkedin.com/countserv/count/share?format=json&url=",
6
- "reddit" => "http://www.reddit.com/api/info.json?url=",
7
- "stumbledupon" => "http://www.stumbleupon.com/services/1.01/badge.getinfo?url=",
8
- "pinterest" => "http://api.pinterest.com/v1/urls/count.json?url=",
9
- "gplus" => "https://clients6.google.com/rpc?key=AIzaSyCKSbrvQasunBoV16zDH9R33D88CeLr9gQ"
10
- }
2
+ SOCIAL_URLS = {
3
+ "twitter" => "http://cdn.api.twitter.com/1/urls/count.json?url=",
4
+ "facebook" => "http://graph.facebook.com/?id=",
5
+ "linkedin" => "http://www.linkedin.com/countserv/count/share?format=json&url=",
6
+ "reddit" => "http://www.reddit.com/api/info.json?url=",
7
+ "stumbledupon" => "http://www.stumbleupon.com/services/1.01/badge.getinfo?url=",
8
+ "pinterest" => "http://api.pinterest.com/v1/urls/count.json?url=",
9
+ "gplus" => "https://clients6.google.com/rpc?key=AIzaSyCKSbrvQasunBoV16zDH9R33D88CeLr9gQ"
10
+ }
11
11
  end
12
12
 
13
13
  require 'website'
data/lib/webpage.rb CHANGED
@@ -1,100 +1,100 @@
1
1
  require 'typhoeus'
2
2
  require 'json'
3
3
  require 'yaml'
4
- require 'totalshares'
5
- class Webpage
6
- include Totalshares
7
- def initialize(url)
8
- @url = url
9
- @url ="http://#{url}" unless url.start_with? "https://" or url.start_with? "http://"
10
- end
11
-
12
- def twitter(opts = {})
13
- output = Typhoeus.get(SOCIAL_URLS["twitter"] + @url)
14
- count = JSON.parse(output.response_body)["count"].to_i || 0
15
- puts "#{@url}\n#{count}" if opts[:v]
16
- count
17
- end
4
+ module Totalshares
5
+ class Webpage
6
+ def initialize(url)
7
+ @url = url
8
+ @url ="http://#{url}" unless url.start_with? "https://" or url.start_with? "http://"
9
+ end
18
10
 
19
- def facebook(opts = {})
20
- output = Typhoeus.get(SOCIAL_URLS["facebook"] + @url)
21
- count = JSON.parse(output.response_body)["shares"].to_i || 0
22
- puts "#{@url}\n#{count}" if opts[:v]
23
- count
24
- end
11
+ def twitter(opts = {})
12
+ output = Typhoeus.get(SOCIAL_URLS["twitter"] + @url)
13
+ count = JSON.parse(output.response_body)["count"].to_i || 0
14
+ puts "#{@url}\n#{count}" if opts[:v]
15
+ count
16
+ end
25
17
 
26
- def linkedin(opts = {})
27
- output = Typhoeus.get(SOCIAL_URLS["linkedin"] + @url)
28
- count = JSON.parse(output.response_body)["count"].to_i || 0
29
- puts "#{@url}\n#{count}" if opts[:v]
30
- count
31
- end
18
+ def facebook(opts = {})
19
+ output = Typhoeus.get(SOCIAL_URLS["facebook"] + @url)
20
+ count = JSON.parse(output.response_body)["shares"].to_i || 0
21
+ puts "#{@url}\n#{count}" if opts[:v]
22
+ count
23
+ end
32
24
 
33
- def reddit(opts = {})
34
- output = Typhoeus.get(SOCIAL_URLS["reddit"] + @url)
35
- count = JSON.parse(output.response_body)["data"]["children"].size.to_i || 0
36
- puts "#{@url}\n#{count}" if opts[:v]
37
- count
38
- end
25
+ def linkedin(opts = {})
26
+ output = Typhoeus.get(SOCIAL_URLS["linkedin"] + @url)
27
+ count = JSON.parse(output.response_body)["count"].to_i || 0
28
+ puts "#{@url}\n#{count}" if opts[:v]
29
+ count
30
+ end
39
31
 
40
- def stumbledupon(opts = {})
41
- output = Typhoeus.get(SOCIAL_URLS["stumbledupon"] + @url)
42
- count = JSON.parse(output.response_body)["result"]["views"].to_i || 0
43
- puts "#{@url}\n#{count}" if opts[:v]
44
- count
45
- end
32
+ def reddit(opts = {})
33
+ output = Typhoeus.get(SOCIAL_URLS["reddit"] + @url)
34
+ count = JSON.parse(output.response_body)["data"]["children"].size.to_i || 0
35
+ puts "#{@url}\n#{count}" if opts[:v]
36
+ count
37
+ end
46
38
 
47
- def pinterest(opts = {})
48
- output = Typhoeus.get(SOCIAL_URLS["pinterest"] + @url)
49
- if output.response_code.eql? 200
50
- output = output.response_body
51
- json_output = output[output.index("{"), output.rindex("}")- (output.index("{")-1)]
52
- count = JSON.parse(json_output)["count"].to_i || 0
39
+ def stumbledupon(opts = {})
40
+ output = Typhoeus.get(SOCIAL_URLS["stumbledupon"] + @url)
41
+ count = JSON.parse(output.response_body)["result"]["views"].to_i || 0
53
42
  puts "#{@url}\n#{count}" if opts[:v]
54
43
  count
55
- else
56
- nil
57
44
  end
58
- end
59
45
 
60
- def gplus(opts = {})
61
- body = [
62
- {
63
- method: "pos.plusones.get",
64
- id: "p",
65
- params: {
66
- nolog: true,
67
- id: @url,
68
- source: "widget",
69
- userId: "@viewer",
70
- groupId: "@self"
71
- },
72
- jsonrpc: "2.0",
73
- key: "p",
74
- apiVersion: "v1"
75
- }
76
- ]
77
- output = Typhoeus.post(SOCIAL_URLS["gplus"], body: JSON.dump(body), headers: { "content-type" => "application/json", "accept" => "application/json"})
78
- count = JSON.parse(output.response_body)[0]["result"]["metadata"]["globalCounts"]["count"].to_i || 0
79
- puts "#{@url}\n#{count}" if opts[:v]
80
- count
81
- end
46
+ def pinterest(opts = {})
47
+ output = Typhoeus.get(SOCIAL_URLS["pinterest"] + @url)
48
+ if output.response_code.eql? 200
49
+ output = output.response_body
50
+ json_output = output[output.index("{"), output.rindex("}")- (output.index("{")-1)]
51
+ count = JSON.parse(json_output)["count"].to_i || 0
52
+ puts "#{@url}\n#{count}" if opts[:v]
53
+ count
54
+ else
55
+ nil
56
+ end
57
+ end
82
58
 
83
- def all(opts = {})
84
- response = {}
85
- SOCIAL_URLS.each do |key, value|
86
- response[key] = self.send "#{key}"
59
+ def gplus(opts = {})
60
+ body = [
61
+ {
62
+ method: "pos.plusones.get",
63
+ id: "p",
64
+ params: {
65
+ nolog: true,
66
+ id: @url,
67
+ source: "widget",
68
+ userId: "@viewer",
69
+ groupId: "@self"
70
+ },
71
+ jsonrpc: "2.0",
72
+ key: "p",
73
+ apiVersion: "v1"
74
+ }
75
+ ]
76
+ output = Typhoeus.post(SOCIAL_URLS["gplus"], body: JSON.dump(body), headers: { "content-type" => "application/json", "accept" => "application/json"})
77
+ count = JSON.parse(output.response_body)[0]["result"]["metadata"]["globalCounts"]["count"].to_i || 0
78
+ puts "#{@url}\n#{count}" if opts[:v]
79
+ count
80
+ end
81
+
82
+ def all(opts = {})
83
+ response = {}
84
+ SOCIAL_URLS.each do |key, value|
85
+ response[key] = self.send "#{key}"
86
+ end
87
+ puts "#{@url}\n#{response}" if opts[:v]
88
+ response
87
89
  end
88
- puts "#{@url}\n#{response}" if opts[:v]
89
- response
90
- end
91
90
 
92
- def shares_selected(social_networks,opts = {})
93
- response = {}
94
- social_networks.each do |sn|
95
- response[sn] = self.send "#{sn}" unless SOCIAL_URLS[sn].nil? or SOCIAL_URLS[sn] == ""
91
+ def shares_selected(social_networks,opts = {})
92
+ response = {}
93
+ social_networks.each do |sn|
94
+ response[sn] = self.send "#{sn}" unless SOCIAL_URLS[sn].nil? or SOCIAL_URLS[sn] == ""
95
+ end
96
+ puts "#{@url}\n#{response}" if opts[:v]
97
+ response
96
98
  end
97
- puts "#{@url}\n#{response}" if opts[:v]
98
- response
99
99
  end
100
100
  end
data/lib/website.rb CHANGED
@@ -1,61 +1,27 @@
1
1
  require 'webpage'
2
2
  require 'anemone'
3
- require 'totalshares'
4
- class Website
5
- include Totalshares
6
- def initialize(url)
7
- @url = url
8
- @url ="http://#{url}" unless url.start_with? "https://" or url.start_with? "http://"
9
- SOCIAL_URLS.each do |key, value|
10
- instance_variable_set("@#{key}_count", 0)
11
- self.class.send(:define_method, "#{key}") {|opts={}| self.shares(key, opts)}
12
- self.class.send(:define_method, "all") {|opts={}| self.shares("all", opts)}
13
- end
14
- end
15
-
16
- def shares_selected(social_networks, opts = {})
17
- social_networks.each do |sn|
18
- instance_variable_set("@#{sn}_count", 0)
19
- end
20
- output = {}
21
- opts[:skip_query_strings] = true
22
- Anemone.crawl(@url, opts) do | anemone |
23
- anemone.on_every_page do |page|
24
- webpage = Webpage.new(page.url.to_s)
25
- count = webpage.send("shares_selected",social_networks)
26
- print_flag=false
27
- count.each do |key,value|
28
- print_flag=true if value > 0
29
- sum_of_count = instance_variable_get("@#{key}_count") + value
30
- instance_variable_set("@#{key}_count", sum_of_count)
31
- end
32
- puts "#{page.url.to_s}\n#{count}" if print_flag and opts[:v]
33
- output[page.url.to_s]=count if print_flag
3
+ module Totalshares
4
+ class Website
5
+ def initialize(url)
6
+ @url = url
7
+ @url ="http://#{url}" unless url.start_with? "https://" or url.start_with? "http://"
8
+ SOCIAL_URLS.each do |key, value|
9
+ instance_variable_set("@#{key}_count", 0)
10
+ self.class.send(:define_method, "#{key}") {|opts={}| self.shares(key, opts)}
11
+ self.class.send(:define_method, "all") {|opts={}| self.shares("all", opts)}
34
12
  end
35
13
  end
36
- total=0
37
- social_networks.each do |sn|
38
- variable_name = "@#{sn}_count"
39
- puts "#{sn}: #{instance_variable_get(variable_name)}"
40
- total += instance_variable_get(variable_name)
41
- end
42
- puts "Total Shares: #{total}" if opts[:v]
43
- return output, total
44
- end
45
14
 
46
- protected
47
- def shares(method_name, opts = {})
48
- SOCIAL_URLS.each do |key, value|
49
- instance_variable_set("@#{key}_count", 0)
50
- end
51
- output = {}
52
- opts[:skip_query_strings] = true
53
- Anemone.crawl(@url, opts) do | anemone |
54
- anemone.on_every_page do |page|
55
- webpage = Webpage.new(page.url.to_s)
56
- count = webpage.send("#{method_name}")
57
-
58
- if method_name.eql?("all")
15
+ def shares_selected(social_networks, opts = {})
16
+ social_networks.each do |sn|
17
+ instance_variable_set("@#{sn}_count", 0)
18
+ end
19
+ output = {}
20
+ opts[:skip_query_strings] = true
21
+ Anemone.crawl(@url, opts) do | anemone |
22
+ anemone.on_every_page do |page|
23
+ webpage = Webpage.new(page.url.to_s)
24
+ count = webpage.send("shares_selected",social_networks)
59
25
  print_flag=false
60
26
  count.each do |key,value|
61
27
  print_flag=true if value > 0
@@ -63,30 +29,64 @@ class Website
63
29
  instance_variable_set("@#{key}_count", sum_of_count)
64
30
  end
65
31
  puts "#{page.url.to_s}\n#{count}" if print_flag and opts[:v]
66
- output[page.url.to_s] = count if print_flag
67
- else
68
- puts "#{page.url.to_s}\n#{count}" if !(count.eql? 0) and opts[:v]
69
- output[page.url.to_s] = count if !(count.eql? 0)
70
-
71
- sum_of_count = instance_variable_get("@#{method_name}_count") + count
72
- instance_variable_set("@#{method_name}_count", sum_of_count)
32
+ output[page.url.to_s]=count if print_flag
73
33
  end
74
-
75
34
  end
76
- end
77
-
78
- if method_name.eql?("all")
79
35
  total=0
80
- SOCIAL_URLS.each do |key, value|
81
- variable_name = "@#{key}_count"
82
- puts "#{key}: #{instance_variable_get(variable_name)}" if opts[:v]
36
+ social_networks.each do |sn|
37
+ variable_name = "@#{sn}_count"
38
+ puts "#{sn}: #{instance_variable_get(variable_name)}"
83
39
  total += instance_variable_get(variable_name)
84
40
  end
85
41
  puts "Total Shares: #{total}" if opts[:v]
86
42
  return output, total
87
- else
88
- puts "#{method_name}: #{instance_variable_get("@#{method_name}_count")}" if opts[:v]
89
- return output, instance_variable_get("@#{method_name}_count")
43
+ end
44
+
45
+ protected
46
+ def shares(method_name, opts = {})
47
+ SOCIAL_URLS.each do |key, value|
48
+ instance_variable_set("@#{key}_count", 0)
49
+ end
50
+ output = {}
51
+ opts[:skip_query_strings] = true
52
+ Anemone.crawl(@url, opts) do | anemone |
53
+ anemone.on_every_page do |page|
54
+ webpage = Webpage.new(page.url.to_s)
55
+ count = webpage.send("#{method_name}")
56
+
57
+ if method_name.eql?("all")
58
+ print_flag=false
59
+ count.each do |key,value|
60
+ print_flag=true if value > 0
61
+ sum_of_count = instance_variable_get("@#{key}_count") + value
62
+ instance_variable_set("@#{key}_count", sum_of_count)
63
+ end
64
+ puts "#{page.url.to_s}\n#{count}" if print_flag and opts[:v]
65
+ output[page.url.to_s] = count if print_flag
66
+ else
67
+ puts "#{page.url.to_s}\n#{count}" if !(count.eql? 0) and opts[:v]
68
+ output[page.url.to_s] = count if !(count.eql? 0)
69
+
70
+ sum_of_count = instance_variable_get("@#{method_name}_count") + count
71
+ instance_variable_set("@#{method_name}_count", sum_of_count)
72
+ end
73
+
74
+ end
75
+ end
76
+
77
+ if method_name.eql?("all")
78
+ total=0
79
+ SOCIAL_URLS.each do |key, value|
80
+ variable_name = "@#{key}_count"
81
+ puts "#{key}: #{instance_variable_get(variable_name)}" if opts[:v]
82
+ total += instance_variable_get(variable_name)
83
+ end
84
+ puts "Total Shares: #{total}" if opts[:v]
85
+ return output, total
86
+ else
87
+ puts "#{method_name}: #{instance_variable_get("@#{method_name}_count")}" if opts[:v]
88
+ return output, instance_variable_get("@#{method_name}_count")
89
+ end
90
90
  end
91
91
  end
92
92
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: totalshares
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Prashant Kumar