Class: AndroidReviews

Inherits:
Object show all
Defined in:
lib/android_reviews.rb,
lib/android_reviews/version.rb,
lib/android_reviews/throttled_error.rb

Defined Under Namespace

Classes: ThrottledError

Constant Summary collapse

URL =
"https://play.google.com/store/getreviews?authuser=0"
DEFAULT_USER_AGENT =
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36"
VERSION =
"0.1.0"

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(app_id, pages_per_minute: 6, language: 'en', user_agent: DEFAULT_USER_AGENT) ⇒ AndroidReviews

Returns a new instance of AndroidReviews.



13
14
15
16
17
18
19
20
# File 'lib/android_reviews.rb', line 13

def initialize(app_id, pages_per_minute: 6, language: 'en', user_agent: DEFAULT_USER_AGENT)
  @app_id            = app_id
  @pages_per_minute  = pages_per_minute
  @language          = language
  @user_agent        = user_agent
  @review_sort_order = 0
  @review_type       = 0
end

Instance Attribute Details

#languageObject

Returns the value of attribute language.



8
9
10
# File 'lib/android_reviews.rb', line 8

def language
  @language
end

#pages_per_minuteObject

Returns the value of attribute pages_per_minute.



8
9
10
# File 'lib/android_reviews.rb', line 8

def pages_per_minute
  @pages_per_minute
end

#review_sort_orderObject

Returns the value of attribute review_sort_order.



8
9
10
# File 'lib/android_reviews.rb', line 8

def review_sort_order
  @review_sort_order
end

#review_typeObject

Returns the value of attribute review_type.



8
9
10
# File 'lib/android_reviews.rb', line 8

def review_type
  @review_type
end

#user_agentObject

Returns the value of attribute user_agent.



8
9
10
# File 'lib/android_reviews.rb', line 8

def user_agent
  @user_agent
end

Instance Method Details

#each_reviewObject



22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/android_reviews.rb', line 22

def each_review
  count = 0
  current_page = 0

  while body = fetch(current_page)
    body.gsub!(/^\)\]\}\'/, '')
    parsed = JSON.parse(body)
    html = parsed[0][2]
    html_doc = Nokogiri::HTML(html)

    html_doc.css('.single-review').each do |node|
      count += 1
      review = review_from_node(node)
      yield review
    end # review loop

    current_page += 1
    throttle_sleep
  end # page loop

  count
end

#reviewsObject



45
46
47
48
49
50
51
# File 'lib/android_reviews.rb', line 45

def reviews
  reviews = []
  each_review do |r|
    reviews << r
  end
  reviews
end