From 175e544c8d1fc2295a4f007336ae41cd23b76320 Mon Sep 17 00:00:00 2001 From: Believethehype Date: Fri, 5 Jan 2024 15:21:29 +0100 Subject: [PATCH] add support for nip19 event format --- nostr_dvm/utils/nostr_utils.py | 24 +++++++++++++++++++++--- tests/test_events.py | 7 +++++-- 2 files changed, 26 insertions(+), 5 deletions(-) diff --git a/nostr_dvm/utils/nostr_utils.py b/nostr_dvm/utils/nostr_utils.py index 3f7e0d6..e8d5db0 100644 --- a/nostr_dvm/utils/nostr_utils.py +++ b/nostr_dvm/utils/nostr_utils.py @@ -4,7 +4,8 @@ from datetime import timedelta from pathlib import Path import dotenv -from nostr_sdk import Filter, Client, Alphabet, EventId, Event, PublicKey, Tag, Keys, nip04_decrypt, Metadata, Options +from nostr_sdk import Filter, Client, Alphabet, EventId, Event, PublicKey, Tag, Keys, nip04_decrypt, Metadata, Options, \ + Nip19Event def get_event_by_id(event_id: str, client: Client, config=None) -> Event | None: @@ -16,6 +17,13 @@ def get_event_by_id(event_id: str, client: Client, config=None) -> Event | None: else: if str(event_id).startswith('note'): event_id = EventId.from_bech32(event_id) + elif str(event_id).startswith("nevent"): + event_id = Nip19Event.from_bech32(event_id).event_id() + elif str(event_id).startswith('nostr:note'): + event_id = EventId.from_nostr_uri(event_id) + elif str(event_id).startswith("nostr:nevent"): + event_id = Nip19Event.from_nostr_uri(event_id).event_id() + else: event_id = EventId.from_hex(event_id) @@ -31,11 +39,21 @@ def get_event_by_id(event_id: str, client: Client, config=None) -> Event | None: def get_referenced_event_by_id(event_id, client, dvm_config, kinds) -> Event | None: if kinds is None: kinds = [] + if str(event_id).startswith('note'): + event_id = EventId.from_bech32(event_id) + elif str(event_id).startswith("nevent"): + event_id = Nip19Event.from_bech32(event_id).event_id() + elif str(event_id).startswith('nostr:note'): + event_id = EventId.from_nostr_uri(event_id) + elif str(event_id).startswith("nostr:nevent"): + event_id = Nip19Event.from_nostr_uri(event_id).event_id() + else: + event_id = EventId.from_hex(event_id) if len(kinds) > 0: - job_id_filter = Filter().kinds(kinds).event(EventId.from_hex(event_id)).limit(1) + job_id_filter = Filter().kinds(kinds).event(event_id).limit(1) else: - job_id_filter = Filter().event(EventId.from_hex(event_id)).limit(1) + job_id_filter = Filter().event(event_id).limit(1) events = client.get_events_of([job_id_filter], timedelta(seconds=dvm_config.RELAY_TIMEOUT)) diff --git a/tests/test_events.py b/tests/test_events.py index d110823..ceb42d6 100644 --- a/tests/test_events.py +++ b/tests/test_events.py @@ -4,7 +4,7 @@ from pathlib import Path import dotenv import nostr_sdk from nostr_sdk import Keys, Client, Tag, EventBuilder, Filter, HandleNotification, Timestamp, nip04_decrypt, \ - nip04_encrypt, EventId, Options, PublicKey, Event, ClientSigner + nip04_encrypt, EventId, Options, PublicKey, Event, ClientSigner, Nip19Event from nostr_dvm.utils import definitions, dvmconfig from nostr_dvm.utils.nostr_utils import check_and_set_private_key @@ -76,11 +76,14 @@ if __name__ == '__main__': test_referred_events("c70fbd4dbaad22c427d4359981d3bdddd3971ed1a38227ca2f8e5e760f58103c", definitions.EventDefinitions.ANY_RESULT) #shows kind 7000 reaction but not kind 6300 result (d05e7ae9271fe2d8968cccb67c01e3458dbafa4a415e306d49b22729b088c8a1) - test_referred_events("5635e5dd930b3c831f6ab1e348bb488f3c9aca2f13190e93ab5e5e1e1ba1835e", None) + test_referred_events("5635e5dd930b3c831f6ab1e348bb488f3c9aca2f13190e93ab5e5e1e1ba1835e", definitions.EventDefinitions.ANY_RESULT) bech32evnt = EventId.from_hex("5635e5dd930b3c831f6ab1e348bb488f3c9aca2f13190e93ab5e5e1e1ba1835e").to_bech32() print(bech32evnt) + test = Nip19Event.from_bech32("nevent1qqsrjcpejsrlt3u7dy42y6rc97svrq9ver08xy4jr2ll55ynq3sxafcppamhxue69uhkummnw3ezumt0d5pzpmnqx2pla0zvxxcfjqeeysy29ll3mtmf4s3yff0y45r7egau080vqvzqqqqqqyu4q839") + print(test.event_id().to_hex()) + nostruri = EventId.from_hex("5635e5dd930b3c831f6ab1e348bb488f3c9aca2f13190e93ab5e5e1e1ba1835e").to_nostr_uri() print(nostruri)