seo_params 0.0.2 → 0.0.3

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.
data/README.md CHANGED
@@ -33,13 +33,17 @@ Or install it yourself as:
33
33
 
34
34
  ``` ruby
35
35
  SeoParams.all("gihub.com")
36
- # => {"pr"=>7, "gp"=>33400000, "tic"=>3700, "yap"=>627119}
36
+ # => {"pr"=>7, "gp"=>42200000, "tic"=>3700, "yap"=>627199, "tweets"=>532, "likes"=>"5,2 т.", "ar"=>276, "dmoz"=>"yes"}
37
37
  ```
38
38
  Short description:
39
39
  `pr` - Google PageRank,
40
40
  `gp` - pages in Google index,
41
41
  `tic` - Yandex tIC,
42
42
  `yap` - pages in Yandex index.
43
+ `tweets` - Twitter tweets
44
+ `likes` - Facebook likes, on Russian in my case
45
+ `ar` - Alexa rank
46
+ `dmoz` - presence in the DMOZ directory
43
47
 
44
48
  ### Fetch specific SEO parameter
45
49
 
@@ -72,6 +76,34 @@ To fetch only pages in Google index:
72
76
  # => 627119
73
77
  ```
74
78
 
79
+ To fetch only tweets
80
+
81
+ ``` ruby
82
+ SeoParams.tweets("gihub.com")
83
+ # => 532
84
+ ```
85
+
86
+ To fetch only likes
87
+
88
+ ``` ruby
89
+ SeoParams.likes("gihub.com")
90
+ # => "5,2 т."
91
+ ```
92
+
93
+ DMOZ:
94
+
95
+ ``` ruby
96
+ SeoParams.dmoz("gihub.com")
97
+ # => "yes"
98
+ ```
99
+
100
+ ### Check Netcraft parametrs
101
+
102
+ ``` ruby
103
+ SeoParams.netcraft("gihub.com")
104
+ # => {"ip"=>"207.97.227.239", "siterank"=>9359, "country"=>"US", "nameserver"=>"ns1.p16.dynect.net", "firstseen"=>"August 2011", "dnsadmin"=>"hostmaster@github.com", "domainregistrator"=>"godaddy.com", "reversedns"=>"github.com", "organisation"=>"GitHub, Inc.", "nsorganisation"=>"Dynamic Network Services, Inc., 150 Dow St, Manchester, 03101, United States"}
105
+ ```
106
+
75
107
  ### Check site position in the search for keywords in Google
76
108
 
77
109
  The most visited sites - are sites on the first page of a search result the user. That is why it is so important control whether the position of your website for keywords.
@@ -118,7 +150,9 @@ Checking the position of keywords in Yandex need only for RuNET, so further desc
118
150
  С проверкой позиций в Яндексе всё несколько сложнее.
119
151
 
120
152
  Во-первых, Вам необходимо быть зарегестрированным пользователем Яндекса. Сделать это можно по вот этой [ссылке][1].
153
+
121
154
  Во-вторых, добавить IP-адрес, с которого будут посылаться запросы к сервису Яндекса, на этой [страничке][2]
155
+
122
156
  В-третьих, скопировать/сохранить `user` и `key` из поля "Ваш адрес для совершения запроса" на страничке в предыдущем пункте. Важно знать, что просто зарегистрированные пользователи могут делать не более 10 запросов в день. Если Вы подтвердите Ваш номер телефона, то сможете делать до 1000 запросов в день. Думаю, для многих этого будет достаточно, а кому и этого мало, тогда следует ознакомиться с информацией на самом сайте, как увеличить данное число.
123
157
 
124
158
  В принципе, уже можно пробовать:
@@ -0,0 +1,23 @@
1
+ # -*- encoding: utf-8 -*-
2
+ require 'nokogiri'
3
+ require 'open-uri'
4
+
5
+ module SeoParams
6
+
7
+ class Alexa
8
+
9
+ def initialize(url)
10
+ @url = url
11
+ @response = Nokogiri::HTML(open("http://xml.alexa.com/data?cli=10&dat=nsa&ver=quirk-searchstatus&url=#{url}"))
12
+ end
13
+
14
+ def rank
15
+ rank = @response.css("popularity").attr("text").content().to_i
16
+ end
17
+
18
+ def dmoz
19
+ @response.xpath("//alexa/dmoz").length > 0 ? "yes" : "no"
20
+ end
21
+ end
22
+
23
+ end
@@ -0,0 +1,22 @@
1
+ # -*- encoding: utf-8 -*-
2
+ require 'nokogiri'
3
+ require 'open-uri'
4
+
5
+ module SeoParams
6
+
7
+ class Facebook
8
+
9
+ def initialize(url)
10
+ @url = url
11
+ end
12
+
13
+ def likes
14
+ api_url = "http://www.facebook.com/plugins/like.php?layout=button_count&href=#{@url}"
15
+ response = Nokogiri::HTML(open(api_url))
16
+ total_likes = response.css("span.pluginCountTextDisconnected")
17
+ total_likes.text()
18
+ end
19
+
20
+ end
21
+
22
+ end
@@ -0,0 +1,74 @@
1
+ # -*- encoding: utf-8 -*-
2
+ require 'nokogiri'
3
+ require 'open-uri'
4
+
5
+ module SeoParams
6
+
7
+ class Netcraft
8
+
9
+ def initialize(url)
10
+ @url = url
11
+ @response = Nokogiri::HTML(open("http://toolbar.netcraft.com/site_report?url=#{url}"))
12
+ end
13
+
14
+ def all
15
+
16
+ h = Hash.new
17
+ h["ip"] = get_ip
18
+ h["siterank"] = get_siterank == 'unknown' ? 'n/a' : get_siterank.to_i
19
+ h["country"] = get_country
20
+ h["nameserver"] = get_nameserver
21
+ h["firstseen"] = get_firstseen
22
+ h["dnsadmin"] = get_dnsadmin
23
+ h["domainregistrator"] = get_domainregistrator == 'unknown' ? 'n/a' : get_domainregistrator
24
+ h["reversedns"] = get_reversedns
25
+ h["organisation"] = get_organisation == 'unknown' ? 'n/a' : get_organisation
26
+ h["nsorganisation"] = get_nsorganisation == 'unknown' ? 'n/a' : get_nsorganisation
27
+ h
28
+
29
+ end
30
+
31
+ private
32
+
33
+ def get_ip
34
+ @response.xpath("//table/tr")[2].children()[1].text()
35
+ end
36
+
37
+ def get_siterank
38
+ @response.xpath("//table/tr")[2].children()[4].children().text()
39
+ end
40
+
41
+ def get_country
42
+ @response.xpath("//table/tr")[3].children()[1].children().children().text().to_s[/\w+/]
43
+ end
44
+
45
+ def get_nameserver
46
+ @response.xpath("//table/tr")[3].children()[4].children().text()
47
+ end
48
+
49
+ def get_firstseen
50
+ @response.xpath("//table/tr")[4].children()[1].text()
51
+ end
52
+
53
+ def get_dnsadmin
54
+ @response.xpath("//table/tr")[4].children()[4].children().text()
55
+ end
56
+
57
+ def get_domainregistrator
58
+ @response.xpath("//table/tr")[5].children()[1].text()
59
+ end
60
+
61
+ def get_reversedns
62
+ @response.xpath("//table/tr")[5].children()[4].children().text()
63
+ end
64
+
65
+ def get_organisation
66
+ @response.xpath("//table/tr")[6].children()[1].text()
67
+ end
68
+
69
+ def get_nsorganisation
70
+ @response.xpath("//table/tr")[6].children()[4].children().text()
71
+ end
72
+ end
73
+
74
+ end
@@ -0,0 +1,19 @@
1
+ # -*- encoding: utf-8 -*-
2
+ require 'nokogiri'
3
+ require 'open-uri'
4
+
5
+ module SeoParams
6
+
7
+ class Twitter
8
+ def initialize(url)
9
+ @url = url
10
+ end
11
+
12
+ def tweets
13
+ api_url = "http://urls.api.twitter.com/1/urls/count.json?url=#{@url}"
14
+ response = JSON.parse(open(api_url).read)
15
+ response["count"]
16
+ end
17
+ end
18
+
19
+ end
@@ -1,3 +1,3 @@
1
1
  module SeoParams
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
3
3
  end
@@ -20,7 +20,7 @@ module SeoParams
20
20
 
21
21
  def yandex_pages
22
22
  pages = ask_yandex(@url)
23
- (pages.is_a? String) ? (url = pages; pages = ask_yandex(url); ) : pages
23
+ (pages.is_a? String) ? (@url = pages; pages = ask_yandex(pages); ) : pages
24
24
  pages
25
25
  end
26
26
 
@@ -55,18 +55,13 @@ module SeoParams
55
55
  doc = Nokogiri::HTML(open("http://webmaster.yandex.ua/check.xml?hostname=#{url}"))
56
56
 
57
57
  if doc.css('div.error-message').length > 0
58
- if doc.css('div.error-message').to_s.scan('Сайт является зеркалом')
59
- url_regexp = /\?hostname\=([a-zA-Z\.:\/0-9]{1,})/
60
- new_url = doc.css('div.error-message').to_s.scan(url_regexp)[0][0]
61
- index = new_url
62
- end
58
+
59
+ index = doc.css('div.error-message').children().children()[1].text()[0..-3].lstrip
63
60
 
64
61
  else
65
- doc.css('div.header div').each do |link|
66
- pages = /\d{1,}/
67
- @pages_in_index = link.content.scan(pages)
68
- index = @pages_in_index[0].to_i
69
- end
62
+
63
+ index = doc.css('div.header div').text()[/\d+/].to_i
64
+
70
65
  end
71
66
 
72
67
  index
data/lib/seo_params.rb CHANGED
@@ -2,6 +2,10 @@
2
2
 
3
3
  require File.expand_path('../seo_params/google', __FILE__)
4
4
  require File.expand_path('../seo_params/yandex', __FILE__)
5
+ require File.expand_path('../seo_params/alexa', __FILE__)
6
+ require File.expand_path('../seo_params/facebook', __FILE__)
7
+ require File.expand_path('../seo_params/netcraft', __FILE__)
8
+ require File.expand_path('../seo_params/twitter', __FILE__)
5
9
 
6
10
  module SeoParams
7
11
 
@@ -13,6 +17,10 @@ module SeoParams
13
17
  h["gp"] = gp(url)
14
18
  h["tic"] = tic(url)
15
19
  h["yap"] = yap(url)
20
+ h["tweets"] = tweets(url)
21
+ h["likes"] = likes(url)
22
+ h["ar"] = ar(url)
23
+ h["dmoz"] = dmoz(url)
16
24
  h
17
25
  end
18
26
 
@@ -51,6 +59,26 @@ module SeoParams
51
59
  Google.new(url).google_position(options[:hl], options[:cr], keywords, options[:num])
52
60
  end
53
61
 
62
+ def tweets(url)
63
+ Twitter.new(url).tweets
64
+ end
65
+
66
+ def likes(url)
67
+ Facebook.new(url).likes
68
+ end
69
+
70
+ def ar(url)
71
+ Alexa.new(url).rank
72
+ end
73
+
74
+ def dmoz(url)
75
+ Alexa.new(url).dmoz
76
+ end
77
+
78
+ def netcraft(url)
79
+ Netcraft.new(url).all
80
+ end
81
+
54
82
  end
55
83
 
56
84
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: seo_params
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-11-16 00:00:00.000000000 Z
12
+ date: 2012-11-19 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: nokogiri
@@ -88,7 +88,11 @@ files:
88
88
  - README.md
89
89
  - Rakefile
90
90
  - lib/seo_params.rb
91
+ - lib/seo_params/alexa.rb
92
+ - lib/seo_params/facebook.rb
91
93
  - lib/seo_params/google.rb
94
+ - lib/seo_params/netcraft.rb
95
+ - lib/seo_params/twitter.rb
92
96
  - lib/seo_params/version.rb
93
97
  - lib/seo_params/yandex.rb
94
98
  - seo_params.gemspec