|
@@ -1,6 +1,7 @@
|
|
import re
|
|
import re
|
|
import time
|
|
import time
|
|
import json
|
|
import json
|
|
|
|
+from functools import reduce
|
|
from requests import get, put, post
|
|
from requests import get, put, post
|
|
from gauth.auth_utils import get_gmb_id, get_auth_header
|
|
from gauth.auth_utils import get_gmb_id, get_auth_header
|
|
from .models import Review, Reply
|
|
from .models import Review, Reply
|
|
@@ -13,6 +14,22 @@ STAR_REVIEW_NUM = {'STAR_RATING_UNSPECIFIED': 0, 'ONE': 1, 'TWO': 2, 'THREE': 3,
|
|
BASE_URL = f'https://mybusiness.googleapis.com/v4/'
|
|
BASE_URL = f'https://mybusiness.googleapis.com/v4/'
|
|
|
|
|
|
|
|
|
|
|
|
+def remove_emoji(string):
|
|
|
|
+ emoji_pattern = re.compile("["
|
|
|
|
+ u"\U0001F600-\U0001F64F" # emoticons
|
|
|
|
+ u"\U0001F300-\U0001F5FF" # symbols & pictographs
|
|
|
|
+ u"\U0001F680-\U0001F6FF" # transport & map symbols
|
|
|
|
+ u"\U0001F1E0-\U0001F1FF" # flags (iOS)
|
|
|
|
+ u"\U00002702-\U000027B0"
|
|
|
|
+ u"\U000024C2-\U0001F251"
|
|
|
|
+ "]+", flags=re.UNICODE)
|
|
|
|
+ return emoji_pattern.sub(r'', string)
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+def filter_4bytechar(text):
|
|
|
|
+ return reduce(lambda x,y:x+y ,filter(lambda x: len(x.encode('utf8'))<4, text))
|
|
|
|
+
|
|
|
|
+
|
|
def clean_comment(text):
|
|
def clean_comment(text):
|
|
rules = [
|
|
rules = [
|
|
{r'[^\x00-\x7F]+': ''},
|
|
{r'[^\x00-\x7F]+': ''},
|
|
@@ -63,7 +80,12 @@ def insert_review_into_database(reviews, loc_id):
|
|
review = Review.objects.get(pk=review_id)
|
|
review = Review.objects.get(pk=review_id)
|
|
except Review.DoesNotExist:
|
|
except Review.DoesNotExist:
|
|
review = Review(review_id=review_id)
|
|
review = Review(review_id=review_id)
|
|
- review.comment = rev.get('comment')
|
|
|
|
|
|
+ comment = rev.get('comment')
|
|
|
|
+ if comment:
|
|
|
|
+ comment = clean_comment(comment)
|
|
|
|
+ comment = remove_emoji(comment)
|
|
|
|
+ comment = filter_4bytechar(comment)
|
|
|
|
+ review.comment = comment
|
|
review.create_time = rev.get('createTime')
|
|
review.create_time = rev.get('createTime')
|
|
review.update_time = rev.get('updateTime')
|
|
review.update_time = rev.get('updateTime')
|
|
review.star_rating = STAR_REVIEW_NUM[rev.get('starRating')]
|
|
review.star_rating = STAR_REVIEW_NUM[rev.get('starRating')]
|
|
@@ -138,6 +160,9 @@ def store_batch_of_reviews(reviews):
|
|
review = Review(review_id=review_id)
|
|
review = Review(review_id=review_id)
|
|
comment = rev.get('comment')
|
|
comment = rev.get('comment')
|
|
if comment:
|
|
if comment:
|
|
|
|
+ comment = clean_comment(comment)
|
|
|
|
+ comment = remove_emoji(comment)
|
|
|
|
+ comment = filter_4bytechar(comment)
|
|
review.comment = clean_comment(comment)
|
|
review.comment = clean_comment(comment)
|
|
review.create_time = rev.get('createTime')
|
|
review.create_time = rev.get('createTime')
|
|
review.update_time = rev.get('updateTime')
|
|
review.update_time = rev.get('updateTime')
|