scraper_google_play 0.1.6 → 0.1.9

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.
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.