|
@@ -1,5 +1,5 @@
|
|
import requests
|
|
import requests
|
|
-from .models import FacebookPage, FacebookReview
|
|
|
|
|
|
+from .models import FacebookPage, FacebookReview, FacebookReviewReply
|
|
|
|
|
|
BASE_URL = 'https://graph.facebook.com'
|
|
BASE_URL = 'https://graph.facebook.com'
|
|
|
|
|
|
@@ -17,6 +17,40 @@ def get_page_reviews(page_id):
|
|
return data
|
|
return data
|
|
|
|
|
|
|
|
|
|
|
|
+def store_review_reply(review_id, page_id):
|
|
|
|
+ token = FacebookPage.objects.get(id=page_id).token
|
|
|
|
+ url = f'{BASE_URL}/{review_id}/comments?access_token={token}'
|
|
|
|
+ response = requests.get(url).json()
|
|
|
|
+ replies = response.get('data')
|
|
|
|
+
|
|
|
|
+ # if review has no reply it will return data=[]
|
|
|
|
+ # if it has reply it it data will return list of reply
|
|
|
|
+ if not replies:
|
|
|
|
+ return
|
|
|
|
+ # we are not interested in all replies.
|
|
|
|
+ # We need the only reply that we did
|
|
|
|
+ for reply in replies:
|
|
|
|
+ from_ = reply.get('from')
|
|
|
|
+ replier_id = from_.get('id') if from_ else None
|
|
|
|
+ if replier_id and replier_id == page_id:
|
|
|
|
+ reply_id = reply.get('id')
|
|
|
|
+ print(reply_id)
|
|
|
|
+ create_time = reply.get('created_time')
|
|
|
|
+ print(create_time)
|
|
|
|
+ replied_text = reply.get('message')
|
|
|
|
+ print(replied_text)
|
|
|
|
+
|
|
|
|
+ # create the review if not exists else update it
|
|
|
|
+ rep = FacebookReviewReply.objects.filter(review_id=review_id).first()
|
|
|
|
+ if not rep:
|
|
|
|
+ FacebookReviewReply.objects.update_or_create(
|
|
|
|
+ review_id=review_id,
|
|
|
|
+ reply_id=reply_id,
|
|
|
|
+ create_time=create_time,
|
|
|
|
+ replied_text=replied_text
|
|
|
|
+ )
|
|
|
|
+
|
|
|
|
+
|
|
def store_reviews_into_db(page_id):
|
|
def store_reviews_into_db(page_id):
|
|
reviews = get_page_reviews(page_id=page_id)
|
|
reviews = get_page_reviews(page_id=page_id)
|
|
for review in reviews:
|
|
for review in reviews:
|
|
@@ -40,6 +74,9 @@ def store_reviews_into_db(page_id):
|
|
if created:
|
|
if created:
|
|
print(f'New Facebook review has been created at {page_id}!')
|
|
print(f'New Facebook review has been created at {page_id}!')
|
|
|
|
|
|
|
|
+ # store the review reply that is done by signature care
|
|
|
|
+ store_review_reply(review_id=review_id, page_id=page_id)
|
|
|
|
+
|
|
|
|
|
|
def populate_facebook_reviews():
|
|
def populate_facebook_reviews():
|
|
page_ids = FacebookPage.objects.values('id')
|
|
page_ids = FacebookPage.objects.values('id')
|