Skip to content

Commit

Permalink
Feature/25 sleep (cowboy-bebug#26)
Browse files Browse the repository at this point in the history
* Add sleep parameter

* Add tests for the sleep parameter
Change nz -> us where more reviews are available for testing

* Update README to include the new params

* Bump 0.3.4 -> 0.3.5
  • Loading branch information
cowboy-bebug authored Nov 12, 2020
1 parent 7d9b189 commit 96a7e39
Show file tree
Hide file tree
Showing 4 changed files with 24 additions and 4 deletions.
6 changes: 6 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -106,6 +106,12 @@ If `how_many` is not provided, `review()` will terminate after *all* reviews are

**NOTE** the review count seen on the landing page differs from the actual number of reviews fetched. This is simply because only *some* users who rated the app also leave reviews.

### Optional Parameters

- `after`
- a `datetime` object to filter older reviews
- `sleep`
- an `int` to specify seconds to sleep between each call

## Review Data

Expand Down
2 changes: 1 addition & 1 deletion app_store_scraper/__version__.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
__title__ = "app-store-scraper"
__version__ = "0.3.4"
__version__ = "0.3.5"
__description__ = "Single API ☝ App Store Review Scraper 🧹"
__author__ = "Eric Lim"
__url__ = "https://github.com/cowboy-bebug/app-store-scraper"
Expand Down
4 changes: 3 additions & 1 deletion app_store_scraper/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -175,7 +175,7 @@ def search_id(self):
app_id = re.search(pattern, self._response.text).group(1)
return app_id

def review(self, how_many=sys.maxsize, after=None):
def review(self, how_many=sys.maxsize, after=None, sleep=None):
self._log_timer = 0
if after and not isinstance(after, datetime):
raise SystemExit("`after` must be a datetime object.")
Expand All @@ -192,6 +192,8 @@ def review(self, how_many=sys.maxsize, after=None):
self._parse_next()
if self._request_offset is None or self._fetched_count >= how_many:
break
if sleep and type(sleep) is int:
time.sleep(sleep)
except KeyboardInterrupt:
logger.error("Keyboard interrupted")
except Exception as e:
Expand Down
16 changes: 14 additions & 2 deletions app_store_scraper/tests/test_all.py
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ def test_str(self, capsys):


class TestAppStore:
app = AppStore(country="nz", app_name="minecraft")
app = AppStore(country="us", app_name="minecraft")

def test_search_id(self):
self.app.search_id()
Expand Down Expand Up @@ -69,9 +69,15 @@ def test_reviews_for_after(self):
for review in self.app.reviews:
assert review["date"] >= t0 and review["date"] < t1

def test_reviews_for_sleep(self):
t_start = datetime.now()
self.app.review(how_many=40, sleep=2)
t_diff = datetime.now() - t_start
assert t_diff.seconds >= 2


class TestPodcast:
podcast = Podcast(country="nz", app_name="stuff you should know")
podcast = Podcast(country="us", app_name="stuff you should know")

def test_search_id(self):
self.podcast.search_id()
Expand All @@ -98,3 +104,9 @@ def test_reviews_for_after(self):
self.podcast.review(how_many=3, after=t0)
for review in self.podcast.reviews:
assert review["date"] >= t0 and review["date"] < t1

def test_reviews_for_sleep(self):
t_start = datetime.now()
self.podcast.review(how_many=40, sleep=2)
t_diff = datetime.now() - t_start
assert t_diff.seconds >= 2

0 comments on commit 96a7e39

Please sign in to comment.