scraper_google_play 0.1.6 → 0.1.9

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: e056f14c4695911a94d819da6a4d6372203b982c
4
- data.tar.gz: e62dba0fc36ba175729421f5a2038816ef6bed85
3
+ metadata.gz: 579efb7a514a57f6a7995602b8ffb50a8188fcd0
4
+ data.tar.gz: a181c2fb6750f8c2e03b7e73d8411b15bbaf6997
5
5
  SHA512:
6
- metadata.gz: bcb86d35748ec58b86373d3b0eb28e08ea32fb6d7dc4506b0f662a7885d6fda892f61991235b3a8e70d314c1d4f4150bd7bf69d9645a962ec551d632012b5b33
7
- data.tar.gz: 04f6df677161c917e2610b52a79a8985264cbc0bf0e5fe18a1668ad4eab1f5bb982cf3f4dd64e26e9425f3f53c74617a5cbff529cf02604e216e86f0e338e59e
6
+ metadata.gz: 585bcaddf706850bc881d8534fa96f44171f9e5e946949fd449aa5ff38e8a2c01cbefc63b2bf7c0a971bdd1a3607e42504b474244d8b5cf38834352af41f0744
7
+ data.tar.gz: 94137e754a57d1c138c35211419e618a21da04691043ab4b702698b7d2e2fc23db8ea21ee2649c9d85af4551840339bd347a388a607a110faf9a514fa5f46dc1
data/Rakefile CHANGED
@@ -1,2 +1,2 @@
1
1
  require "bundler/gem_tasks"
2
- task :default => :spec
2
+ task :default => :spec
@@ -3,11 +3,14 @@ module ScraperGooglePlay
3
3
  APPURL = "https://play.google.com/store/apps/details"
4
4
  CATEGORYURL = "https://play.google.com/store/apps/category/"
5
5
  SEARCHURL = "https://play.google.com/store/search"
6
+ REVIEWSURL = "https://play.google.com/store/getreviews"
7
+
6
8
  end
7
9
 
8
10
  require 'mechanize' # and any other gems you need
9
11
  require 'active_support/all'
10
12
  require 'scraper_google_play/base'
11
13
  require 'scraper_google_play/app'
14
+ require 'scraper_google_play/reviews'
12
15
  require 'scraper_google_play/category'
13
- require 'scraper_google_play/search'
16
+ require 'scraper_google_play/search'
@@ -0,0 +1,83 @@
1
+ class ScraperGooglePlay::Reviews < ScraperGooglePlay::Base
2
+ attr_accessor :package_name
3
+
4
+ def initialize(package_name, options = {})
5
+ @package_name = package_name
6
+ @agent = Mechanize.new
7
+ @agent.user_agent_alias = 'Linux Firefox'
8
+ @agent.log = Logger.new(STDOUT)
9
+
10
+ @data = {
11
+ :pageNum => options[:page] || 0,
12
+ :id => package_name || options[:id],
13
+ :reviewSortOrder => options[:sort] || 0,
14
+ :hl => options[:lang] || 'en',
15
+ :reviewType => 0,
16
+ :xhr => 1
17
+ }
18
+ end
19
+
20
+ def fetch_reviews
21
+ @reviews ||= result
22
+ end
23
+
24
+ def result
25
+ @page = @agent.post(
26
+ "#{ScraperGooglePlay::REVIEWSURL}",
27
+ @data,
28
+ {
29
+ 'Content-Type' => 'application/x-www-form-urlencoded;charset=UTF-8',
30
+ }
31
+ )
32
+ data = JSON.parse @page.body[6..-1]
33
+ @page = Nokogiri::HTML(data[0][2])
34
+
35
+ parse_fields
36
+ while (@page.search('.single-review').count >= 40) do
37
+ @data[:pageNum] += 1
38
+ result
39
+ end
40
+ @reviews
41
+ end
42
+
43
+ def parse_fields
44
+ @reviews ||= []
45
+ @page.search('.single-review').each do |elm_review|
46
+ review = {
47
+ id: elm_review.at('.review-header').attr('data-reviewid').strip(),
48
+ info: elm_review.at('.review-info').text,
49
+ userName: elm_review.at('.author-name').text(),
50
+ userImage: getUserImage(elm_review),
51
+ date: elm_review.at('span.review-date').text().strip(),
52
+ score: getScore(elm_review),
53
+ reviewContent: elm_review.at('.review-body').text.gsub(' Full Review ', ''),
54
+ title: elm_review.at('span.review-title').text,
55
+ text: elm_review.at('.review-body').text.gsub(' Full Review ', ''),
56
+ }
57
+ @reviews << review
58
+ end
59
+ end
60
+
61
+ def getUserImage elm_review
62
+ nil
63
+ end
64
+
65
+ def getScore elm_review
66
+ start_rating = elm_review.at('.review-info .current-rating').attributes["style"].text
67
+ case start_rating
68
+ when "width: 100%;"
69
+ 5
70
+ when "width: 80%;"
71
+ 4
72
+ when "width: 60%;"
73
+ 3
74
+ when "width: 40%;"
75
+ 2
76
+ when "width: 20%;"
77
+ 1
78
+ else
79
+ 0
80
+ end
81
+ end
82
+
83
+ end
@@ -1,3 +1,3 @@
1
1
  module ScraperGooglePlay
2
- VERSION = "0.1.6"
2
+ VERSION = "0.1.9"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: scraper_google_play
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.6
4
+ version: 0.1.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nguyen Bach
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-06-05 00:00:00.000000000 Z
11
+ date: 2017-06-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -83,6 +83,7 @@ files:
83
83
  - lib/scraper_google_play/app.rb
84
84
  - lib/scraper_google_play/base.rb
85
85
  - lib/scraper_google_play/category.rb
86
+ - lib/scraper_google_play/reviews.rb
86
87
  - lib/scraper_google_play/search.rb
87
88
  - lib/scraper_google_play/version.rb
88
89
  - scraper_google_play-0.1.0.gem
@@ -106,7 +107,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
106
107
  version: '0'
107
108
  requirements: []
108
109
  rubyforge_project:
109
- rubygems_version: 2.4.8
110
+ rubygems_version: 2.6.11
110
111
  signing_key:
111
112
  specification_version: 4
112
113
  summary: Write a short summary, because Rubygems requires one.