From 287db3a294330c6b648080d89c42e96b02f465e8 Mon Sep 17 00:00:00 2001 From: Your Name Date: Sat, 1 Jun 2024 23:25:50 -0400 Subject: [PATCH] improve trends --- catalog/jobs/discover.py | 40 +++++++++++++++++++++++++++++++++++++++- neodb-takahe | 2 +- 2 files changed, 40 insertions(+), 2 deletions(-) diff --git a/catalog/jobs/discover.py b/catalog/jobs/discover.py index 62cd731e..33e63935 100644 --- a/catalog/jobs/discover.py +++ b/catalog/jobs/discover.py @@ -1,3 +1,4 @@ +import time from datetime import timedelta from django.conf import settings @@ -15,6 +16,7 @@ MAX_ITEMS_PER_PERIOD = 12 MIN_MARKS = settings.MIN_MARKS_FOR_DISCOVER MAX_DAYS_FOR_PERIOD = 96 MIN_DAYS_FOR_PERIOD = 6 +DAYS_FOR_TRENDS = 3 @JobManager.register @@ -67,6 +69,7 @@ class DiscoverGenerator(BaseJob): ItemCategory.Podcast, ] gallery_list = [] + trends = [] for category in gallery_categories: days = MAX_DAYS_FOR_PERIOD item_ids = [] @@ -92,5 +95,40 @@ class DiscoverGenerator(BaseJob): "items": items, } ) + item_ids = self.get_popular_marked_item_ids(category, DAYS_FOR_TRENDS, [])[ + :3 + ] + if category == ItemCategory.Podcast: + item_ids += self.get_popular_commented_podcast_ids( + DAYS_FOR_TRENDS, item_ids + )[:3] + for i in Item.objects.filter(pk__in=set(item_ids)): + er = ( + i.external_resources.exclude(id_type=IdType.Fediverse).first() + or i.external_resources.first() + ) + cnt = ShelfMember.objects.filter( + item=i, created_time__gt=timezone.now() - timedelta(days=1) + ).count() + trends.append( + { + "title": i.title, + "description": i.brief, + "url": i.absolute_url, + "image": i.cover_image_url or "", + "provider_name": str(er.site_name.label) + if er + else settings.SITE_INFO["site_name"], + "history": [ + { + "day": int(time.time() / 38600) * 38600, + "accounts": cnt, + "uses": cnt, + } + ], + } + ) + cache.set(cache_key, gallery_list, timeout=None) - logger.info("Discover data updated.") + cache.set("trends_links", trends, timeout=None) + logger.info(f"Discover data updated, trends: {len(trends)}.") diff --git a/neodb-takahe b/neodb-takahe index 4efb2ced..8127c17e 160000 --- a/neodb-takahe +++ b/neodb-takahe @@ -1 +1 @@ -Subproject commit 4efb2ced752cdae03f460d96076ee0658c7f6b81 +Subproject commit 8127c17ece569bf2483ea1b8715509d79db5d9c1