From 82b1647f45945db2b6941dbae1f93fa4c4c46007 Mon Sep 17 00:00:00 2001
From: OndraRehounek <ondra.rehounek@seznam.cz>
Date: Wed, 31 Aug 2022 12:56:18 +0200
Subject: [PATCH] main: exclude retweets

---
 twitter_utils/services.py | 19 +++++++++++++++----
 1 file changed, 15 insertions(+), 4 deletions(-)

diff --git a/twitter_utils/services.py b/twitter_utils/services.py
index adf44b29..95d98748 100644
--- a/twitter_utils/services.py
+++ b/twitter_utils/services.py
@@ -6,7 +6,7 @@ from django.utils import timezone
 from tweepy import Client
 from tweepy.errors import BadRequest
 
-from main.models import MainHomePage
+from main.models import MainHomePage, MainPersonPage
 
 from .models import Tweet
 
@@ -48,6 +48,7 @@ class TweetDownloadService:
         """
         tweets_response = self.client.get_users_tweets(
             user_id,
+            exclude=["retweets"],
             expansions=["author_id", "entities.mentions.username"],
             max_results=100,
             start_time=timezone.now() - timedelta(days=self.days_back),
@@ -59,15 +60,25 @@ class TweetDownloadService:
 
     def get_user_list_data(self) -> list["User"]:
         twitter_usernames_block = MainHomePage.objects.first().twitter_usernames
+        person_username_list = (
+            MainPersonPage.objects.filter(twitter_username__isnull=False)
+            .values_list("twitter_username", flat=True)
+            .distinct()
+        )
+        homepage_username_list = [
+            username_data["value"] for username_data in twitter_usernames_block.raw_data
+        ]
+        username_list = [*person_username_list, *homepage_username_list]
+
         user_data_list = []
 
-        for username_data in twitter_usernames_block.raw_data:
+        for username in username_list:
             try:
-                user_data_list.append(self.get_user_response(username_data["value"]))
+                user_data_list.append(self.get_user_response(username))
             except BadRequest:
                 logger.error(
                     "Cannot download tweets for the username",
-                    extra={"username": username_data["value"]},
+                    extra={"username": username},
                 )
 
         return user_data_list
-- 
GitLab