Bläddra i källkod

added funtion to make network call for pages review

Mohidul Islam 4 år sedan
förälder
incheckning
8d66b27a51
4 ändrade filer med 35 tillägg och 3 borttagningar
  1. 5 2
      facebook_app/migrations/0001_initial.py
  2. 7 1
      facebook_app/models.py
  3. 20 0
      facebook_app/review_utils.py
  4. 3 0
      requirements.txt

+ 5 - 2
facebook_app/migrations/0001_initial.py

@@ -1,4 +1,4 @@
-# Generated by Django 3.0.4 on 2020-06-30 09:36
+# Generated by Django 3.0.4 on 2020-06-30 12:32
 
 from django.db import migrations, models
 
@@ -22,7 +22,10 @@ class Migration(migrations.Migration):
         migrations.CreateModel(
             name='FacebookReview',
             fields=[
-                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+                ('id', models.CharField(max_length=255, primary_key=True, serialize=False)),
+                ('recommendation_type', models.BooleanField()),
+                ('review_text', models.TextField(blank=True, null=True)),
+                ('create_time', models.DateTimeField()),
             ],
         ),
     ]

+ 7 - 1
facebook_app/models.py

@@ -11,4 +11,10 @@ class FacebookPage(models.Model):
 
 
 class FacebookReview(models.Model):
-    ...
+    id = models.CharField(max_length=255, primary_key=True)
+    recommendation_type = models.BooleanField()
+    review_text = models.TextField(blank=True, null=True)
+    create_time = models.DateTimeField()
+
+    def __str__(self):
+        return self.review_text

+ 20 - 0
facebook_app/review_utils.py

@@ -0,0 +1,20 @@
+import facebook
+from .models import FacebookPage
+
+
+def get_page_reviews(page_id):
+    token = FacebookPage.objects.get(id=page_id).token
+    api = facebook.GraphAPI(access_token=token, version='3.1')
+    response = api.get_object(
+        id=page_id,
+        fields='ratings.fields(open_graph_story,reviewer)'
+    )
+    # reviews has two fields ['ratings', 'id']
+    ratings = response.get('ratings')
+    # ratings has one field ['data'] which contain all reviews
+    data = ratings.get('data')
+    return data
+
+
+def store_reviews_into_db(reviews):
+    pass

+ 3 - 0
requirements.txt

@@ -1,4 +1,5 @@
 asgiref==3.2.3
+beautifulsoup4==4.9.1
 cachetools==4.0.0
 certifi==2019.11.28
 chardet==3.0.4
@@ -6,6 +7,7 @@ Django==3.0.4
 django-crispy-forms==1.9.0
 django-crontab==0.7.1
 djangorestframework==3.11.0
+facebook-sdk==3.1.0
 google-auth==1.11.2
 google-auth-oauthlib==0.4.1
 idna==2.9
@@ -19,5 +21,6 @@ requests==2.23.0
 requests-oauthlib==1.3.0
 rsa==4.0
 six==1.14.0
+soupsieve==2.0.1
 sqlparse==0.3.1
 urllib3==1.25.8