Skip to content

Commit

Permalink
[v0.0.2.2] release - full-featured reviews function
Browse files Browse the repository at this point in the history
  • Loading branch information
JoMingyu committed Feb 28, 2020
1 parent 0a30bec commit 62f24d7
Show file tree
Hide file tree
Showing 6 changed files with 60 additions and 7 deletions.
5 changes: 5 additions & 0 deletions CHANGES.md
Original file line number Diff line number Diff line change
Expand Up @@ -51,3 +51,8 @@
## v0.0.2.1
> Added `filter_score_with` parameter to `reviews` feature
- New feature `reviews filtering with score` released.

## v0.0.2.2
> `reivews` feature improvement
- New property `reviews` Added.
- Fix bug of `reivews` feature : Bug that occurs when the total number of reviews is less than the `count` argument.
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
release:
@black ./
@pipenv run black ./
@rm -rf dist/
@python setup.py sdist
@twine upload dist/*
2 changes: 1 addition & 1 deletion google_play_scraper/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,4 @@
from .features.app import app
from .features.reviews import reviews

__version__ = "0.0.2.1"
__version__ = "0.0.2.2"
2 changes: 2 additions & 0 deletions google_play_scraper/constants/element.py
Original file line number Diff line number Diff line change
Expand Up @@ -129,4 +129,6 @@ class ElementSpecs:
"thumbsUpCount": ElementSpec(None, [6]),
"reviewCreatedVersion": ElementSpec(None, [10]),
"at": ElementSpec(None, [5, 0], lambda v: datetime.fromtimestamp(v)),
"replyContent": ElementSpec(None, [7, 1]),
"repliedAt": ElementSpec(None, [7, 2, 0], lambda v: datetime.fromtimestamp(v)),
}
9 changes: 5 additions & 4 deletions google_play_scraper/features/reviews.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import json
from pprint import pprint
from typing import Optional

from google_play_scraper import Sort
Expand Down Expand Up @@ -30,9 +31,6 @@ def reviews(
app_id, lang="en", country="us", sort=Sort.NEWEST, count=100, filter_score_with=None
):
# type: (str, str, str, Sort, int, Optional[int]) -> list
# TODO filtering with device model
# TODO reply data
# TODO refactoring

url = Formats.Reviews.build(lang=lang, country=country)

Expand Down Expand Up @@ -63,8 +61,11 @@ def reviews(
if remaining_count_of_reviews_to_fetch == 0:
break

if isinstance(pagination_token, list):
break

if remaining_count_of_reviews_to_fetch < 200:
_count = count - len(result)
_count = remaining_count_of_reviews_to_fetch

else:
continue
Expand Down
47 changes: 46 additions & 1 deletion tests/e2e_tests/test_reviews.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,8 @@ def test_e2e_scenario_1(self):
self.assertTrue(r["content"])
self.assertTrue(r["score"] >= 1)
self.assertTrue(r["thumbsUpCount"] >= 0)
self.assertTrue(datetime(2019, 12, 1) < r["at"] < datetime(2040, 1, 1))
self.assertTrue(datetime(2019, 12, 1) < r["at"] < datetime(2021, 1, 1))
# TODO change when 2020-12-30

if r["reviewCreatedVersion"]:
review_created_version_contained_review_count += 1
Expand Down Expand Up @@ -70,3 +71,47 @@ def test_e2e_scenario_4(self):
)

self.assertEqual(score * 300, sum([r["score"] for r in result]))

def test_e2e_scenario_5(self):
"""
tests reply
"""

result = reviews(
"com.ekkorr.endlessfrontier",
lang="ko",
country="kr",
sort=Sort.MOST_RELEVANT,
)

review_count_has_reply = 0

for r in result:
reply_content = r["replyContent"]
replied_at = r["repliedAt"]

if reply_content is not None:
self.assertIn("안녕하세요", reply_content)
self.assertIn("EKKORR", reply_content)
self.assertIn("입니다", reply_content)
self.assertIn("감사합니다", reply_content)

self.assertTrue(len(reply_content) > 100)
self.assertIsInstance(replied_at, datetime)
self.assertTrue(
datetime(2018, 1, 1) < replied_at < datetime(2021, 1, 1)
)
# TODO change when 2020-12-30

review_count_has_reply += 1

self.assertTrue(review_count_has_reply > 50)

def test_e2e_scenario_6(self):
"""
tests length of results of first request is lower than specified count argument
"""

result = reviews("com.ekkorr.endlessfrontier")

self.assertTrue(len(result) < 100)

0 comments on commit 62f24d7

Please sign in to comment.