mirror of
https://github.com/believethehype/nostrdvm.git
synced 2025-06-26 08:42:35 +02:00
error handling for db reconciliation for content-discovery
This commit is contained in:
parent
e8bccc939a
commit
608c5fa651
@ -171,38 +171,40 @@ class DicoverContentLatestLongForm(DVMTaskInterface):
|
|||||||
return 1
|
return 1
|
||||||
|
|
||||||
async def sync_db(self):
|
async def sync_db(self):
|
||||||
relaylimits = RelayLimits.disable()
|
try:
|
||||||
opts = (Options().wait_for_send(False).send_timeout(
|
relaylimits = RelayLimits.disable()
|
||||||
timedelta(seconds=self.dvm_config.RELAY_LONG_TIMEOUT))).relay_limits(relaylimits)
|
opts = (Options().wait_for_send(False).send_timeout(
|
||||||
sk = SecretKey.from_hex(self.dvm_config.PRIVATE_KEY)
|
timedelta(seconds=self.dvm_config.RELAY_LONG_TIMEOUT))).relay_limits(relaylimits)
|
||||||
keys = Keys.parse(sk.to_hex())
|
sk = SecretKey.from_hex(self.dvm_config.PRIVATE_KEY)
|
||||||
signer = NostrSigner.keys(keys)
|
keys = Keys.parse(sk.to_hex())
|
||||||
database = await NostrDatabase.sqlite(self.db_name)
|
signer = NostrSigner.keys(keys)
|
||||||
cli = ClientBuilder().signer(signer).database(database).opts(opts).build()
|
database = await NostrDatabase.sqlite(self.db_name)
|
||||||
|
cli = ClientBuilder().signer(signer).database(database).opts(opts).build()
|
||||||
|
|
||||||
for relay in self.dvm_config.RECONCILE_DB_RELAY_LIST:
|
for relay in self.dvm_config.RECONCILE_DB_RELAY_LIST:
|
||||||
await cli.add_relay(relay)
|
await cli.add_relay(relay)
|
||||||
|
|
||||||
await cli.connect()
|
await cli.connect()
|
||||||
|
|
||||||
timestamp_since = Timestamp.now().as_secs() - self.db_since
|
timestamp_since = Timestamp.now().as_secs() - self.db_since
|
||||||
since = Timestamp.from_secs(timestamp_since)
|
since = Timestamp.from_secs(timestamp_since)
|
||||||
|
|
||||||
filter1 = Filter().kinds([definitions.EventDefinitions.KIND_LONGFORM]).since(since) # Notes, reactions, zaps
|
filter1 = Filter().kinds([definitions.EventDefinitions.KIND_LONGFORM]).since(since) # Notes, reactions, zaps
|
||||||
|
|
||||||
# filter = Filter().author(keys.public_key())
|
|
||||||
if self.dvm_config.LOGLEVEL.value >= LogLevel.DEBUG.value:
|
|
||||||
print("[" + self.dvm_config.NIP89.NAME + "] Syncing notes of the last " + str(
|
|
||||||
self.db_since) + " seconds.. this might take a while..")
|
|
||||||
dbopts = NegentropyOptions().direction(NegentropyDirection.DOWN)
|
|
||||||
await cli.reconcile(filter1, dbopts)
|
|
||||||
await cli.database().delete(Filter().until(Timestamp.from_secs(
|
|
||||||
Timestamp.now().as_secs() - self.db_since))) # Clear old events so db doesn't get too full.
|
|
||||||
await cli.shutdown()
|
|
||||||
if self.dvm_config.LOGLEVEL.value >= LogLevel.DEBUG.value:
|
|
||||||
print(
|
|
||||||
"[" + self.dvm_config.NIP89.NAME + "] Done Syncing Notes of the last " + str(self.db_since) + " seconds..")
|
|
||||||
|
|
||||||
|
# filter = Filter().author(keys.public_key())
|
||||||
|
if self.dvm_config.LOGLEVEL.value >= LogLevel.DEBUG.value:
|
||||||
|
print("[" + self.dvm_config.NIP89.NAME + "] Syncing notes of the last " + str(
|
||||||
|
self.db_since) + " seconds.. this might take a while..")
|
||||||
|
dbopts = NegentropyOptions().direction(NegentropyDirection.DOWN)
|
||||||
|
await cli.reconcile(filter1, dbopts)
|
||||||
|
await cli.database().delete(Filter().until(Timestamp.from_secs(
|
||||||
|
Timestamp.now().as_secs() - self.db_since))) # Clear old events so db doesn't get too full.
|
||||||
|
await cli.shutdown()
|
||||||
|
if self.dvm_config.LOGLEVEL.value >= LogLevel.DEBUG.value:
|
||||||
|
print(
|
||||||
|
"[" + self.dvm_config.NIP89.NAME + "] Done Syncing Notes of the last " + str(self.db_since) + " seconds..")
|
||||||
|
except Exception as e:
|
||||||
|
print(e)
|
||||||
|
|
||||||
# We build an example here that we can call by either calling this file directly from the main directory,
|
# We build an example here that we can call by either calling this file directly from the main directory,
|
||||||
# or by adding it to our playground. You can call the example and adjust it to your needs or redefine it in the
|
# or by adding it to our playground. You can call the example and adjust it to your needs or redefine it in the
|
||||||
|
@ -171,38 +171,40 @@ class DicoverContentLatestWiki(DVMTaskInterface):
|
|||||||
return 1
|
return 1
|
||||||
|
|
||||||
async def sync_db(self):
|
async def sync_db(self):
|
||||||
relaylimits = RelayLimits.disable()
|
try:
|
||||||
opts = (Options().wait_for_send(False).send_timeout(
|
relaylimits = RelayLimits.disable()
|
||||||
timedelta(seconds=self.dvm_config.RELAY_LONG_TIMEOUT))).relay_limits(relaylimits)
|
opts = (Options().wait_for_send(False).send_timeout(
|
||||||
sk = SecretKey.from_hex(self.dvm_config.PRIVATE_KEY)
|
timedelta(seconds=self.dvm_config.RELAY_LONG_TIMEOUT))).relay_limits(relaylimits)
|
||||||
keys = Keys.parse(sk.to_hex())
|
sk = SecretKey.from_hex(self.dvm_config.PRIVATE_KEY)
|
||||||
signer = NostrSigner.keys(keys)
|
keys = Keys.parse(sk.to_hex())
|
||||||
database = await NostrDatabase.sqlite(self.db_name)
|
signer = NostrSigner.keys(keys)
|
||||||
cli = ClientBuilder().signer(signer).database(database).opts(opts).build()
|
database = await NostrDatabase.sqlite(self.db_name)
|
||||||
|
cli = ClientBuilder().signer(signer).database(database).opts(opts).build()
|
||||||
|
|
||||||
for relay in self.dvm_config.RECONCILE_DB_RELAY_LIST:
|
for relay in self.dvm_config.RECONCILE_DB_RELAY_LIST:
|
||||||
await cli.add_relay(relay)
|
await cli.add_relay(relay)
|
||||||
|
|
||||||
await cli.connect()
|
await cli.connect()
|
||||||
|
|
||||||
timestamp_since = Timestamp.now().as_secs() - self.db_since
|
timestamp_since = Timestamp.now().as_secs() - self.db_since
|
||||||
since = Timestamp.from_secs(timestamp_since)
|
since = Timestamp.from_secs(timestamp_since)
|
||||||
|
|
||||||
filter1 = Filter().kinds([definitions.EventDefinitions.KIND_WIKI]).since(since) # Notes, reactions, zaps
|
filter1 = Filter().kinds([definitions.EventDefinitions.KIND_WIKI]).since(since) # Notes, reactions, zaps
|
||||||
|
|
||||||
# filter = Filter().author(keys.public_key())
|
|
||||||
if self.dvm_config.LOGLEVEL.value >= LogLevel.DEBUG.value:
|
|
||||||
print("[" + self.dvm_config.NIP89.NAME + "] Syncing notes of the last " + str(
|
|
||||||
self.db_since) + " seconds.. this might take a while..")
|
|
||||||
dbopts = NegentropyOptions().direction(NegentropyDirection.DOWN)
|
|
||||||
await cli.reconcile(filter1, dbopts)
|
|
||||||
await cli.database().delete(Filter().until(Timestamp.from_secs(
|
|
||||||
Timestamp.now().as_secs() - self.db_since))) # Clear old events so db doesn't get too full.
|
|
||||||
await cli.shutdown()
|
|
||||||
if self.dvm_config.LOGLEVEL.value >= LogLevel.DEBUG.value:
|
|
||||||
print(
|
|
||||||
"[" + self.dvm_config.NIP89.NAME + "] Done Syncing Notes of the last " + str(self.db_since) + " seconds..")
|
|
||||||
|
|
||||||
|
# filter = Filter().author(keys.public_key())
|
||||||
|
if self.dvm_config.LOGLEVEL.value >= LogLevel.DEBUG.value:
|
||||||
|
print("[" + self.dvm_config.NIP89.NAME + "] Syncing notes of the last " + str(
|
||||||
|
self.db_since) + " seconds.. this might take a while..")
|
||||||
|
dbopts = NegentropyOptions().direction(NegentropyDirection.DOWN)
|
||||||
|
await cli.reconcile(filter1, dbopts)
|
||||||
|
await cli.database().delete(Filter().until(Timestamp.from_secs(
|
||||||
|
Timestamp.now().as_secs() - self.db_since))) # Clear old events so db doesn't get too full.
|
||||||
|
await cli.shutdown()
|
||||||
|
if self.dvm_config.LOGLEVEL.value >= LogLevel.DEBUG.value:
|
||||||
|
print(
|
||||||
|
"[" + self.dvm_config.NIP89.NAME + "] Done Syncing Notes of the last " + str(self.db_since) + " seconds..")
|
||||||
|
except Exception as e:
|
||||||
|
print(e)
|
||||||
|
|
||||||
# We build an example here that we can call by either calling this file directly from the main directory,
|
# We build an example here that we can call by either calling this file directly from the main directory,
|
||||||
# or by adding it to our playground. You can call the example and adjust it to your needs or redefine it in the
|
# or by adding it to our playground. You can call the example and adjust it to your needs or redefine it in the
|
||||||
|
@ -170,37 +170,39 @@ class DicoverContentCurrentlyPopular(DVMTaskInterface):
|
|||||||
return 0
|
return 0
|
||||||
|
|
||||||
async def sync_db(self):
|
async def sync_db(self):
|
||||||
opts = (Options().wait_for_send(False).send_timeout(timedelta(seconds=self.dvm_config.RELAY_LONG_TIMEOUT)))
|
try:
|
||||||
sk = SecretKey.from_hex(self.dvm_config.PRIVATE_KEY)
|
opts = (Options().wait_for_send(False).send_timeout(timedelta(seconds=self.dvm_config.RELAY_LONG_TIMEOUT)))
|
||||||
keys = Keys.parse(sk.to_hex())
|
sk = SecretKey.from_hex(self.dvm_config.PRIVATE_KEY)
|
||||||
signer = NostrSigner.keys(keys)
|
keys = Keys.parse(sk.to_hex())
|
||||||
database = await NostrDatabase.sqlite(self.db_name)
|
signer = NostrSigner.keys(keys)
|
||||||
cli = ClientBuilder().signer(signer).database(database).opts(opts).build()
|
database = await NostrDatabase.sqlite(self.db_name)
|
||||||
|
cli = ClientBuilder().signer(signer).database(database).opts(opts).build()
|
||||||
|
|
||||||
for relay in self.dvm_config.RECONCILE_DB_RELAY_LIST:
|
for relay in self.dvm_config.RECONCILE_DB_RELAY_LIST:
|
||||||
await cli.add_relay(relay)
|
await cli.add_relay(relay)
|
||||||
|
|
||||||
await cli.connect()
|
await cli.connect()
|
||||||
|
|
||||||
timestamp_since = Timestamp.now().as_secs() - self.db_since
|
timestamp_since = Timestamp.now().as_secs() - self.db_since
|
||||||
since = Timestamp.from_secs(timestamp_since)
|
since = Timestamp.from_secs(timestamp_since)
|
||||||
|
|
||||||
filter1 = Filter().kinds([definitions.EventDefinitions.KIND_NOTE, definitions.EventDefinitions.KIND_REACTION,
|
filter1 = Filter().kinds([definitions.EventDefinitions.KIND_NOTE, definitions.EventDefinitions.KIND_REACTION,
|
||||||
definitions.EventDefinitions.KIND_ZAP]).since(since) # Notes, reactions, zaps
|
definitions.EventDefinitions.KIND_ZAP]).since(since) # Notes, reactions, zaps
|
||||||
|
|
||||||
# filter = Filter().author(keys.public_key())
|
|
||||||
if self.dvm_config.LOGLEVEL.value >= LogLevel.DEBUG.value:
|
|
||||||
print("[" + self.dvm_config.NIP89.NAME + "] Syncing notes of the last " + str(
|
|
||||||
self.db_since) + " seconds.. this might take a while..")
|
|
||||||
dbopts = NegentropyOptions().direction(NegentropyDirection.DOWN)
|
|
||||||
await cli.reconcile(filter1, dbopts)
|
|
||||||
await cli.database().delete(Filter().until(Timestamp.from_secs(
|
|
||||||
Timestamp.now().as_secs() - self.db_since))) # Clear old events so db doesn't get too full.
|
|
||||||
await cli.shutdown()
|
|
||||||
if self.dvm_config.LOGLEVEL.value >= LogLevel.DEBUG.value:
|
|
||||||
print(
|
|
||||||
"[" + self.dvm_config.NIP89.NAME + "] Done Syncing Notes of the last " + str(self.db_since) + " seconds..")
|
|
||||||
|
|
||||||
|
# filter = Filter().author(keys.public_key())
|
||||||
|
if self.dvm_config.LOGLEVEL.value >= LogLevel.DEBUG.value:
|
||||||
|
print("[" + self.dvm_config.NIP89.NAME + "] Syncing notes of the last " + str(
|
||||||
|
self.db_since) + " seconds.. this might take a while..")
|
||||||
|
dbopts = NegentropyOptions().direction(NegentropyDirection.DOWN)
|
||||||
|
await cli.reconcile(filter1, dbopts)
|
||||||
|
await cli.database().delete(Filter().until(Timestamp.from_secs(
|
||||||
|
Timestamp.now().as_secs() - self.db_since))) # Clear old events so db doesn't get too full.
|
||||||
|
await cli.shutdown()
|
||||||
|
if self.dvm_config.LOGLEVEL.value >= LogLevel.DEBUG.value:
|
||||||
|
print(
|
||||||
|
"[" + self.dvm_config.NIP89.NAME + "] Done Syncing Notes of the last " + str(self.db_since) + " seconds..")
|
||||||
|
except Exception as e:
|
||||||
|
print(e)
|
||||||
|
|
||||||
# We build an example here that we can call by either calling this file directly from the main directory,
|
# We build an example here that we can call by either calling this file directly from the main directory,
|
||||||
# or by adding it to our playground. You can call the example and adjust it to your needs or redefine it in the
|
# or by adding it to our playground. You can call the example and adjust it to your needs or redefine it in the
|
||||||
|
@ -225,37 +225,39 @@ class DicoverContentCurrentlyPopularZaps(DVMTaskInterface):
|
|||||||
return 1
|
return 1
|
||||||
|
|
||||||
async def sync_db(self):
|
async def sync_db(self):
|
||||||
opts = (Options().wait_for_send(False).send_timeout(timedelta(seconds=self.dvm_config.RELAY_LONG_TIMEOUT)))
|
try:
|
||||||
sk = SecretKey.from_hex(self.dvm_config.PRIVATE_KEY)
|
opts = (Options().wait_for_send(False).send_timeout(timedelta(seconds=self.dvm_config.RELAY_LONG_TIMEOUT)))
|
||||||
keys = Keys.parse(sk.to_hex())
|
sk = SecretKey.from_hex(self.dvm_config.PRIVATE_KEY)
|
||||||
signer = NostrSigner.keys(keys)
|
keys = Keys.parse(sk.to_hex())
|
||||||
database = await NostrDatabase.sqlite(self.db_name)
|
signer = NostrSigner.keys(keys)
|
||||||
cli = ClientBuilder().signer(signer).database(database).opts(opts).build()
|
database = await NostrDatabase.sqlite(self.db_name)
|
||||||
|
cli = ClientBuilder().signer(signer).database(database).opts(opts).build()
|
||||||
|
|
||||||
for relay in self.dvm_config.RECONCILE_DB_RELAY_LIST:
|
for relay in self.dvm_config.RECONCILE_DB_RELAY_LIST:
|
||||||
await cli.add_relay(relay)
|
await cli.add_relay(relay)
|
||||||
|
|
||||||
await cli.connect()
|
await cli.connect()
|
||||||
|
|
||||||
timestamp_since = Timestamp.now().as_secs() - self.db_since
|
timestamp_since = Timestamp.now().as_secs() - self.db_since
|
||||||
since = Timestamp.from_secs(timestamp_since)
|
since = Timestamp.from_secs(timestamp_since)
|
||||||
|
|
||||||
filter1 = Filter().kinds([definitions.EventDefinitions.KIND_NOTE, definitions.EventDefinitions.KIND_REACTION,
|
filter1 = Filter().kinds([definitions.EventDefinitions.KIND_NOTE, definitions.EventDefinitions.KIND_REACTION,
|
||||||
definitions.EventDefinitions.KIND_ZAP]).since(since) # Notes, reactions, zaps
|
definitions.EventDefinitions.KIND_ZAP]).since(since) # Notes, reactions, zaps
|
||||||
|
|
||||||
# filter = Filter().author(keys.public_key())
|
|
||||||
if self.dvm_config.LOGLEVEL.value >= LogLevel.DEBUG.value:
|
|
||||||
print("[" + self.dvm_config.NIP89.NAME + "] Syncing notes of the last " + str(
|
|
||||||
self.db_since) + " seconds.. this might take a while..")
|
|
||||||
dbopts = NegentropyOptions().direction(NegentropyDirection.DOWN)
|
|
||||||
await cli.reconcile(filter1, dbopts)
|
|
||||||
await cli.database().delete(Filter().until(Timestamp.from_secs(
|
|
||||||
Timestamp.now().as_secs() - self.db_since))) # Clear old events so db doesn't get too full.
|
|
||||||
await cli.shutdown()
|
|
||||||
if self.dvm_config.LOGLEVEL.value >= LogLevel.DEBUG.value:
|
|
||||||
print(
|
|
||||||
"[" + self.dvm_config.NIP89.NAME + "] Done Syncing Notes of the last " + str(self.db_since) + " seconds..")
|
|
||||||
|
|
||||||
|
# filter = Filter().author(keys.public_key())
|
||||||
|
if self.dvm_config.LOGLEVEL.value >= LogLevel.DEBUG.value:
|
||||||
|
print("[" + self.dvm_config.NIP89.NAME + "] Syncing notes of the last " + str(
|
||||||
|
self.db_since) + " seconds.. this might take a while..")
|
||||||
|
dbopts = NegentropyOptions().direction(NegentropyDirection.DOWN)
|
||||||
|
await cli.reconcile(filter1, dbopts)
|
||||||
|
await cli.database().delete(Filter().until(Timestamp.from_secs(
|
||||||
|
Timestamp.now().as_secs() - self.db_since))) # Clear old events so db doesn't get too full.
|
||||||
|
await cli.shutdown()
|
||||||
|
if self.dvm_config.LOGLEVEL.value >= LogLevel.DEBUG.value:
|
||||||
|
print(
|
||||||
|
"[" + self.dvm_config.NIP89.NAME + "] Done Syncing Notes of the last " + str(self.db_since) + " seconds..")
|
||||||
|
except Exception as e:
|
||||||
|
print(e)
|
||||||
|
|
||||||
# We build an example here that we can call by either calling this file directly from the main directory,
|
# We build an example here that we can call by either calling this file directly from the main directory,
|
||||||
# or by adding it to our playground. You can call the example and adjust it to your needs or redefine it in the
|
# or by adding it to our playground. You can call the example and adjust it to your needs or redefine it in the
|
||||||
|
@ -194,37 +194,40 @@ class DicoverContentCurrentlyPopularFollowers(DVMTaskInterface):
|
|||||||
|
|
||||||
|
|
||||||
async def sync_db(self):
|
async def sync_db(self):
|
||||||
opts = (Options().wait_for_send(False).send_timeout(timedelta(seconds=self.dvm_config.RELAY_LONG_TIMEOUT)))
|
try:
|
||||||
sk = SecretKey.from_hex(self.dvm_config.PRIVATE_KEY)
|
opts = (Options().wait_for_send(False).send_timeout(timedelta(seconds=self.dvm_config.RELAY_LONG_TIMEOUT)))
|
||||||
keys = Keys.parse(sk.to_hex())
|
sk = SecretKey.from_hex(self.dvm_config.PRIVATE_KEY)
|
||||||
signer = NostrSigner.keys(keys)
|
keys = Keys.parse(sk.to_hex())
|
||||||
database = await NostrDatabase.sqlite(self.db_name)
|
signer = NostrSigner.keys(keys)
|
||||||
cli = ClientBuilder().signer(signer).database(database).opts(opts).build()
|
database = await NostrDatabase.sqlite(self.db_name)
|
||||||
|
cli = ClientBuilder().signer(signer).database(database).opts(opts).build()
|
||||||
|
|
||||||
for relay in self.dvm_config.RECONCILE_DB_RELAY_LIST:
|
for relay in self.dvm_config.RECONCILE_DB_RELAY_LIST:
|
||||||
await cli.add_relay(relay)
|
await cli.add_relay(relay)
|
||||||
|
|
||||||
await cli.connect()
|
await cli.connect()
|
||||||
|
|
||||||
timestamp_since = Timestamp.now().as_secs() - self.db_since
|
timestamp_since = Timestamp.now().as_secs() - self.db_since
|
||||||
since = Timestamp.from_secs(timestamp_since)
|
since = Timestamp.from_secs(timestamp_since)
|
||||||
|
|
||||||
filter1 = Filter().kinds(
|
filter1 = Filter().kinds(
|
||||||
[definitions.EventDefinitions.KIND_NOTE, definitions.EventDefinitions.KIND_REACTION,
|
[definitions.EventDefinitions.KIND_NOTE, definitions.EventDefinitions.KIND_REACTION,
|
||||||
definitions.EventDefinitions.KIND_ZAP]).since(since) # Notes, reactions, zaps
|
definitions.EventDefinitions.KIND_ZAP]).since(since) # Notes, reactions, zaps
|
||||||
|
|
||||||
# filter = Filter().author(keys.public_key())
|
# filter = Filter().author(keys.public_key())
|
||||||
if self.dvm_config.LOGLEVEL.value >= LogLevel.DEBUG.value:
|
if self.dvm_config.LOGLEVEL.value >= LogLevel.DEBUG.value:
|
||||||
print("[" + self.dvm_config.NIP89.NAME + "] Syncing notes of the last " + str(
|
print("[" + self.dvm_config.NIP89.NAME + "] Syncing notes of the last " + str(
|
||||||
self.db_since) + " seconds.. this might take a while..")
|
self.db_since) + " seconds.. this might take a while..")
|
||||||
dbopts = NegentropyOptions().direction(NegentropyDirection.DOWN)
|
dbopts = NegentropyOptions().direction(NegentropyDirection.DOWN)
|
||||||
await cli.reconcile(filter1, dbopts)
|
await cli.reconcile(filter1, dbopts)
|
||||||
await cli.database().delete(Filter().until(Timestamp.from_secs(
|
await cli.database().delete(Filter().until(Timestamp.from_secs(
|
||||||
Timestamp.now().as_secs() - self.db_since))) # Clear old events so db doesn't get too full.
|
Timestamp.now().as_secs() - self.db_since))) # Clear old events so db doesn't get too full.
|
||||||
await cli.shutdown()
|
await cli.shutdown()
|
||||||
if self.dvm_config.LOGLEVEL.value >= LogLevel.DEBUG.value:
|
if self.dvm_config.LOGLEVEL.value >= LogLevel.DEBUG.value:
|
||||||
print("[" + self.dvm_config.NIP89.NAME + "] Done Syncing Notes of the last " + str(
|
print("[" + self.dvm_config.NIP89.NAME + "] Done Syncing Notes of the last " + str(
|
||||||
self.db_since) + " seconds..")
|
self.db_since) + " seconds..")
|
||||||
|
except Exception as e:
|
||||||
|
print(e)
|
||||||
|
|
||||||
|
|
||||||
# We build an example here that we can call by either calling this file directly from the main directory,
|
# We build an example here that we can call by either calling this file directly from the main directory,
|
||||||
|
@ -245,36 +245,38 @@ class DicoverContentCurrentlyPopularGallery(DVMTaskInterface):
|
|||||||
return 0
|
return 0
|
||||||
|
|
||||||
async def sync_db(self):
|
async def sync_db(self):
|
||||||
opts = (Options().wait_for_send(False).send_timeout(timedelta(seconds=self.dvm_config.RELAY_LONG_TIMEOUT)))
|
try:
|
||||||
sk = SecretKey.from_hex(self.dvm_config.PRIVATE_KEY)
|
opts = (Options().wait_for_send(False).send_timeout(timedelta(seconds=self.dvm_config.RELAY_LONG_TIMEOUT)))
|
||||||
keys = Keys.parse(sk.to_hex())
|
sk = SecretKey.from_hex(self.dvm_config.PRIVATE_KEY)
|
||||||
signer = NostrSigner.keys(keys)
|
keys = Keys.parse(sk.to_hex())
|
||||||
database = await NostrDatabase.sqlite(self.db_name)
|
signer = NostrSigner.keys(keys)
|
||||||
cli = ClientBuilder().signer(signer).database(database).opts(opts).build()
|
database = await NostrDatabase.sqlite(self.db_name)
|
||||||
|
cli = ClientBuilder().signer(signer).database(database).opts(opts).build()
|
||||||
|
|
||||||
for relay in self.dvm_config.RECONCILE_DB_RELAY_LIST:
|
for relay in self.dvm_config.RECONCILE_DB_RELAY_LIST:
|
||||||
await cli.add_relay(relay)
|
await cli.add_relay(relay)
|
||||||
|
|
||||||
await cli.connect()
|
await cli.connect()
|
||||||
|
|
||||||
timestamp_since = Timestamp.now().as_secs() - self.db_since
|
timestamp_since = Timestamp.now().as_secs() - self.db_since
|
||||||
since = Timestamp.from_secs(timestamp_since)
|
since = Timestamp.from_secs(timestamp_since)
|
||||||
|
|
||||||
filter1 = Filter().kinds([definitions.EventDefinitions.KIND_NIP93_GALLERYENTRY]).since(since) # Notes, reactions, zaps
|
filter1 = Filter().kinds([definitions.EventDefinitions.KIND_NIP93_GALLERYENTRY]).since(since) # Notes, reactions, zaps
|
||||||
|
|
||||||
# filter = Filter().author(keys.public_key())
|
|
||||||
if self.dvm_config.LOGLEVEL.value >= LogLevel.DEBUG.value:
|
|
||||||
print("[" + self.dvm_config.NIP89.NAME + "] Syncing notes of the last " + str(
|
|
||||||
self.db_since) + " seconds.. this might take a while..")
|
|
||||||
dbopts = NegentropyOptions().direction(NegentropyDirection.DOWN)
|
|
||||||
await cli.reconcile(filter1, dbopts)
|
|
||||||
await cli.database().delete(Filter().until(Timestamp.from_secs(
|
|
||||||
Timestamp.now().as_secs() - self.db_since))) # Clear old events so db doesn't get too full.
|
|
||||||
await cli.shutdown()
|
|
||||||
if self.dvm_config.LOGLEVEL.value >= LogLevel.DEBUG.value:
|
|
||||||
print(
|
|
||||||
"[" + self.dvm_config.NIP89.NAME + "] Done Syncing Notes of the last " + str(self.db_since) + " seconds..")
|
|
||||||
|
|
||||||
|
# filter = Filter().author(keys.public_key())
|
||||||
|
if self.dvm_config.LOGLEVEL.value >= LogLevel.DEBUG.value:
|
||||||
|
print("[" + self.dvm_config.NIP89.NAME + "] Syncing notes of the last " + str(
|
||||||
|
self.db_since) + " seconds.. this might take a while..")
|
||||||
|
dbopts = NegentropyOptions().direction(NegentropyDirection.DOWN)
|
||||||
|
await cli.reconcile(filter1, dbopts)
|
||||||
|
await cli.database().delete(Filter().until(Timestamp.from_secs(
|
||||||
|
Timestamp.now().as_secs() - self.db_since))) # Clear old events so db doesn't get too full.
|
||||||
|
await cli.shutdown()
|
||||||
|
if self.dvm_config.LOGLEVEL.value >= LogLevel.DEBUG.value:
|
||||||
|
print(
|
||||||
|
"[" + self.dvm_config.NIP89.NAME + "] Done Syncing Notes of the last " + str(self.db_since) + " seconds..")
|
||||||
|
except Exception as e:
|
||||||
|
print(e)
|
||||||
|
|
||||||
# We build an example here that we can call by either calling this file directly from the main directory,
|
# We build an example here that we can call by either calling this file directly from the main directory,
|
||||||
# or by adding it to our playground. You can call the example and adjust it to your needs or redefine it in the
|
# or by adding it to our playground. You can call the example and adjust it to your needs or redefine it in the
|
||||||
|
@ -219,55 +219,58 @@ class DicoverContentCurrentlyPopularMostr(DVMTaskInterface):
|
|||||||
return 0
|
return 0
|
||||||
|
|
||||||
async def sync_db(self):
|
async def sync_db(self):
|
||||||
opts = (Options().wait_for_send(False).send_timeout(timedelta(seconds=self.dvm_config.RELAY_LONG_TIMEOUT)))
|
|
||||||
sk = SecretKey.from_hex(self.dvm_config.PRIVATE_KEY)
|
|
||||||
keys = Keys.parse(sk.to_hex())
|
|
||||||
signer = NostrSigner.keys(keys)
|
|
||||||
database = await NostrDatabase.sqlite(self.db_name)
|
|
||||||
cli = ClientBuilder().signer(signer).database(database).opts(opts).build()
|
|
||||||
|
|
||||||
for relay in self.dvm_config.RECONCILE_DB_RELAY_LIST:
|
|
||||||
await cli.add_relay(relay)
|
|
||||||
|
|
||||||
await cli.connect()
|
|
||||||
|
|
||||||
timestamp_since = Timestamp.now().as_secs() - self.db_since
|
|
||||||
since = Timestamp.from_secs(timestamp_since)
|
|
||||||
|
|
||||||
filter1 = Filter().kinds(
|
|
||||||
[definitions.EventDefinitions.KIND_NOTE, EventDefinitions.KIND_PROFILE, EventDefinitions.KIND_ZAP,
|
|
||||||
EventDefinitions.KIND_REPOST,
|
|
||||||
EventDefinitions.KIND_REACTION]).since(since) # Notes, reactions, zaps
|
|
||||||
filter2 = Filter().kinds(
|
|
||||||
[EventDefinitions.KIND_PROFILE]).limit(10000) # Notes, reactions, zaps
|
|
||||||
filter3 = Filter().kinds(
|
|
||||||
[EventDefinitions.KIND_ZAP,
|
|
||||||
EventDefinitions.KIND_REPOST,
|
|
||||||
EventDefinitions.KIND_REACTION]).since(since) # Notes, reactions, zaps
|
|
||||||
# Notes, reactions, zaps
|
|
||||||
|
|
||||||
# filter = Filter().author(keys.public_key())
|
|
||||||
if self.dvm_config.LOGLEVEL.value >= LogLevel.DEBUG.value:
|
|
||||||
print("[" + self.dvm_config.NIP89.NAME + "] Syncing notes of the last " + str(
|
|
||||||
self.db_since) + " seconds.. this might take a while..")
|
|
||||||
#dbopts = NegentropyOptions().direction(NegentropyDirection.DOWN)
|
|
||||||
#await cli.reconcile(filter1, dbopts)
|
|
||||||
#await cli.reconcile(filter2, dbopts)
|
|
||||||
#await cli.reconcile(filter3, dbopts)
|
|
||||||
|
|
||||||
# RECONCOILE NOT POSSIBLE ON THESE RELAYS SO WE FETCH AB BUNCH (will be stored in db)
|
|
||||||
try:
|
try:
|
||||||
events = await cli.get_events_of([filter1, filter2, filter3], timedelta(20))
|
opts = (Options().wait_for_send(False).send_timeout(timedelta(seconds=self.dvm_config.RELAY_LONG_TIMEOUT)))
|
||||||
|
sk = SecretKey.from_hex(self.dvm_config.PRIVATE_KEY)
|
||||||
|
keys = Keys.parse(sk.to_hex())
|
||||||
|
signer = NostrSigner.keys(keys)
|
||||||
|
database = await NostrDatabase.sqlite(self.db_name)
|
||||||
|
cli = ClientBuilder().signer(signer).database(database).opts(opts).build()
|
||||||
|
|
||||||
|
for relay in self.dvm_config.RECONCILE_DB_RELAY_LIST:
|
||||||
|
await cli.add_relay(relay)
|
||||||
|
|
||||||
|
await cli.connect()
|
||||||
|
|
||||||
|
timestamp_since = Timestamp.now().as_secs() - self.db_since
|
||||||
|
since = Timestamp.from_secs(timestamp_since)
|
||||||
|
|
||||||
|
filter1 = Filter().kinds(
|
||||||
|
[definitions.EventDefinitions.KIND_NOTE, EventDefinitions.KIND_PROFILE, EventDefinitions.KIND_ZAP,
|
||||||
|
EventDefinitions.KIND_REPOST,
|
||||||
|
EventDefinitions.KIND_REACTION]).since(since) # Notes, reactions, zaps
|
||||||
|
filter2 = Filter().kinds(
|
||||||
|
[EventDefinitions.KIND_PROFILE]).limit(10000) # Notes, reactions, zaps
|
||||||
|
filter3 = Filter().kinds(
|
||||||
|
[EventDefinitions.KIND_ZAP,
|
||||||
|
EventDefinitions.KIND_REPOST,
|
||||||
|
EventDefinitions.KIND_REACTION]).since(since) # Notes, reactions, zaps
|
||||||
|
# Notes, reactions, zaps
|
||||||
|
|
||||||
|
# filter = Filter().author(keys.public_key())
|
||||||
|
if self.dvm_config.LOGLEVEL.value >= LogLevel.DEBUG.value:
|
||||||
|
print("[" + self.dvm_config.NIP89.NAME + "] Syncing notes of the last " + str(
|
||||||
|
self.db_since) + " seconds.. this might take a while..")
|
||||||
|
#dbopts = NegentropyOptions().direction(NegentropyDirection.DOWN)
|
||||||
|
#await cli.reconcile(filter1, dbopts)
|
||||||
|
#await cli.reconcile(filter2, dbopts)
|
||||||
|
#await cli.reconcile(filter3, dbopts)
|
||||||
|
|
||||||
|
# RECONCOILE NOT POSSIBLE ON THESE RELAYS SO WE FETCH AB BUNCH (will be stored in db)
|
||||||
|
try:
|
||||||
|
events = await cli.get_events_of([filter1, filter2, filter3], timedelta(20))
|
||||||
|
except Exception as e:
|
||||||
|
print(e)
|
||||||
|
# Do not delete profiles
|
||||||
|
await cli.database().delete(Filter().kinds([EventDefinitions.KIND_NOTE, EventDefinitions.KIND_ZAP, EventDefinitions.KIND_REPOST, EventDefinitions.KIND_REACTION]).until(Timestamp.from_secs(
|
||||||
|
Timestamp.now().as_secs() - self.db_since))) # Clear old events so db doesn't get too full.
|
||||||
|
await cli.shutdown()
|
||||||
|
if self.dvm_config.LOGLEVEL.value >= LogLevel.DEBUG.value:
|
||||||
|
print(
|
||||||
|
"[" + self.dvm_config.NIP89.NAME + "] Done Syncing Notes of the last " + str(
|
||||||
|
self.db_since) + " seconds..")
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print(e)
|
print(e)
|
||||||
# Do not delete profiles
|
|
||||||
await cli.database().delete(Filter().kinds([EventDefinitions.KIND_NOTE, EventDefinitions.KIND_ZAP, EventDefinitions.KIND_REPOST, EventDefinitions.KIND_REACTION]).until(Timestamp.from_secs(
|
|
||||||
Timestamp.now().as_secs() - self.db_since))) # Clear old events so db doesn't get too full.
|
|
||||||
await cli.shutdown()
|
|
||||||
if self.dvm_config.LOGLEVEL.value >= LogLevel.DEBUG.value:
|
|
||||||
print(
|
|
||||||
"[" + self.dvm_config.NIP89.NAME + "] Done Syncing Notes of the last " + str(
|
|
||||||
self.db_since) + " seconds..")
|
|
||||||
|
|
||||||
|
|
||||||
# We build an example here that we can call by either calling this file directly from the main directory,
|
# We build an example here that we can call by either calling this file directly from the main directory,
|
||||||
|
@ -221,37 +221,39 @@ class DicoverContentCurrentlyPopularNonFollowers(DVMTaskInterface):
|
|||||||
return 1
|
return 1
|
||||||
|
|
||||||
async def sync_db(self):
|
async def sync_db(self):
|
||||||
opts = (Options().wait_for_send(False).send_timeout(timedelta(seconds=self.dvm_config.RELAY_LONG_TIMEOUT)))
|
try:
|
||||||
sk = SecretKey.from_hex(self.dvm_config.PRIVATE_KEY)
|
opts = (Options().wait_for_send(False).send_timeout(timedelta(seconds=self.dvm_config.RELAY_LONG_TIMEOUT)))
|
||||||
keys = Keys.parse(sk.to_hex())
|
sk = SecretKey.from_hex(self.dvm_config.PRIVATE_KEY)
|
||||||
signer = NostrSigner.keys(keys)
|
keys = Keys.parse(sk.to_hex())
|
||||||
database = await NostrDatabase.sqlite(self.db_name)
|
signer = NostrSigner.keys(keys)
|
||||||
cli = ClientBuilder().signer(signer).database(database).opts(opts).build()
|
database = await NostrDatabase.sqlite(self.db_name)
|
||||||
|
cli = ClientBuilder().signer(signer).database(database).opts(opts).build()
|
||||||
|
|
||||||
for relay in self.dvm_config.RECONCILE_DB_RELAY_LIST:
|
for relay in self.dvm_config.RECONCILE_DB_RELAY_LIST:
|
||||||
await cli.add_relay(relay)
|
await cli.add_relay(relay)
|
||||||
|
|
||||||
await cli.connect()
|
await cli.connect()
|
||||||
|
|
||||||
timestamp_since = Timestamp.now().as_secs() - self.db_since
|
timestamp_since = Timestamp.now().as_secs() - self.db_since
|
||||||
since = Timestamp.from_secs(timestamp_since)
|
since = Timestamp.from_secs(timestamp_since)
|
||||||
|
|
||||||
filter1 = Filter().kinds([definitions.EventDefinitions.KIND_NOTE, definitions.EventDefinitions.KIND_REACTION,
|
filter1 = Filter().kinds([definitions.EventDefinitions.KIND_NOTE, definitions.EventDefinitions.KIND_REACTION,
|
||||||
definitions.EventDefinitions.KIND_ZAP]).since(since) # Notes, reactions, zaps
|
definitions.EventDefinitions.KIND_ZAP]).since(since) # Notes, reactions, zaps
|
||||||
|
|
||||||
# filter = Filter().author(keys.public_key())
|
|
||||||
if self.dvm_config.LOGLEVEL.value >= LogLevel.DEBUG.value:
|
|
||||||
print("[" + self.dvm_config.NIP89.NAME + "] Syncing notes of the last " + str(
|
|
||||||
self.db_since) + " seconds.. this might take a while..")
|
|
||||||
dbopts = NegentropyOptions().direction(NegentropyDirection.DOWN)
|
|
||||||
await cli.reconcile(filter1, dbopts)
|
|
||||||
await cli.database().delete(Filter().until(Timestamp.from_secs(
|
|
||||||
Timestamp.now().as_secs() - self.db_since))) # Clear old events so db doesn't get too full.
|
|
||||||
await cli.shutdown()
|
|
||||||
if self.dvm_config.LOGLEVEL.value >= LogLevel.DEBUG.value:
|
|
||||||
print(
|
|
||||||
"[" + self.dvm_config.NIP89.NAME + "] Done Syncing Notes of the last " + str(self.db_since) + " seconds..")
|
|
||||||
|
|
||||||
|
# filter = Filter().author(keys.public_key())
|
||||||
|
if self.dvm_config.LOGLEVEL.value >= LogLevel.DEBUG.value:
|
||||||
|
print("[" + self.dvm_config.NIP89.NAME + "] Syncing notes of the last " + str(
|
||||||
|
self.db_since) + " seconds.. this might take a while..")
|
||||||
|
dbopts = NegentropyOptions().direction(NegentropyDirection.DOWN)
|
||||||
|
await cli.reconcile(filter1, dbopts)
|
||||||
|
await cli.database().delete(Filter().until(Timestamp.from_secs(
|
||||||
|
Timestamp.now().as_secs() - self.db_since))) # Clear old events so db doesn't get too full.
|
||||||
|
await cli.shutdown()
|
||||||
|
if self.dvm_config.LOGLEVEL.value >= LogLevel.DEBUG.value:
|
||||||
|
print(
|
||||||
|
"[" + self.dvm_config.NIP89.NAME + "] Done Syncing Notes of the last " + str(self.db_since) + " seconds..")
|
||||||
|
except Exception as e:
|
||||||
|
print(e)
|
||||||
|
|
||||||
# We build an example here that we can call by either calling this file directly from the main directory,
|
# We build an example here that we can call by either calling this file directly from the main directory,
|
||||||
# or by adding it to our playground. You can call the example and adjust it to your needs or redefine it in the
|
# or by adding it to our playground. You can call the example and adjust it to your needs or redefine it in the
|
||||||
|
@ -188,37 +188,39 @@ class DicoverContentCurrentlyPopularbyTopic(DVMTaskInterface):
|
|||||||
return 1
|
return 1
|
||||||
|
|
||||||
async def sync_db(self):
|
async def sync_db(self):
|
||||||
opts = (Options().wait_for_send(False).send_timeout(timedelta(seconds=self.dvm_config.RELAY_LONG_TIMEOUT)))
|
try:
|
||||||
sk = SecretKey.from_hex(self.dvm_config.PRIVATE_KEY)
|
opts = (Options().wait_for_send(False).send_timeout(timedelta(seconds=self.dvm_config.RELAY_LONG_TIMEOUT)))
|
||||||
keys = Keys.parse(sk.to_hex())
|
sk = SecretKey.from_hex(self.dvm_config.PRIVATE_KEY)
|
||||||
signer = NostrSigner.keys(keys)
|
keys = Keys.parse(sk.to_hex())
|
||||||
database = await NostrDatabase.sqlite(self.db_name)
|
signer = NostrSigner.keys(keys)
|
||||||
cli = ClientBuilder().signer(signer).database(database).opts(opts).build()
|
database = await NostrDatabase.sqlite(self.db_name)
|
||||||
|
cli = ClientBuilder().signer(signer).database(database).opts(opts).build()
|
||||||
|
|
||||||
for relay in self.dvm_config.RECONCILE_DB_RELAY_LIST:
|
for relay in self.dvm_config.RECONCILE_DB_RELAY_LIST:
|
||||||
await cli.add_relay(relay)
|
await cli.add_relay(relay)
|
||||||
|
|
||||||
await cli.connect()
|
await cli.connect()
|
||||||
|
|
||||||
timestamp_since = Timestamp.now().as_secs() - self.db_since
|
timestamp_since = Timestamp.now().as_secs() - self.db_since
|
||||||
since = Timestamp.from_secs(timestamp_since)
|
since = Timestamp.from_secs(timestamp_since)
|
||||||
|
|
||||||
filter1 = Filter().kinds([definitions.EventDefinitions.KIND_NOTE, definitions.EventDefinitions.KIND_REACTION,
|
filter1 = Filter().kinds([definitions.EventDefinitions.KIND_NOTE, definitions.EventDefinitions.KIND_REACTION,
|
||||||
definitions.EventDefinitions.KIND_ZAP]).since(since) # Notes, reactions, zaps
|
definitions.EventDefinitions.KIND_ZAP]).since(since) # Notes, reactions, zaps
|
||||||
|
|
||||||
# filter = Filter().author(keys.public_key())
|
# filter = Filter().author(keys.public_key())
|
||||||
if self.dvm_config.LOGLEVEL.value >= LogLevel.DEBUG.value:
|
if self.dvm_config.LOGLEVEL.value >= LogLevel.DEBUG.value:
|
||||||
print("[" + self.dvm_config.NIP89.NAME + "] Syncing notes of the last " + str(
|
print("[" + self.dvm_config.NIP89.NAME + "] Syncing notes of the last " + str(
|
||||||
self.db_since) + " seconds.. this might take a while..")
|
self.db_since) + " seconds.. this might take a while..")
|
||||||
dbopts = NegentropyOptions().direction(NegentropyDirection.DOWN)
|
dbopts = NegentropyOptions().direction(NegentropyDirection.DOWN)
|
||||||
await cli.reconcile(filter1, dbopts)
|
await cli.reconcile(filter1, dbopts)
|
||||||
await cli.database().delete(Filter().until(Timestamp.from_secs(
|
await cli.database().delete(Filter().until(Timestamp.from_secs(
|
||||||
Timestamp.now().as_secs() - self.db_since))) # Clear old events so db doesn't get too full.
|
Timestamp.now().as_secs() - self.db_since))) # Clear old events so db doesn't get too full.
|
||||||
await cli.shutdown()
|
await cli.shutdown()
|
||||||
if self.dvm_config.LOGLEVEL.value >= LogLevel.DEBUG.value:
|
if self.dvm_config.LOGLEVEL.value >= LogLevel.DEBUG.value:
|
||||||
print(
|
print("[" + self.dvm_config.NIP89.NAME + "] Done Syncing Notes of the last " + str(self.db_since) + " seconds..")
|
||||||
"[" + self.dvm_config.NIP89.NAME + "] Done Syncing Notes of the last " + str(self.db_since) + " seconds..")
|
|
||||||
|
|
||||||
|
except Exception as e:
|
||||||
|
print(e)
|
||||||
|
|
||||||
# We build an example here that we can call by either calling this file directly from the main directory,
|
# We build an example here that we can call by either calling this file directly from the main directory,
|
||||||
# or by adding it to our playground. You can call the example and adjust it to your needs or redefine it in the
|
# or by adding it to our playground. You can call the example and adjust it to your needs or redefine it in the
|
||||||
|
2
setup.py
2
setup.py
@ -1,6 +1,6 @@
|
|||||||
from setuptools import setup, find_packages
|
from setuptools import setup, find_packages
|
||||||
|
|
||||||
VERSION = '0.8.6'
|
VERSION = '0.8.7'
|
||||||
DESCRIPTION = 'A framework to build and run Nostr NIP90 Data Vending Machines'
|
DESCRIPTION = 'A framework to build and run Nostr NIP90 Data Vending Machines'
|
||||||
LONG_DESCRIPTION = ('A framework to build and run Nostr NIP90 Data Vending Machines. See the github repository for more information')
|
LONG_DESCRIPTION = ('A framework to build and run Nostr NIP90 Data Vending Machines. See the github repository for more information')
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user