From 7cd683df4cfdc73e80ad7fa3fd1c2cf2088b6db7 Mon Sep 17 00:00:00 2001 From: Believethehype <1097224+believethehype@users.noreply.github.com> Date: Mon, 13 May 2024 08:50:04 +0200 Subject: [PATCH] update popular notes with personalized flag --- .../content_discovery_currently_popular.py | 21 +++++++++++++++++++ ...t_discovery_currently_popular_followers.py | 4 ++-- ...ntent_discovery_currently_popular_topic.py | 8 ++++--- 3 files changed, 28 insertions(+), 5 deletions(-) diff --git a/nostr_dvm/tasks/content_discovery_currently_popular.py b/nostr_dvm/tasks/content_discovery_currently_popular.py index e4d90a6..e5697eb 100644 --- a/nostr_dvm/tasks/content_discovery_currently_popular.py +++ b/nostr_dvm/tasks/content_discovery_currently_popular.py @@ -30,6 +30,8 @@ class DicoverContentCurrentlyPopular(DVMTaskInterface): db_since = 3600 db_name = "db/nostr_recent_notes.db" min_reactions = 2 + personalized = False + result = "" def __init__(self, name, dvm_config: DVMConfig, nip89config: NIP89Config, nip88config: NIP88Config = None, admin_config: AdminConfig = None, options=None): @@ -37,6 +39,12 @@ class DicoverContentCurrentlyPopular(DVMTaskInterface): super().__init__(name=name, dvm_config=dvm_config, nip89config=nip89config, nip88config=nip88config, admin_config=admin_config, options=options) + self.request_form = {"jobID": "generic"} + opts = { + "max_results": 200, + } + self.request_form['options'] = json.dumps(opts) + self.last_schedule = Timestamp.now().as_secs() use_logger = False @@ -44,6 +52,8 @@ class DicoverContentCurrentlyPopular(DVMTaskInterface): init_logger(LogLevel.DEBUG) self.sync_db() + if not self.personalized: + self.result = self.calculate_result(self.request_form) def is_input_supported(self, tags, client=None, dvm_config=None): for tag in tags: @@ -79,6 +89,14 @@ class DicoverContentCurrentlyPopular(DVMTaskInterface): return request_form def process(self, request_form): + # if the dvm supports individual results, recalculate it every time for the request + if self.personalized: + return self.calculate_result(request_form) + #else return the result that gets updated once every schenduled update. In this case on database update. + else: + return self.result + + def calculate_result(self, request_form): from nostr_sdk import Filter from types import SimpleNamespace ns = SimpleNamespace() @@ -138,6 +156,7 @@ class DicoverContentCurrentlyPopular(DVMTaskInterface): if Timestamp.now().as_secs() >= self.last_schedule + dvm_config.SCHEDULE_UPDATES_SECONDS: self.sync_db() self.last_schedule = Timestamp.now().as_secs() + self.result = self.calculate_result(self.request_form) return 1 def sync_db(self): @@ -187,6 +206,7 @@ def build_example(name, identifier, admin_config): "lud16": dvm_config.LN_ADDRESS, "encryptionSupported": True, "cashuAccepted": True, + "personalized": False, "amount": "free", "nip90Params": { "max_results": { @@ -226,6 +246,7 @@ def build_example_subscription(name, identifier, admin_config): "encryptionSupported": True, "cashuAccepted": True, "subscription": True, + "personalized": False, "nip90Params": { "max_results": { "required": False, diff --git a/nostr_dvm/tasks/content_discovery_currently_popular_followers.py b/nostr_dvm/tasks/content_discovery_currently_popular_followers.py index d2a965e..96ff616 100644 --- a/nostr_dvm/tasks/content_discovery_currently_popular_followers.py +++ b/nostr_dvm/tasks/content_discovery_currently_popular_followers.py @@ -229,7 +229,7 @@ def build_example(name, identifier, admin_config): "lud16": dvm_config.LN_ADDRESS, "encryptionSupported": True, "cashuAccepted": True, - "personalized": False, + "personalized": True, "amount": "free", "nip90Params": { "max_results": { @@ -268,7 +268,7 @@ def build_example_subscription(name, identifier, admin_config): "lud16": dvm_config.LN_ADDRESS, "encryptionSupported": True, "cashuAccepted": True, - "personalized": False, + "personalized": True, "subscription": True, "nip90Params": { "max_results": { diff --git a/nostr_dvm/tasks/content_discovery_currently_popular_topic.py b/nostr_dvm/tasks/content_discovery_currently_popular_topic.py index f5a4090..f9d762c 100644 --- a/nostr_dvm/tasks/content_discovery_currently_popular_topic.py +++ b/nostr_dvm/tasks/content_discovery_currently_popular_topic.py @@ -75,7 +75,7 @@ class DicoverContentCurrentlyPopularbyTopic(DVMTaskInterface): self.sync_db() if not self.personalized: - self.result = self.calculate_Result(self.request_form) + self.result = self.calculate_result(self.request_form) def is_input_supported(self, tags, client=None, dvm_config=None): for tag in tags: @@ -130,7 +130,7 @@ class DicoverContentCurrentlyPopularbyTopic(DVMTaskInterface): # if not text/plain, don't post-process return result - def calculate_Result(self, request_form): + def calculate_result(self, request_form): from nostr_sdk import Filter from types import SimpleNamespace ns = SimpleNamespace() @@ -186,7 +186,7 @@ class DicoverContentCurrentlyPopularbyTopic(DVMTaskInterface): if Timestamp.now().as_secs() >= self.last_schedule + dvm_config.SCHEDULE_UPDATES_SECONDS: self.sync_db() self.last_schedule = Timestamp.now().as_secs() - self.result = self.calculate_Result(self.request_form) + self.result = self.calculate_result(self.request_form) print(self.result) return 1 @@ -237,6 +237,7 @@ def build_example(name, identifier, admin_config, options, image, description): "lud16": dvm_config.LN_ADDRESS, "encryptionSupported": True, "cashuAccepted": True, + "personalized": False, "amount": "free", "nip90Params": { "max_results": { @@ -278,6 +279,7 @@ def build_example_subscription(name, identifier, admin_config, options, image, d "encryptionSupported": True, "cashuAccepted": True, "subscription": True, + "personalized": False, "nip90Params": { "max_results": { "required": False,