diff --git a/catalog/jobs/discover.py b/catalog/jobs/discover.py index 213a5471..0078b94a 100644 --- a/catalog/jobs/discover.py +++ b/catalog/jobs/discover.py @@ -139,22 +139,33 @@ class DiscoverGenerator(BaseJob): .values_list("pk", flat=True)[:40] ) tags = TagManager.popular_tags(days=14)[:40] + excluding_identities = Takahe.get_no_discover_identities() post_ids = ( set( Takahe.get_popular_posts( - 28, settings.MIN_MARKS_FOR_DISCOVER - ).values_list("pk", flat=True)[:20] + 28, settings.MIN_MARKS_FOR_DISCOVER, excluding_identities + ).values_list("pk", flat=True)[:5] ) | set( Takahe.get_popular_posts( - 7, settings.MIN_MARKS_FOR_DISCOVER + 14, settings.MIN_MARKS_FOR_DISCOVER, excluding_identities + ).values_list("pk", flat=True)[:5] + ) + | set( + Takahe.get_popular_posts( + 7, settings.MIN_MARKS_FOR_DISCOVER, excluding_identities ).values_list("pk", flat=True)[:10] ) - | set(Takahe.get_popular_posts(1, 0).values_list("pk", flat=True)[:3]) + | set( + Takahe.get_popular_posts(1, 0, excluding_identities).values_list( + "pk", flat=True + )[:3] + ) | set( Review.objects.filter(visibility=0) + .exclude(owner_id__in=excluding_identities) .order_by("-created_time") - .values_list("posts", flat=True)[:3] + .values_list("posts", flat=True)[:5] ) ) cache.set("public_gallery", gallery_list, timeout=None) @@ -163,5 +174,5 @@ class DiscoverGenerator(BaseJob): cache.set("popular_tags", list(tags), timeout=None) cache.set("popular_posts", list(post_ids), timeout=None) logger.info( - f"Discover data updated, trends: {len(trends)}, collections: {len(collection_ids)}, tags: {len(tags)}, posts: {len(post_ids)}." + f"Discover data updated, excluded: {len(excluding_identities)}, trends: {len(trends)}, collections: {len(collection_ids)}, tags: {len(tags)}, posts: {len(post_ids)}." ) diff --git a/catalog/templates/discover.html b/catalog/templates/discover.html index 6a82c8a2..d21d459c 100644 --- a/catalog/templates/discover.html +++ b/catalog/templates/discover.html @@ -166,15 +166,7 @@ {% endif %}
- -
-
-
-
-
+
+
+ +
+
{% else %} {% include "_sidebar_anonymous.html" %} diff --git a/takahe/utils.py b/takahe/utils.py index 813eec14..65043638 100644 --- a/takahe/utils.py +++ b/takahe/utils.py @@ -911,11 +911,20 @@ class Takahe: ) @staticmethod - def get_popular_posts(days: int = 30, min_interaction: int = 1): + def get_no_discover_identities(): + return list( + Identity.objects.filter(discoverable=False).values_list("pk", flat=True) + ) + + @staticmethod + def get_popular_posts( + days: int = 30, min_interaction: int = 1, exclude_identities: list[int] = [] + ): since = timezone.now() - timedelta(days=days) domains = Takahe.get_neodb_peers() + [settings.SITE_DOMAIN] return ( Post.objects.exclude(state__in=["deleted", "deleted_fanned_out"]) + .exclude(author_id__in=exclude_identities) .filter( author__domain__in=domains, visibility__in=[0, 1, 4],