little refactor in wos bump

This commit is contained in:
Believethehype 2024-11-13 16:06:53 +01:00
parent 6ed2877ec7
commit 148a22efe2
26 changed files with 95 additions and 87 deletions

View File

@ -176,7 +176,7 @@ class Subscription:
# TODO add details about DVM in message
invoice = zaprequest(lud16, splitted_amount, tier, None,
PublicKey.parse(zap[1]), self.keys, DVMConfig.RELAY_LIST)
PublicKey.parse(zap[1]), self.keys, self.dvm_config.RELAY_LIST)
print(invoice)
if invoice is not None:
nwc_event_id = await nwc_zap(nwc, invoice, self.keys, zap[2])

View File

@ -177,7 +177,7 @@ class DicoverContentLatestLongForm(DVMTaskInterface):
database = NostrDatabase.lmdb(self.db_name)
cli = ClientBuilder().signer(keys).database(database).opts(opts).build()
for relay in self.dvm_config.RECONCILE_DB_RELAY_LIST:
for relay in self.dvm_config.SYNC_DB_RELAY_LIST:
await cli.add_relay(relay)
await cli.connect()

View File

@ -177,7 +177,7 @@ class DicoverContentLatestWiki(DVMTaskInterface):
database = NostrDatabase.lmdb(self.db_name)
cli = ClientBuilder().signer(keys).database(database).opts(opts).build()
for relay in self.dvm_config.RECONCILE_DB_RELAY_LIST:
for relay in self.dvm_config.SYNC_DB_RELAY_LIST:
await cli.add_relay(relay)
await cli.connect()

View File

@ -174,7 +174,7 @@ class DicoverContentCurrentlyPopular(DVMTaskInterface):
database = NostrDatabase.lmdb(self.db_name)
cli = ClientBuilder().signer(keys).database(database).build()
for relay in self.dvm_config.RECONCILE_DB_RELAY_LIST:
for relay in self.dvm_config.SYNC_DB_RELAY_LIST:
await cli.add_relay(relay)
await cli.connect()

View File

@ -218,7 +218,7 @@ class DicoverContentCurrentlyPopularZaps(DVMTaskInterface):
database = NostrDatabase.lmdb(self.db_name)
cli = ClientBuilder().signer(keys).database(database).build()
for relay in self.dvm_config.RECONCILE_DB_RELAY_LIST:
for relay in self.dvm_config.SYNC_DB_RELAY_LIST:
await cli.add_relay(relay)
await cli.connect()

View File

@ -99,7 +99,7 @@ class DicoverContentCurrentlyPopularFollowers(DVMTaskInterface):
database = NostrDatabase.lmdb(self.db_name)
cli = ClientBuilder().database(database).signer(keys).opts(opts).build()
for relay in self.dvm_config.RECONCILE_DB_RELAY_LIST:
for relay in self.dvm_config.SYNC_DB_RELAY_LIST:
await cli.add_relay(relay)
# ropts = RelayOptions().ping(False)
@ -194,7 +194,7 @@ class DicoverContentCurrentlyPopularFollowers(DVMTaskInterface):
database = NostrDatabase.lmdb(self.db_name)
cli = ClientBuilder().signer(keys).database(database).build()
for relay in self.dvm_config.RECONCILE_DB_RELAY_LIST:
for relay in self.dvm_config.SYNC_DB_RELAY_LIST:
await cli.add_relay(relay)
await cli.connect()

View File

@ -154,7 +154,7 @@ class DicoverContentCurrentlyPopularGallery(DVMTaskInterface):
for relay in relays:
await cli.add_relay(relay)
for relay in self.dvm_config.RECONCILE_DB_RELAY_LIST:
for relay in self.dvm_config.SYNC_DB_RELAY_LIST:
await cli.add_relay(relay)
await cli.connect()
@ -243,7 +243,7 @@ class DicoverContentCurrentlyPopularGallery(DVMTaskInterface):
database = NostrDatabase.lmdb(self.db_name)
cli = ClientBuilder().signer(keys).database(database).build()
for relay in self.dvm_config.RECONCILE_DB_RELAY_LIST:
for relay in self.dvm_config.SYNC_DB_RELAY_LIST:
await cli.add_relay(relay)
await cli.connect()

View File

@ -187,7 +187,7 @@ class DicoverContentCurrentlyPopularMostr(DVMTaskInterface):
database = NostrDatabase.lmdb(self.db_name)
cli = ClientBuilder().signer(keys).database(database).build()
for relay in self.dvm_config.RECONCILE_DB_RELAY_LIST:
for relay in self.dvm_config.SYNC_DB_RELAY_LIST:
await cli.add_relay(relay)
await cli.connect()
@ -240,7 +240,7 @@ def build_example(name, identifier, admin_config, options, cost=0, update_rate=1
dvm_config.SHOWLOG = True
dvm_config.SCHEDULE_UPDATES_SECONDS = update_rate # Every 10 minutes
dvm_config.UPDATE_DATABASE = update_db
dvm_config.RECONCILE_DB_RELAY_LIST = ["wss://relay.momostr.pink", "wss://relay.mostr.pub/"]
dvm_config.SYNC_DB_RELAY_LIST = ["wss://relay.momostr.pink", "wss://relay.mostr.pub/"]
# Activate these to use a subscription based model instead
# dvm_config.SUBSCRIPTION_REQUIRED = True
# dvm_config.SUBSCRIPTION_DAILY_COST = 1
@ -286,7 +286,7 @@ def build_example_subscription(name, identifier, admin_config, options, update_r
dvm_config = build_default_config(identifier)
dvm_config.USE_OWN_VENV = False
dvm_config.SHOWLOG = True
dvm_config.RECONCILE_DB_RELAY_LIST = ["wss://relay.momostr.pink", "wss://relay.mostr.pub/"]
dvm_config.SYNC_DB_RELAY_LIST = ["wss://relay.momostr.pink", "wss://relay.mostr.pub/"]
dvm_config.SCHEDULE_UPDATES_SECONDS = update_rate # Every 3 minutes
dvm_config.UPDATE_DATABASE = update_db
# Activate these to use a subscription based model instead

View File

@ -148,7 +148,7 @@ class DicoverContentCurrentlyPopularNonFollowers(DVMTaskInterface):
self.database = NostrDatabase.lmdb(self.db_name)
cli = ClientBuilder().database(self.database).signer(keys).opts(opts).build()
for relay in self.dvm_config.RECONCILE_DB_RELAY_LIST:
for relay in self.dvm_config.SYNC_DB_RELAY_LIST:
await cli.add_relay(relay)
# ropts = RelayOptions().ping(False)
@ -230,7 +230,7 @@ class DicoverContentCurrentlyPopularNonFollowers(DVMTaskInterface):
database = NostrDatabase.lmdb(self.db_name)
cli = ClientBuilder().signer(keys).database(database).build()
for relay in self.dvm_config.RECONCILE_DB_RELAY_LIST:
for relay in self.dvm_config.SYNC_DB_RELAY_LIST:
await cli.add_relay(relay)
await cli.connect()

View File

@ -207,7 +207,7 @@ class DicoverContentCurrentlyPopularbyTopic(DVMTaskInterface):
database = NostrDatabase.lmdb(self.db_name)
cli = ClientBuilder().signer(keys).database(database).build()
for relay in self.dvm_config.RECONCILE_DB_RELAY_LIST:
for relay in self.dvm_config.SYNC_DB_RELAY_LIST:
await cli.add_relay(relay)
await cli.connect()

View File

@ -139,7 +139,7 @@ class DicoverContentDBUpdateScheduler(DVMTaskInterface):
cli = ClientBuilder().signer(keys).database(self.database).opts(opts).build()
for relay in self.dvm_config.RECONCILE_DB_RELAY_LIST:
for relay in self.dvm_config.SYNC_DB_RELAY_LIST:
await cli.add_relay(relay)
await cli.connect()
@ -149,7 +149,7 @@ class DicoverContentDBUpdateScheduler(DVMTaskInterface):
filtering = cli.filtering()
index_map, G = await build_wot_network(self.dvm_config.WOT_BASED_ON_NPUBS,
depth=self.dvm_config.WOT_DEPTH, max_batch=500,
max_time_request=10)
max_time_request=10, dvm_config=self.dvm_config)
# Do we actually need pagerank here?
# print('computing global pagerank...')

View File

@ -134,7 +134,7 @@ class DiscoverPeopleMyWOT(DVMTaskInterface):
user_id = PublicKey.parse(options["user"]).to_hex()
index_map, G = await build_wot_network(options["user"], depth=int(options["hops"]), max_batch=500,
max_time_request=10)
max_time_request=10, dvm_config=self.dvm_config)
if use_files:
save_network(index_map, G, options["user"])
@ -207,7 +207,7 @@ class DiscoverPeopleMyWOT(DVMTaskInterface):
database = NostrDatabase.lmdb(self.db_name)
cli = ClientBuilder().signer(keys).database(database).build()
for relay in self.dvm_config.RECONCILE_DB_RELAY_LIST:
for relay in self.dvm_config.SYNC_DB_RELAY_LIST:
await cli.add_relay(relay)
await cli.connect()

View File

@ -212,7 +212,7 @@ class DiscoverPeopleWOT(DVMTaskInterface):
database = NostrDatabase.lmdb(self.db_name)
cli = ClientBuilder().signer(keys).database(database).build()
for relay in self.dvm_config.RECONCILE_DB_RELAY_LIST:
for relay in self.dvm_config.SYNC_DB_RELAY_LIST:
await cli.add_relay(relay)
await cli.connect()

View File

@ -95,7 +95,7 @@ async def admin_make_database_updates(adminconfig: AdminConfig = None, dvmconfig
nut_wallet = await nutzap_wallet.get_nut_wallet(client, keys)
lud16 = adminconfig.LUD16
npub = keys.public_key().to_hex()
await nutzap_wallet.melt_cashu(nut_wallet, DVMConfig.NUZAP_MINTS[0], nut_wallet.balance, client, keys, lud16,
await nutzap_wallet.melt_cashu(nut_wallet, dvmconfig.NUZAP_MINTS[0], nut_wallet.balance, client, keys, lud16,
npub)
await nutzap_wallet.get_nut_wallet(client, keys)

View File

@ -2,10 +2,10 @@ import os
from nostr_sdk import Keys, LogLevel
from nostr_dvm.utils import outbox_utils
from nostr_dvm.utils.nip88_utils import NIP88Config
from nostr_dvm.utils.nip89_utils import NIP89Config
from nostr_dvm.utils.nostr_utils import check_and_set_private_key
from nostr_dvm.utils.outbox_utils import AVOID_OUTBOX_RELAY_LIST
from nostr_dvm.utils.zap_utils import check_and_set_ln_bits_keys
@ -21,8 +21,10 @@ class DVMConfig:
"wss://relay.nostr.net"
]
RECONCILE_DB_RELAY_LIST = ["wss://relay.damus.io", "wss://nostr.oxtr.dev",
"wss://relay.nostr.net", "wss://relay.primal.net"]
SYNC_DB_RELAY_LIST = ["wss://relay.damus.io", "wss://nostr.oxtr.dev",
"wss://relay.nostr.net",
"wss://relay.primal.net"
]
# Straight Censorship (reply guy spam)
WOT_FILTERING = False
@ -32,7 +34,7 @@ class DVMConfig:
]
WOT_DEPTH = 2
AVOID_PAID_OUTBOX_RELAY_LIST = AVOID_OUTBOX_RELAY_LIST
AVOID_OUTBOX_RELAY_LIST = outbox_utils.AVOID_OUTBOX_RELAY_LIST
# If a DVM has a paid subscription, overwrite list without the paid one.
RELAY_TIMEOUT = 5

View File

@ -124,7 +124,7 @@ async def get_inbox_relays(event_to_send: Event, client: Client, dvm_config):
if ((tag.as_vec()[0] == 'r' and len(tag.as_vec()) == 2)
or ((tag.as_vec()[0] == 'r' and len(tag.as_vec()) == 3) and tag.as_vec()[2] == "read")):
rtag = tag.as_vec()[1]
if rtag.rstrip("/") not in dvm_config.AVOID_PAID_OUTBOX_RELAY_LIST:
if rtag.rstrip("/") not in dvm_config.AVOID_OUTBOX_RELAY_LIST:
if rtag.startswith("ws") and " " not in rtag:
relays.append(rtag)
return relays
@ -148,7 +148,7 @@ async def get_dm_relays(event_to_send: Event, client: Client, dvm_config):
if ((tag.as_vec()[0] == 'r' and len(tag.as_vec()) == 2)
or ((tag.as_vec()[0] == 'r' and len(tag.as_vec()) == 3) and tag.as_vec()[2] == "read")):
rtag = tag.as_vec()[1]
if rtag.rstrip("/") not in dvm_config.AVOID_PAID_OUTBOX_RELAY_LIST:
if rtag.rstrip("/") not in dvm_config.AVOID_OUTBOX_RELAY_LIST:
if rtag.startswith("ws") and " " not in rtag:
relays.append(rtag)
return relays
@ -190,7 +190,7 @@ async def send_event_outbox(event: Event, client, dvm_config) -> EventId:
if tag.as_vec()[0] == 'relays':
for index, param in enumerate(tag.as_vec()):
if index != 0:
if tag.as_vec()[index].rstrip("/") not in dvm_config.AVOID_PAID_OUTBOX_RELAY_LIST:
if tag.as_vec()[index].rstrip("/") not in dvm_config.AVOID_OUTBOX_RELAY_LIST:
try:
relays.append(tag.as_vec()[index])
except:
@ -214,9 +214,7 @@ async def send_event_outbox(event: Event, client, dvm_config) -> EventId:
relaylimits = RelayLimits.disable()
connection = Connection().embedded_tor().target(ConnectionTarget.ONION)
# connection = Connection().addr("127.0.0.1:9050").target(ConnectionTarget.ONION)
opts = ((
Options().relay_limits(relaylimits)).connection(connection).connection_timeout(timedelta(seconds=30)))
opts = Options().relay_limits(relaylimits).connection(connection).connection_timeout(timedelta(seconds=30))
sk = SecretKey.from_hex(dvm_config.PRIVATE_KEY)
keys = Keys.parse(sk.to_hex())
outboxclient = Client.with_opts(keys, opts)
@ -261,6 +259,7 @@ async def send_event_outbox(event: Event, client, dvm_config) -> EventId:
event_id = None
print(e)
await outboxclient.disconnect()
await outboxclient.shutdown()
return event_id
@ -272,7 +271,7 @@ async def send_event(event: Event, client: Client, dvm_config):
if tag.as_vec()[0] == 'relays':
for index, param in enumerate(tag.as_vec()):
if index != 0:
if tag.as_vec()[index].rstrip("/") not in dvm_config.AVOID_PAID_OUTBOX_RELAY_LIST:
if tag.as_vec()[index].rstrip("/") not in dvm_config.AVOID_OUTBOX_RELAY_LIST:
try:
relays.append(tag.as_vec()[index])
except:
@ -280,6 +279,9 @@ async def send_event(event: Event, client: Client, dvm_config):
index] + " couldn't be added to outbox relays")
break
if len(relays) == 0:
relays = dvm_config.RELAY_LIST
for relay in relays:
if relay not in dvm_config.RELAY_LIST:
await client.add_relay(relay)
@ -292,8 +294,7 @@ async def send_event(event: Event, client: Client, dvm_config):
for relay in relays:
if relay not in dvm_config.RELAY_LIST:
if relay not in dvm_config.RELAY_LIST:
await client.remove_relay(relay)
await client.force_remove_relay(relay)
return event_id
except Exception as e:
print(e)

View File

@ -1,6 +1,6 @@
from setuptools import setup, find_packages
VERSION = '0.9.10'
VERSION = '0.9.11'
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')

View File

@ -38,12 +38,16 @@ update_profile = False
global_update_rate = 180 # set this high on first sync so db can fully sync before another process trys to.
use_logger = True
log_level = LogLevel.ERROR
max_sync_duration_in_h = 6
RECONCILE_DB_RELAY_LIST = [ "wss://relay.damus.io", "wss://relay.primal.net", "wss://nostr.oxtr.dev"]
SYNC_DB_RELAY_LIST = [ "wss://relay.damus.io",
#"wss://relay.primal.net",
"wss://nostr.oxtr.dev"]
RELAY_LIST = ["wss://relay.primal.net",
"wss://nostr.mom", "wss://nostr.oxtr.dev",
RELAY_LIST = [#"wss://relay.primal.net",
"wss://nostr.mom",
"wss://nostr.oxtr.dev",
"wss://relay.nostr.net"
]
@ -59,7 +63,7 @@ def build_db_scheduler(name, identifier, admin_config, options, image, descripti
dvm_config.SCHEDULE_UPDATES_SECONDS = update_rate # Every 10 minutes
dvm_config.UPDATE_DATABASE = update_db
dvm_config.LOGLEVEL = LogLevel.INFO
dvm_config.RECONCILE_DB_RELAY_LIST = RECONCILE_DB_RELAY_LIST
dvm_config.SYNC_DB_RELAY_LIST = SYNC_DB_RELAY_LIST
dvm_config.RELAY_LIST = RELAY_LIST
dvm_config.DATABASE = database
dvm_config.WOT_FILTERING = True
@ -107,7 +111,7 @@ def build_example_gallery(name, identifier, admin_config, options, image, cost=0
# dvm_config.SHOWLOG = True
dvm_config.SCHEDULE_UPDATES_SECONDS = update_rate # Every 10 minutes
dvm_config.UPDATE_DATABASE = update_db
dvm_config.RECONCILE_DB_RELAY_LIST = RECONCILE_DB_RELAY_LIST
dvm_config.SYNC_DB_RELAY_LIST = SYNC_DB_RELAY_LIST
dvm_config.RELAY_LIST = RELAY_LIST
dvm_config.FIX_COST = cost
dvm_config.CUSTOM_PROCESSING_MESSAGE = processing_msg
@ -145,8 +149,8 @@ def build_example_nostrband(name, identifier, admin_config, image, about, custom
dvm_config: DVMConfig = build_default_config(identifier)
dvm_config.USE_OWN_VENV = False
dvm_config.CUSTOM_PROCESSING_MESSAGE = custom_processing_msg
dvm_config.AVOID_PAID_OUTBOX_RELAY_LIST = AVOID_OUTBOX_RELAY_LIST
dvm_config.RECONCILE_DB_RELAY_LIST = RECONCILE_DB_RELAY_LIST
dvm_config.AVOID_OUTBOX_RELAY_LIST = AVOID_OUTBOX_RELAY_LIST
dvm_config.SYNC_DB_RELAY_LIST = SYNC_DB_RELAY_LIST
dvm_config.RELAY_LIST = RELAY_LIST
dvm_config.LOGLEVEL = LogLevel.INFO
admin_config.LUD16 = dvm_config.LN_ADDRESS
@ -177,8 +181,8 @@ def build_longform(name, identifier, admin_config, options, cost=0, update_rate=
dvm_config.SHOWLOG = True
dvm_config.SCHEDULE_UPDATES_SECONDS = update_rate # Every 10 minutes
dvm_config.UPDATE_DATABASE = update_db
dvm_config.AVOID_PAID_OUTBOX_RELAY_LIST = AVOID_OUTBOX_RELAY_LIST
dvm_config.RECONCILE_DB_RELAY_LIST = RECONCILE_DB_RELAY_LIST
dvm_config.AVOID_OUTBOX_RELAY_LIST = AVOID_OUTBOX_RELAY_LIST
dvm_config.SYNC_DB_RELAY_LIST = SYNC_DB_RELAY_LIST
dvm_config.RELAY_LIST = RELAY_LIST
dvm_config.LOGLEVEL = LogLevel.INFO
# Activate these to use a subscription based model instead
@ -229,8 +233,8 @@ def build_wiki(name, identifier, admin_config, options, cost=0, update_rate=180,
dvm_config.SHOWLOG = True
dvm_config.SCHEDULE_UPDATES_SECONDS = update_rate # Every 10 minutes
dvm_config.UPDATE_DATABASE = update_db
dvm_config.AVOID_PAID_OUTBOX_RELAY_LIST = AVOID_OUTBOX_RELAY_LIST
dvm_config.RECONCILE_DB_RELAY_LIST = RECONCILE_DB_RELAY_LIST
dvm_config.AVOID_OUTBOX_RELAY_LIST = AVOID_OUTBOX_RELAY_LIST
dvm_config.SYNC_DB_RELAY_LIST = SYNC_DB_RELAY_LIST
dvm_config.RELAY_LIST = RELAY_LIST
dvm_config.LOGLEVEL = LogLevel.INFO
# Activate these to use a subscription based model instead
@ -284,8 +288,8 @@ def build_example_topic(name, identifier, admin_config, options, image, descript
dvm_config.FIX_COST = cost
dvm_config.LOGLEVEL = LogLevel.INFO
dvm_config.CUSTOM_PROCESSING_MESSAGE = processing_msg
dvm_config.AVOID_PAID_OUTBOX_RELAY_LIST = AVOID_OUTBOX_RELAY_LIST
dvm_config.RECONCILE_DB_RELAY_LIST = RECONCILE_DB_RELAY_LIST
dvm_config.AVOID_OUTBOX_RELAY_LIST = AVOID_OUTBOX_RELAY_LIST
dvm_config.SYNC_DB_RELAY_LIST = SYNC_DB_RELAY_LIST
dvm_config.RELAY_LIST = RELAY_LIST
dvm_config.DATABASE = database
admin_config.LUD16 = dvm_config.LN_ADDRESS
@ -326,8 +330,8 @@ def build_example_popular(name, identifier, admin_config, options, image, cost=0
dvm_config.UPDATE_DATABASE = update_db
dvm_config.FIX_COST = cost
dvm_config.CUSTOM_PROCESSING_MESSAGE = processing_msg
dvm_config.AVOID_PAID_OUTBOX_RELAY_LIST = AVOID_OUTBOX_RELAY_LIST
dvm_config.RECONCILE_DB_RELAY_LIST = RECONCILE_DB_RELAY_LIST
dvm_config.AVOID_OUTBOX_RELAY_LIST = AVOID_OUTBOX_RELAY_LIST
dvm_config.SYNC_DB_RELAY_LIST = SYNC_DB_RELAY_LIST
dvm_config.RELAY_LIST = RELAY_LIST
dvm_config.DATABASE = database
admin_config.LUD16 = dvm_config.LN_ADDRESS
@ -369,8 +373,8 @@ def build_example_popular_followers(name, identifier, admin_config, options, ima
dvm_config.UPDATE_DATABASE = update_db
dvm_config.FIX_COST = cost
dvm_config.CUSTOM_PROCESSING_MESSAGE = processing_msg
dvm_config.AVOID_PAID_OUTBOX_RELAY_LIST = AVOID_OUTBOX_RELAY_LIST
dvm_config.RECONCILE_DB_RELAY_LIST = RECONCILE_DB_RELAY_LIST
dvm_config.AVOID_OUTBOX_RELAY_LIST = AVOID_OUTBOX_RELAY_LIST
dvm_config.SYNC_DB_RELAY_LIST = SYNC_DB_RELAY_LIST
dvm_config.RELAY_LIST = RELAY_LIST
admin_config.LUD16 = dvm_config.LN_ADDRESS
@ -416,8 +420,8 @@ def build_example_popular_non_followers(name, identifier, admin_config, options,
# Activate these to use a subscription based model instead
dvm_config.FIX_COST = 10
dvm_config.CUSTOM_PROCESSING_MESSAGE = processing_msg
dvm_config.AVOID_PAID_OUTBOX_RELAY_LIST = AVOID_OUTBOX_RELAY_LIST
dvm_config.RECONCILE_DB_RELAY_LIST = RECONCILE_DB_RELAY_LIST
dvm_config.AVOID_OUTBOX_RELAY_LIST = AVOID_OUTBOX_RELAY_LIST
dvm_config.SYNC_DB_RELAY_LIST = SYNC_DB_RELAY_LIST
dvm_config.RELAY_LIST = RELAY_LIST
dvm_config.SUBSCRIPTION_REQUIRED = False
admin_config.LUD16 = dvm_config.LN_ADDRESS
@ -484,8 +488,8 @@ def build_example_top_zapped(name, identifier, admin_config, options, image, cos
dvm_config.UPDATE_DATABASE = update_db
dvm_config.FIX_COST = cost
dvm_config.CUSTOM_PROCESSING_MESSAGE = processing_msg
dvm_config.AVOID_PAID_OUTBOX_RELAY_LIST = AVOID_OUTBOX_RELAY_LIST
dvm_config.RECONCILE_DB_RELAY_LIST = RECONCILE_DB_RELAY_LIST
dvm_config.AVOID_OUTBOX_RELAY_LIST = AVOID_OUTBOX_RELAY_LIST
dvm_config.SYNC_DB_RELAY_LIST = SYNC_DB_RELAY_LIST
dvm_config.RELAY_LIST = RELAY_LIST
dvm_config.DATABASE = database
admin_config.LUD16 = dvm_config.LN_ADDRESS
@ -530,9 +534,9 @@ def build_example_mostr(name, identifier, admin_config, options, image, cost=0,
# dvm_config.SHOWLOG = True
dvm_config.SCHEDULE_UPDATES_SECONDS = update_rate # Every 10 minutes
dvm_config.UPDATE_DATABASE = update_db
dvm_config.RECONCILE_DB_RELAY_LIST = RECONCILE_DB_RELAY_LIST
dvm_config.AVOID_OUTBOX_RELAY_LIST = AVOID_OUTBOX_RELAY_LIST
dvm_config.RELAY_LIST = RELAY_LIST
dvm_config.RECONCILE_DB_RELAY_LIST = ["wss://nfrelay.app/?user=activitypub"]
dvm_config.SYNC_DB_RELAY_LIST = ["wss://nfrelay.app/?user=activitypub"]
dvm_config.FIX_COST = cost
dvm_config.CUSTOM_PROCESSING_MESSAGE = processing_msg
@ -574,7 +578,8 @@ def build_example_oneperfollow(name, identifier, admin_config, options, image, c
dvm_config.SCHEDULE_UPDATES_SECONDS = update_rate # Every 10 minutes
dvm_config.UPDATE_DATABASE = False
dvm_config.FIX_COST = cost
dvm_config.RECONCILE_DB_RELAY_LIST = RECONCILE_DB_RELAY_LIST
dvm_config.AVOID_OUTBOX_RELAY_LIST = AVOID_OUTBOX_RELAY_LIST
dvm_config.SYNC_DB_RELAY_LIST = SYNC_DB_RELAY_LIST
dvm_config.RELAY_LIST = RELAY_LIST
dvm_config.CUSTOM_PROCESSING_MESSAGE = processing_msg
admin_config.LUD16 = dvm_config.LN_ADDRESS
@ -617,7 +622,7 @@ def playground():
admin_config_db_scheduler= AdminConfig()
options_animal = {
"db_name": main_db,
"db_since": 6 * 60 * 60, # 48h since gmt,
"db_since": max_sync_duration_in_h * 60 * 60, # 48h since gmt,
"personalized": False,
"logger": False}
image = ""
@ -1162,7 +1167,7 @@ def playground():
subscription_config.PRIVATE_KEY = check_and_set_private_key("dvm_subscription")
npub = Keys.parse(subscription_config.PRIVATE_KEY).public_key().to_bech32()
invoice_key, admin_key, wallet_id, lnaddress = check_and_set_ln_bits_keys("dvm_subscription", npub)
subscription_config.RECONCILE_DB_RELAY_LIST = RECONCILE_DB_RELAY_LIST
subscription_config.SYNC_DB_RELAY_LIST = SYNC_DB_RELAY_LIST
subscription_config.RELAY_LIST = RELAY_LIST
subscription_config.LNBITS_INVOICE_KEY = invoice_key
subscription_config.LNBITS_ADMIN_KEY = admin_key # The dvm might pay failed jobs back

View File

@ -17,13 +17,13 @@ update_profile = True
global_update_rate = 60 # set this high on first sync so db can fully sync before another process trys to.
use_logger = True
# these do not support nengentropy
#RECONCILE_DB_RELAY_LIST = ["wss://relay.momostr.pink", "wss://relay.mostr.pub/"] # , "wss://relay.snort.social"]
#SYNC_DB_RELAY_LIST = ["wss://relay.momostr.pink", "wss://relay.mostr.pub/"] # , "wss://relay.snort.social"]
if use_logger:
init_logger(LogLevel.ERROR)
RECONCILE_DB_RELAY_LIST = [ "wss://relay.nostr.net", "wss://relay.nostr.bg", "wss://relay.damus.io", "wss://nostr.oxtr.dev"]
SYNC_DB_RELAY_LIST = [ "wss://relay.nostr.net", "wss://relay.nostr.bg", "wss://relay.damus.io", "wss://nostr.oxtr.dev"]
RELAY_LIST = ["wss://relay.primal.net",
"wss://nostr.mom", "wss://nostr.oxtr.dev",
"wss://relay.nostr.net"
@ -39,7 +39,7 @@ def build_example_topic(name, identifier, admin_config, options, image, descript
dvm_config.FIX_COST = cost
dvm_config.LOGLEVEL = LogLevel.DEBUG
dvm_config.CUSTOM_PROCESSING_MESSAGE = processing_msg
dvm_config.AVOID_PAID_OUTBOX_RELAY_LIST = AVOID_OUTBOX_RELAY_LIST
dvm_config.AVOID_OUTBOX_RELAY_LIST = AVOID_OUTBOX_RELAY_LIST
dvm_config.RELAY_LIST = RELAY_LIST
admin_config.LUD16 = dvm_config.LN_ADDRESS

View File

@ -18,7 +18,7 @@ update_profile = False
global_update_rate = 60 # set this high on first sync so db can fully sync before another process trys to.
use_logger = True
# these do not support nengentropy
#RECONCILE_DB_RELAY_LIST = ["wss://relay.momostr.pink", "wss://relay.mostr.pub/"] # , "wss://relay.snort.social"]
#SYNC_DB_RELAY_LIST = ["wss://relay.momostr.pink", "wss://relay.mostr.pub/"] # , "wss://relay.snort.social"]
if use_logger:
init_logger(LogLevel.DEBUG)
@ -32,7 +32,7 @@ def build_example_mostr(name, identifier, admin_config, options, image, cost=0,
# dvm_config.SHOWLOG = True
dvm_config.SCHEDULE_UPDATES_SECONDS = update_rate # Every 10 minutes
dvm_config.UPDATE_DATABASE = update_db
dvm_config.RECONCILE_DB_RELAY_LIST = ["wss://nfrelay.app/?user=activitypub"]
dvm_config.SYNC_DB_RELAY_LIST = ["wss://nfrelay.app/?user=activitypub"]
dvm_config.LOGLEVEL = LogLevel.DEBUG
dvm_config.FIX_COST = cost
dvm_config.CUSTOM_PROCESSING_MESSAGE = processing_msg

View File

@ -17,7 +17,7 @@ update_profile = False
global_update_rate = 60 # set this high on first sync so db can fully sync before another process trys to.
use_logger = True
# these do not support nengentropy
#RECONCILE_DB_RELAY_LIST = ["wss://relay.momostr.pink", "wss://relay.mostr.pub/"] # , "wss://relay.snort.social"]
#SYNC_DB_RELAY_LIST = ["wss://relay.momostr.pink", "wss://relay.mostr.pub/"] # , "wss://relay.snort.social"]
if use_logger:
init_logger(LogLevel.ERROR)

View File

@ -19,7 +19,7 @@ global_update_rate = 1200 # set this high on first sync so db can fully sync
use_logger = True
#RECONCILE_DB_RELAY_LIST = ["wss://relay.damus.io"] # , "wss://relay.snort.social"]
#SYNC_DB_RELAY_LIST = ["wss://relay.damus.io"] # , "wss://relay.snort.social"]
if use_logger:
@ -36,7 +36,7 @@ def build_example_wot(name, identifier, admin_config, options, image, cost=0, up
# dvm_config.SHOWLOG = True
dvm_config.SCHEDULE_UPDATES_SECONDS = update_rate # Every 10 minutes
dvm_config.UPDATE_DATABASE = update_db
#dvm_config.RECONCILE_DB_RELAY_LIST = RECONCILE_DB_RELAY_LIST
#dvm_config.SYNC_DB_RELAY_LIST = SYNC_DB_RELAY_LIST
dvm_config.LOGLEVEL = LogLevel.DEBUG
dvm_config.FIX_COST = cost
dvm_config.CUSTOM_PROCESSING_MESSAGE = processing_msg

View File

@ -43,7 +43,7 @@ if use_logger:
RECONCILE_DB_RELAY_LIST = [ "wss://relay.nostr.net", "wss://relay.nostr.bg", "wss://relay.damus.io", "wss://nostr.oxtr.dev"]
SYNC_DB_RELAY_LIST = [ "wss://relay.nostr.net", "wss://relay.nostr.bg", "wss://relay.damus.io", "wss://nostr.oxtr.dev"]
RELAY_LIST = ["wss://relay.primal.net",
"wss://nostr.mom", "wss://nostr.oxtr.dev",
"wss://relay.nostr.net"
@ -59,7 +59,7 @@ def build_db_scheduler(name, identifier, admin_config, options, image, descripti
dvm_config.SCHEDULE_UPDATES_SECONDS = update_rate # Every 10 minutes
dvm_config.UPDATE_DATABASE = update_db
dvm_config.LOGLEVEL = LogLevel.INFO
dvm_config.RECONCILE_DB_RELAY_LIST = RECONCILE_DB_RELAY_LIST
dvm_config.SYNC_DB_RELAY_LIST = SYNC_DB_RELAY_LIST
dvm_config.RELAY_LIST = RELAY_LIST
# Activate these to use a subscription based model instead
@ -106,7 +106,7 @@ def build_example_gallery(name, identifier, admin_config, options, image, cost=0
dvm_config.SCHEDULE_UPDATES_SECONDS = update_rate # Every 10 minutes
dvm_config.UPDATE_DATABASE = update_db
dvm_config.LOGLEVEL = LogLevel.DEBUG
dvm_config.RECONCILE_DB_RELAY_LIST = RECONCILE_DB_RELAY_LIST
dvm_config.SYNC_DB_RELAY_LIST = SYNC_DB_RELAY_LIST
dvm_config.RELAY_LIST = RELAY_LIST
dvm_config.FIX_COST = cost
dvm_config.CUSTOM_PROCESSING_MESSAGE = processing_msg
@ -144,7 +144,7 @@ def build_example_nostrband(name, identifier, admin_config, image, about, custom
dvm_config: DVMConfig = build_default_config(identifier)
dvm_config.USE_OWN_VENV = False
dvm_config.CUSTOM_PROCESSING_MESSAGE = custom_processing_msg
dvm_config.AVOID_PAID_OUTBOX_RELAY_LIST = AVOID_OUTBOX_RELAY_LIST
dvm_config.AVOID_OUTBOX_RELAY_LIST = AVOID_OUTBOX_RELAY_LIST
dvm_config.RELAY_LIST = RELAY_LIST
dvm_config.LOGLEVEL = LogLevel.INFO
admin_config.LUD16 = dvm_config.LN_ADDRESS
@ -175,8 +175,8 @@ def build_longform(name, identifier, admin_config, options, cost=0, update_rate=
dvm_config.SHOWLOG = True
dvm_config.SCHEDULE_UPDATES_SECONDS = update_rate # Every 10 minutes
dvm_config.UPDATE_DATABASE = update_db
dvm_config.AVOID_PAID_OUTBOX_RELAY_LIST = AVOID_OUTBOX_RELAY_LIST
dvm_config.RECONCILE_DB_RELAY_LIST = RECONCILE_DB_RELAY_LIST
dvm_config.AVOID_OUTBOX_RELAY_LIST = AVOID_OUTBOX_RELAY_LIST
dvm_config.SYNC_DB_RELAY_LIST = SYNC_DB_RELAY_LIST
dvm_config.RELAY_LIST = RELAY_LIST
dvm_config.LOGLEVEL = LogLevel.INFO
# Activate these to use a subscription based model instead
@ -227,8 +227,8 @@ def build_wiki(name, identifier, admin_config, options, cost=0, update_rate=180,
dvm_config.SHOWLOG = True
dvm_config.SCHEDULE_UPDATES_SECONDS = update_rate # Every 10 minutes
dvm_config.UPDATE_DATABASE = update_db
dvm_config.AVOID_PAID_OUTBOX_RELAY_LIST = AVOID_OUTBOX_RELAY_LIST
dvm_config.RECONCILE_DB_RELAY_LIST = RECONCILE_DB_RELAY_LIST
dvm_config.AVOID_OUTBOX_RELAY_LIST = AVOID_OUTBOX_RELAY_LIST
dvm_config.SYNC_DB_RELAY_LIST = SYNC_DB_RELAY_LIST
dvm_config.RELAY_LIST = RELAY_LIST
dvm_config.LOGLEVEL = LogLevel.INFO
# Activate these to use a subscription based model instead
@ -282,7 +282,7 @@ def build_example_topic(name, identifier, admin_config, options, image, descript
dvm_config.FIX_COST = cost
dvm_config.LOGLEVEL = LogLevel.INFO
dvm_config.CUSTOM_PROCESSING_MESSAGE = processing_msg
dvm_config.AVOID_PAID_OUTBOX_RELAY_LIST = AVOID_OUTBOX_RELAY_LIST
dvm_config.AVOID_OUTBOX_RELAY_LIST = AVOID_OUTBOX_RELAY_LIST
dvm_config.RELAY_LIST = RELAY_LIST
admin_config.LUD16 = dvm_config.LN_ADDRESS
@ -324,7 +324,7 @@ def build_example_popular(name, identifier, admin_config, options, image, cost=0
dvm_config.UPDATE_DATABASE = update_db
dvm_config.FIX_COST = cost
dvm_config.CUSTOM_PROCESSING_MESSAGE = processing_msg
dvm_config.AVOID_PAID_OUTBOX_RELAY_LIST = AVOID_OUTBOX_RELAY_LIST
dvm_config.AVOID_OUTBOX_RELAY_LIST = AVOID_OUTBOX_RELAY_LIST
dvm_config.RELAY_LIST = RELAY_LIST
admin_config.LUD16 = dvm_config.LN_ADDRESS
@ -365,7 +365,7 @@ def build_example_popular_followers(name, identifier, admin_config, options, ima
dvm_config.UPDATE_DATABASE = update_db
dvm_config.FIX_COST = cost
dvm_config.CUSTOM_PROCESSING_MESSAGE = processing_msg
dvm_config.AVOID_PAID_OUTBOX_RELAY_LIST = AVOID_OUTBOX_RELAY_LIST
dvm_config.AVOID_OUTBOX_RELAY_LIST = AVOID_OUTBOX_RELAY_LIST
dvm_config.RELAY_LIST = RELAY_LIST
admin_config.LUD16 = dvm_config.LN_ADDRESS
@ -410,7 +410,7 @@ def build_example_popular_non_followers(name, identifier, admin_config, options,
# Activate these to use a subscription based model instead
dvm_config.FIX_COST = cost
dvm_config.CUSTOM_PROCESSING_MESSAGE = processing_msg
dvm_config.AVOID_PAID_OUTBOX_RELAY_LIST = AVOID_OUTBOX_RELAY_LIST
dvm_config.AVOID_OUTBOX_RELAY_LIST = AVOID_OUTBOX_RELAY_LIST
dvm_config.RELAY_LIST = RELAY_LIST
dvm_config.SUBSCRIPTION_REQUIRED = True
admin_config.LUD16 = dvm_config.LN_ADDRESS
@ -477,7 +477,7 @@ def build_example_top_zapped(name, identifier, admin_config, options, image, cos
dvm_config.UPDATE_DATABASE = update_db
dvm_config.FIX_COST = cost
dvm_config.CUSTOM_PROCESSING_MESSAGE = processing_msg
dvm_config.AVOID_PAID_OUTBOX_RELAY_LIST = AVOID_OUTBOX_RELAY_LIST
dvm_config.AVOID_OUTBOX_RELAY_LIST = AVOID_OUTBOX_RELAY_LIST
dvm_config.RELAY_LIST = RELAY_LIST
admin_config.LUD16 = dvm_config.LN_ADDRESS
@ -522,7 +522,7 @@ def build_example_mostr(name, identifier, admin_config, options, image, cost=0,
dvm_config.SCHEDULE_UPDATES_SECONDS = update_rate # Every 10 minutes
dvm_config.UPDATE_DATABASE = update_db
dvm_config.RELAY_LIST = RELAY_LIST
dvm_config.RECONCILE_DB_RELAY_LIST = ["wss://nfrelay.app/?user=activitypub"]
dvm_config.SYNC_DB_RELAY_LIST = ["wss://nfrelay.app/?user=activitypub"]
dvm_config.LOGLEVEL = LogLevel.DEBUG
dvm_config.FIX_COST = cost

View File

@ -145,7 +145,7 @@ def build_advanced_search_wine(name, identifier):
def build_user_search(name, identifier):
dvm_config = build_default_config(identifier)
dvm_config.RECONCILE_DB_RELAY_LIST = ["wss://relay.damus.io"]
dvm_config.SYNC_DB_RELAY_LIST = ["wss://relay.damus.io"]
npub = Keys.parse(dvm_config.PRIVATE_KEY).public_key().to_bech32()
dvm_config.RELAY_LIST = RELAY_LIST
invoice_key, admin_key, wallet_id, lnaddress = check_and_set_ln_bits_keys(identifier, npub)

View File

@ -29,7 +29,7 @@ async def getmetadata(npub):
keys = Keys.parse("nsec1zmzllu40a7mr7ztl78uwfwslnp0pn0pww868adl05x52d4la237s6m8qfj")
client = ClientBuilder().signer(keys).build()
await client.add_relay("wss://relay.damus.io")
await client.add_relay("wss://relay.primal.net")
#await client.add_relay("wss://relay.primal.net")
await client.add_relay("wss://purplepag.es")
await client.connect()

View File

@ -57,7 +57,7 @@ def run_dvm(identifier, announce):
# but if they do, you can select which ones should be used to sync to your local database.
# This example doesn't use reconciliation, but you might want to take a look at tasks/content_discovery_currently.popular.py for example.
dvm_config.RECONCILE_DB_RELAY_LIST = ["wss://relay.damus.io", "wss://nostr.oxtr.dev",
dvm_config.SYNC_DB_RELAY_LIST = ["wss://relay.damus.io", "wss://nostr.oxtr.dev",
"wss://relay.nostr.net", "wss://relay.primal.net"]
# related to that dvm_config.UPDATE_DATABASE can be used to signal if the dvm should update it's own database at all.
@ -84,7 +84,7 @@ def run_dvm(identifier, announce):
# The reason is, some relays might be paid, or use auth, and we might not able to write there, so we just avoid doing it.
# In utils/output_utils.py is a list of relays that won't work, but there might be others, or you might want to define your own list,
# so you can overwrite it here. Otherwise, defaults will be used.
dvm_config.AVOID_PAID_OUTBOX_RELAY_LIST = AVOID_OUTBOX_RELAY_LIST
dvm_config.AVOID_OUTBOX_RELAY_LIST = AVOID_OUTBOX_RELAY_LIST
# Finally some DVMs might support Web of Trust filtering.
# You find an example in tasks/content_discovery_update_db_only.py