mirror of
https://github.com/believethehype/nostrdvm.git
synced 2025-06-21 02:50:58 +02:00
Merge branch 'main' into backends-nserver
This commit is contained in:
commit
27f5d1f7d5
@ -1,10 +0,0 @@
|
|||||||
# We follow Semantic Versioning (https://semver.org/)
|
|
||||||
_MAJOR_VERSION = '0'
|
|
||||||
_MINOR_VERSION = '0'
|
|
||||||
_PATCH_VERSION = '1'
|
|
||||||
|
|
||||||
__version__ = '.'.join([
|
|
||||||
_MAJOR_VERSION,
|
|
||||||
_MINOR_VERSION,
|
|
||||||
_PATCH_VERSION,
|
|
||||||
])
|
|
@ -1,4 +1,5 @@
|
|||||||
import json
|
import json
|
||||||
|
import os
|
||||||
import subprocess
|
import subprocess
|
||||||
import sys
|
import sys
|
||||||
from threading import Thread
|
from threading import Thread
|
||||||
@ -9,7 +10,9 @@ from nostr_dvm.dvm import DVM
|
|||||||
from nostr_dvm.utils.admin_utils import AdminConfig
|
from nostr_dvm.utils.admin_utils import AdminConfig
|
||||||
from nostr_dvm.utils.dvmconfig import DVMConfig
|
from nostr_dvm.utils.dvmconfig import DVMConfig
|
||||||
from nostr_dvm.utils.nip89_utils import NIP89Config
|
from nostr_dvm.utils.nip89_utils import NIP89Config
|
||||||
|
from nostr_dvm.utils.nostr_utils import check_and_set_private_key
|
||||||
from nostr_dvm.utils.output_utils import post_process_result
|
from nostr_dvm.utils.output_utils import post_process_result
|
||||||
|
from nostr_dvm.utils.zap_utils import check_and_set_ln_bits_keys
|
||||||
|
|
||||||
|
|
||||||
class DVMTaskInterface:
|
class DVMTaskInterface:
|
||||||
@ -92,6 +95,8 @@ class DVMTaskInterface:
|
|||||||
except ImportError:
|
except ImportError:
|
||||||
subprocess.check_call([sys.executable, "-m", "pip", "install", package])
|
subprocess.check_call([sys.executable, "-m", "pip", "install", package])
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def set_options(request_form):
|
def set_options(request_form):
|
||||||
print("Setting options...")
|
print("Setting options...")
|
||||||
|
@ -10,11 +10,9 @@ from nostr_dvm.interfaces.dvmtaskinterface import DVMTaskInterface
|
|||||||
from nostr_dvm.utils.admin_utils import AdminConfig
|
from nostr_dvm.utils.admin_utils import AdminConfig
|
||||||
from nostr_dvm.utils.backend_utils import keep_alive
|
from nostr_dvm.utils.backend_utils import keep_alive
|
||||||
from nostr_dvm.utils.definitions import EventDefinitions
|
from nostr_dvm.utils.definitions import EventDefinitions
|
||||||
from nostr_dvm.utils.dvmconfig import DVMConfig
|
from nostr_dvm.utils.dvmconfig import DVMConfig, build_default_config
|
||||||
from nostr_dvm.utils.nip89_utils import NIP89Config, check_and_set_d_tag
|
from nostr_dvm.utils.nip89_utils import NIP89Config, check_and_set_d_tag
|
||||||
from nostr_dvm.utils.nostr_utils import check_and_set_private_key
|
|
||||||
from nostr_dvm.utils.output_utils import post_process_list_to_events
|
from nostr_dvm.utils.output_utils import post_process_list_to_events
|
||||||
from nostr_dvm.utils.zap_utils import check_and_set_ln_bits_keys
|
|
||||||
|
|
||||||
"""
|
"""
|
||||||
This File contains a Module to search for notes
|
This File contains a Module to search for notes
|
||||||
@ -138,14 +136,8 @@ class AdvancedSearch(DVMTaskInterface):
|
|||||||
# 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
|
||||||
# playground or elsewhere
|
# playground or elsewhere
|
||||||
def build_example(name, identifier, admin_config):
|
def build_example(name, identifier, admin_config):
|
||||||
dvm_config = DVMConfig()
|
dvm_config = build_default_config(identifier)
|
||||||
dvm_config.PRIVATE_KEY = check_and_set_private_key(identifier)
|
admin_config.LUD16 = dvm_config.LN_ADDRESS
|
||||||
npub = Keys.from_sk_str(dvm_config.PRIVATE_KEY).public_key().to_bech32()
|
|
||||||
invoice_key, admin_key, wallet_id, user_id, lnaddress = check_and_set_ln_bits_keys(identifier, npub)
|
|
||||||
dvm_config.LNBITS_INVOICE_KEY = invoice_key
|
|
||||||
dvm_config.LNBITS_ADMIN_KEY = admin_key # The dvm might pay failed jobs back
|
|
||||||
dvm_config.LNBITS_URL = os.getenv("LNBITS_HOST")
|
|
||||||
admin_config.LUD16 = lnaddress
|
|
||||||
# Add NIP89
|
# Add NIP89
|
||||||
nip90params = {
|
nip90params = {
|
||||||
"user": {
|
"user": {
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
import json
|
import json
|
||||||
import os
|
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
||||||
import dotenv
|
import dotenv
|
||||||
@ -8,13 +7,11 @@ from nostr_dvm.interfaces.dvmtaskinterface import DVMTaskInterface
|
|||||||
from nostr_dvm.utils.admin_utils import AdminConfig
|
from nostr_dvm.utils.admin_utils import AdminConfig
|
||||||
from nostr_dvm.utils.backend_utils import keep_alive
|
from nostr_dvm.utils.backend_utils import keep_alive
|
||||||
from nostr_dvm.utils.definitions import EventDefinitions
|
from nostr_dvm.utils.definitions import EventDefinitions
|
||||||
from nostr_dvm.utils.dvmconfig import DVMConfig
|
from nostr_dvm.utils.dvmconfig import DVMConfig, build_default_config
|
||||||
from nostr_dvm.utils.nip89_utils import NIP89Config, check_and_set_d_tag
|
from nostr_dvm.utils.nip89_utils import NIP89Config, check_and_set_d_tag
|
||||||
from nostr_dvm.utils.mediasource_utils import organize_input_media_data
|
from nostr_dvm.utils.mediasource_utils import organize_input_media_data
|
||||||
from nostr_dvm.utils.nostr_utils import check_and_set_private_key
|
|
||||||
from nostr_dvm.utils.output_utils import upload_media_to_hoster
|
from nostr_dvm.utils.output_utils import upload_media_to_hoster
|
||||||
from nostr_dvm.utils.zap_utils import check_and_set_ln_bits_keys
|
|
||||||
from nostr_sdk import Keys
|
|
||||||
|
|
||||||
"""
|
"""
|
||||||
This File contains a Module to call Google Translate Services locally on the DVM Machine
|
This File contains a Module to call Google Translate Services locally on the DVM Machine
|
||||||
@ -85,14 +82,8 @@ class MediaConverter(DVMTaskInterface):
|
|||||||
# 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
|
||||||
# playground or elsewhere
|
# playground or elsewhere
|
||||||
def build_example(name, identifier, admin_config):
|
def build_example(name, identifier, admin_config):
|
||||||
dvm_config = DVMConfig()
|
dvm_config = build_default_config(identifier)
|
||||||
dvm_config.PRIVATE_KEY = check_and_set_private_key(identifier)
|
admin_config.LUD16 = dvm_config.LN_ADDRESS
|
||||||
npub = Keys.from_sk_str(dvm_config.PRIVATE_KEY).public_key().to_bech32()
|
|
||||||
invoice_key, admin_key, wallet_id, user_id, lnaddress = check_and_set_ln_bits_keys(identifier, npub)
|
|
||||||
dvm_config.LNBITS_INVOICE_KEY = invoice_key
|
|
||||||
dvm_config.LNBITS_ADMIN_KEY = admin_key # The dvm might pay failed jobs back
|
|
||||||
dvm_config.LNBITS_URL = os.getenv("LNBITS_HOST")
|
|
||||||
admin_config.LUD16 = lnaddress
|
|
||||||
# Add NIP89
|
# Add NIP89
|
||||||
nip90params = {
|
nip90params = {
|
||||||
"media_format": {
|
"media_format": {
|
||||||
|
@ -11,11 +11,9 @@ from nostr_dvm.interfaces.dvmtaskinterface import DVMTaskInterface
|
|||||||
from nostr_dvm.utils.admin_utils import AdminConfig
|
from nostr_dvm.utils.admin_utils import AdminConfig
|
||||||
from nostr_dvm.utils.backend_utils import keep_alive
|
from nostr_dvm.utils.backend_utils import keep_alive
|
||||||
from nostr_dvm.utils.definitions import EventDefinitions
|
from nostr_dvm.utils.definitions import EventDefinitions
|
||||||
from nostr_dvm.utils.dvmconfig import DVMConfig
|
from nostr_dvm.utils.dvmconfig import DVMConfig, build_default_config
|
||||||
from nostr_dvm.utils.nip89_utils import NIP89Config, check_and_set_d_tag
|
from nostr_dvm.utils.nip89_utils import NIP89Config, check_and_set_d_tag
|
||||||
from nostr_dvm.utils.nostr_utils import check_and_set_private_key
|
|
||||||
from nostr_dvm.utils.output_utils import post_process_list_to_users
|
from nostr_dvm.utils.output_utils import post_process_list_to_users
|
||||||
from nostr_dvm.utils.zap_utils import check_and_set_ln_bits_keys
|
|
||||||
|
|
||||||
"""
|
"""
|
||||||
This File contains a Module to find inactive follows for a user on nostr
|
This File contains a Module to find inactive follows for a user on nostr
|
||||||
@ -171,14 +169,8 @@ class DiscoverInactiveFollows(DVMTaskInterface):
|
|||||||
# 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
|
||||||
# playground or elsewhere
|
# playground or elsewhere
|
||||||
def build_example(name, identifier, admin_config):
|
def build_example(name, identifier, admin_config):
|
||||||
dvm_config = DVMConfig()
|
dvm_config = build_default_config(identifier)
|
||||||
dvm_config.PRIVATE_KEY = check_and_set_private_key(identifier)
|
admin_config.LUD16 = dvm_config.LN_ADDRESS
|
||||||
npub = Keys.from_sk_str(dvm_config.PRIVATE_KEY).public_key().to_bech32()
|
|
||||||
invoice_key, admin_key, wallet_id, user_id, lnaddress = check_and_set_ln_bits_keys(identifier, npub)
|
|
||||||
dvm_config.LNBITS_INVOICE_KEY = invoice_key
|
|
||||||
dvm_config.LNBITS_ADMIN_KEY = admin_key # The dvm might pay failed jobs back
|
|
||||||
dvm_config.LNBITS_URL = os.getenv("LNBITS_HOST")
|
|
||||||
admin_config.LUD16 = lnaddress
|
|
||||||
# Add NIP89
|
# Add NIP89
|
||||||
nip90params = {
|
nip90params = {
|
||||||
"user": {
|
"user": {
|
||||||
|
@ -11,12 +11,11 @@ from nostr_dvm.interfaces.dvmtaskinterface import DVMTaskInterface
|
|||||||
from nostr_dvm.utils.admin_utils import AdminConfig
|
from nostr_dvm.utils.admin_utils import AdminConfig
|
||||||
from nostr_dvm.utils.backend_utils import keep_alive
|
from nostr_dvm.utils.backend_utils import keep_alive
|
||||||
from nostr_dvm.utils.definitions import EventDefinitions
|
from nostr_dvm.utils.definitions import EventDefinitions
|
||||||
from nostr_dvm.utils.dvmconfig import DVMConfig
|
from nostr_dvm.utils.dvmconfig import DVMConfig, build_default_config
|
||||||
from nostr_dvm.utils.nip89_utils import NIP89Config, check_and_set_d_tag
|
from nostr_dvm.utils.nip89_utils import NIP89Config, check_and_set_d_tag
|
||||||
from nostr_dvm.utils.nostr_utils import check_and_set_private_key
|
|
||||||
from nostr_dvm.utils.output_utils import upload_media_to_hoster
|
from nostr_dvm.utils.output_utils import upload_media_to_hoster
|
||||||
from nostr_dvm.utils.zap_utils import get_price_per_sat, check_and_set_ln_bits_keys
|
from nostr_dvm.utils.zap_utils import get_price_per_sat
|
||||||
from nostr_sdk import Keys
|
|
||||||
|
|
||||||
"""
|
"""
|
||||||
This File contains a Module to transform Text input on OpenAI's servers with DALLE-3 and receive results back.
|
This File contains a Module to transform Text input on OpenAI's servers with DALLE-3 and receive results back.
|
||||||
@ -125,16 +124,11 @@ class ImageGenerationDALLE(DVMTaskInterface):
|
|||||||
# 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
|
||||||
# playground or elsewhere
|
# playground or elsewhere
|
||||||
def build_example(name, identifier, admin_config):
|
def build_example(name, identifier, admin_config):
|
||||||
dvm_config = DVMConfig()
|
dvm_config = build_default_config(identifier)
|
||||||
dvm_config.PRIVATE_KEY = check_and_set_private_key(identifier)
|
admin_config.LUD16 = dvm_config.LN_ADDRESS
|
||||||
npub = Keys.from_sk_str(dvm_config.PRIVATE_KEY).public_key().to_bech32()
|
|
||||||
invoice_key, admin_key, wallet_id, user_id, lnaddress = check_and_set_ln_bits_keys(identifier, npub)
|
|
||||||
dvm_config.LNBITS_INVOICE_KEY = invoice_key
|
|
||||||
dvm_config.LNBITS_ADMIN_KEY = admin_key # The dvm might pay failed jobs back
|
|
||||||
dvm_config.LNBITS_URL = os.getenv("LNBITS_HOST")
|
|
||||||
admin_config.LUD16 = lnaddress
|
|
||||||
profit_in_sats = 10
|
profit_in_sats = 10
|
||||||
dvm_config.FIX_COST = int(((4.0 / (get_price_per_sat("USD") * 100)) + profit_in_sats))
|
cost_in_cent = 4.0
|
||||||
|
dvm_config.FIX_COST = int(((cost_in_cent / (get_price_per_sat("USD") * 100)) + profit_in_sats))
|
||||||
|
|
||||||
nip90params = {
|
nip90params = {
|
||||||
"size": {
|
"size": {
|
||||||
|
@ -11,12 +11,10 @@ from nostr_dvm.interfaces.dvmtaskinterface import DVMTaskInterface
|
|||||||
from nostr_dvm.utils.admin_utils import AdminConfig
|
from nostr_dvm.utils.admin_utils import AdminConfig
|
||||||
from nostr_dvm.utils.backend_utils import keep_alive
|
from nostr_dvm.utils.backend_utils import keep_alive
|
||||||
from nostr_dvm.utils.definitions import EventDefinitions
|
from nostr_dvm.utils.definitions import EventDefinitions
|
||||||
from nostr_dvm.utils.dvmconfig import DVMConfig
|
from nostr_dvm.utils.dvmconfig import DVMConfig, build_default_config
|
||||||
from nostr_dvm.utils.nip89_utils import NIP89Config, check_and_set_d_tag
|
from nostr_dvm.utils.nip89_utils import NIP89Config, check_and_set_d_tag
|
||||||
from nostr_dvm.utils.nostr_utils import check_and_set_private_key
|
|
||||||
from nostr_dvm.utils.output_utils import upload_media_to_hoster
|
from nostr_dvm.utils.output_utils import upload_media_to_hoster
|
||||||
from nostr_dvm.utils.zap_utils import get_price_per_sat, check_and_set_ln_bits_keys
|
from nostr_dvm.utils.zap_utils import get_price_per_sat
|
||||||
from nostr_sdk import Keys
|
|
||||||
|
|
||||||
"""
|
"""
|
||||||
This File contains a Module to transform Text input on NOVA-Server and receive results back.
|
This File contains a Module to transform Text input on NOVA-Server and receive results back.
|
||||||
@ -122,14 +120,8 @@ class ImageGenerationReplicateSDXL(DVMTaskInterface):
|
|||||||
# 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
|
||||||
# playground or elsewhere
|
# playground or elsewhere
|
||||||
def build_example(name, identifier, admin_config):
|
def build_example(name, identifier, admin_config):
|
||||||
dvm_config = DVMConfig()
|
dvm_config = build_default_config(identifier)
|
||||||
dvm_config.PRIVATE_KEY = check_and_set_private_key(identifier)
|
admin_config.LUD16 = dvm_config.LN_ADDRESS
|
||||||
npub = Keys.from_sk_str(dvm_config.PRIVATE_KEY).public_key().to_bech32()
|
|
||||||
invoice_key, admin_key, wallet_id, user_id, lnaddress = check_and_set_ln_bits_keys(identifier, npub)
|
|
||||||
dvm_config.LNBITS_INVOICE_KEY = invoice_key
|
|
||||||
dvm_config.LNBITS_ADMIN_KEY = admin_key # The dvm might pay failed jobs back
|
|
||||||
dvm_config.LNBITS_URL = os.getenv("LNBITS_HOST")
|
|
||||||
admin_config.LUD16 = lnaddress
|
|
||||||
profit_in_sats = 10
|
profit_in_sats = 10
|
||||||
dvm_config.FIX_COST = int(((4.0 / (get_price_per_sat("USD") * 100)) + profit_in_sats))
|
dvm_config.FIX_COST = int(((4.0 / (get_price_per_sat("USD") * 100)) + profit_in_sats))
|
||||||
|
|
||||||
|
@ -8,13 +8,10 @@ import dotenv
|
|||||||
from nostr_dvm.interfaces.dvmtaskinterface import DVMTaskInterface
|
from nostr_dvm.interfaces.dvmtaskinterface import DVMTaskInterface
|
||||||
from nostr_dvm.utils.admin_utils import AdminConfig
|
from nostr_dvm.utils.admin_utils import AdminConfig
|
||||||
from nostr_dvm.utils.backend_utils import keep_alive
|
from nostr_dvm.utils.backend_utils import keep_alive
|
||||||
from nostr_dvm.utils.dvmconfig import DVMConfig
|
from nostr_dvm.utils.dvmconfig import DVMConfig, build_default_config
|
||||||
from nostr_dvm.utils.mediasource_utils import organize_input_media_data
|
from nostr_dvm.utils.mediasource_utils import organize_input_media_data
|
||||||
from nostr_dvm.utils.nip89_utils import NIP89Config, check_and_set_d_tag
|
from nostr_dvm.utils.nip89_utils import NIP89Config, check_and_set_d_tag
|
||||||
from nostr_dvm.utils.definitions import EventDefinitions
|
from nostr_dvm.utils.definitions import EventDefinitions
|
||||||
from nostr_dvm.utils.nostr_utils import check_and_set_private_key
|
|
||||||
from nostr_dvm.utils.zap_utils import check_and_set_ln_bits_keys
|
|
||||||
from nostr_sdk import Keys
|
|
||||||
|
|
||||||
"""
|
"""
|
||||||
This File contains a Module to transform a media file input on Google Cloud
|
This File contains a Module to transform a media file input on Google Cloud
|
||||||
@ -30,6 +27,7 @@ class SpeechToTextGoogle(DVMTaskInterface):
|
|||||||
TASK: str = "speech-to-text"
|
TASK: str = "speech-to-text"
|
||||||
FIX_COST: float = 10
|
FIX_COST: float = 10
|
||||||
PER_UNIT_COST: float = 0.1
|
PER_UNIT_COST: float = 0.1
|
||||||
|
dependencies = ["SpeechRecognition==3.10.0"]
|
||||||
|
|
||||||
def __init__(self, name, dvm_config: DVMConfig, nip89config: NIP89Config,
|
def __init__(self, name, dvm_config: DVMConfig, nip89config: NIP89Config,
|
||||||
admin_config: AdminConfig = None, options=None):
|
admin_config: AdminConfig = None, options=None):
|
||||||
@ -132,14 +130,8 @@ class SpeechToTextGoogle(DVMTaskInterface):
|
|||||||
# 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
|
||||||
# playground or elsewhere
|
# playground or elsewhere
|
||||||
def build_example(name, identifier, admin_config):
|
def build_example(name, identifier, admin_config):
|
||||||
dvm_config = DVMConfig()
|
dvm_config = build_default_config(identifier)
|
||||||
dvm_config.PRIVATE_KEY = check_and_set_private_key(identifier)
|
admin_config.LUD16 = dvm_config.LN_ADDRESS
|
||||||
npub = Keys.from_sk_str(dvm_config.PRIVATE_KEY).public_key().to_bech32()
|
|
||||||
invoice_key, admin_key, wallet_id, user_id, lnaddress = check_and_set_ln_bits_keys(identifier, npub)
|
|
||||||
dvm_config.LNBITS_INVOICE_KEY = invoice_key
|
|
||||||
dvm_config.LNBITS_ADMIN_KEY = admin_key # The dvm might pay failed jobs back
|
|
||||||
dvm_config.LNBITS_URL = os.getenv("LNBITS_HOST")
|
|
||||||
admin_config.LUD16 = lnaddress
|
|
||||||
options = {'api_key': None}
|
options = {'api_key': None}
|
||||||
# A module might have options it can be initialized with, here we set a default model, and the nova-server
|
# A module might have options it can be initialized with, here we set a default model, and the nova-server
|
||||||
# address it should use. These parameters can be freely defined in the task component
|
# address it should use. These parameters can be freely defined in the task component
|
||||||
|
@ -9,11 +9,9 @@ from nostr_dvm.interfaces.dvmtaskinterface import DVMTaskInterface
|
|||||||
from nostr_dvm.utils.admin_utils import AdminConfig
|
from nostr_dvm.utils.admin_utils import AdminConfig
|
||||||
from nostr_dvm.utils.backend_utils import keep_alive
|
from nostr_dvm.utils.backend_utils import keep_alive
|
||||||
from nostr_dvm.utils.definitions import EventDefinitions
|
from nostr_dvm.utils.definitions import EventDefinitions
|
||||||
from nostr_dvm.utils.dvmconfig import DVMConfig
|
from nostr_dvm.utils.dvmconfig import DVMConfig, build_default_config
|
||||||
from nostr_dvm.utils.nip89_utils import NIP89Config, check_and_set_d_tag
|
from nostr_dvm.utils.nip89_utils import NIP89Config, check_and_set_d_tag
|
||||||
from nostr_dvm.utils.nostr_utils import get_event_by_id, check_and_set_private_key
|
from nostr_dvm.utils.nostr_utils import get_event_by_id
|
||||||
from nostr_dvm.utils.zap_utils import check_and_set_ln_bits_keys
|
|
||||||
from nostr_sdk import Keys
|
|
||||||
|
|
||||||
"""
|
"""
|
||||||
This File contains a Module to extract Text from a PDF file locally on the DVM Machine
|
This File contains a Module to extract Text from a PDF file locally on the DVM Machine
|
||||||
@ -99,14 +97,8 @@ class TextExtractionPDF(DVMTaskInterface):
|
|||||||
# 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
|
||||||
# playground or elsewhere
|
# playground or elsewhere
|
||||||
def build_example(name, identifier, admin_config):
|
def build_example(name, identifier, admin_config):
|
||||||
dvm_config = DVMConfig()
|
dvm_config = build_default_config(identifier)
|
||||||
dvm_config.PRIVATE_KEY = check_and_set_private_key(identifier)
|
admin_config.LUD16 = dvm_config.LN_ADDRESS
|
||||||
npub = Keys.from_sk_str(dvm_config.PRIVATE_KEY).public_key().to_bech32()
|
|
||||||
invoice_key, admin_key, wallet_id, user_id, lnaddress = check_and_set_ln_bits_keys(identifier, npub)
|
|
||||||
dvm_config.LNBITS_INVOICE_KEY = invoice_key
|
|
||||||
dvm_config.LNBITS_ADMIN_KEY = admin_key # The dvm might pay failed jobs back
|
|
||||||
dvm_config.LNBITS_URL = os.getenv("LNBITS_HOST")
|
|
||||||
admin_config.LUD16 = lnaddress
|
|
||||||
# Add NIP89
|
# Add NIP89
|
||||||
nip90params = {}
|
nip90params = {}
|
||||||
nip89info = {
|
nip89info = {
|
||||||
|
@ -9,11 +9,8 @@ from nostr_dvm.interfaces.dvmtaskinterface import DVMTaskInterface
|
|||||||
from nostr_dvm.utils.admin_utils import AdminConfig
|
from nostr_dvm.utils.admin_utils import AdminConfig
|
||||||
from nostr_dvm.utils.backend_utils import keep_alive
|
from nostr_dvm.utils.backend_utils import keep_alive
|
||||||
from nostr_dvm.utils.definitions import EventDefinitions
|
from nostr_dvm.utils.definitions import EventDefinitions
|
||||||
from nostr_dvm.utils.dvmconfig import DVMConfig
|
from nostr_dvm.utils.dvmconfig import DVMConfig, build_default_config
|
||||||
from nostr_dvm.utils.nip89_utils import NIP89Config, check_and_set_d_tag
|
from nostr_dvm.utils.nip89_utils import NIP89Config, check_and_set_d_tag
|
||||||
from nostr_dvm.utils.nostr_utils import check_and_set_private_key
|
|
||||||
from nostr_dvm.utils.zap_utils import check_and_set_ln_bits_keys
|
|
||||||
from nostr_sdk import Keys
|
|
||||||
|
|
||||||
"""
|
"""
|
||||||
This File contains a Module to generate Text, based on a prompt using a LLM (local or API)
|
This File contains a Module to generate Text, based on a prompt using a LLM (local or API)
|
||||||
@ -102,14 +99,8 @@ class TextGenerationOLLAMA(DVMTaskInterface):
|
|||||||
# 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
|
||||||
# playground or elsewhere
|
# playground or elsewhere
|
||||||
def build_example(name, identifier, admin_config):
|
def build_example(name, identifier, admin_config):
|
||||||
dvm_config = DVMConfig()
|
dvm_config = build_default_config(identifier)
|
||||||
dvm_config.PRIVATE_KEY = check_and_set_private_key(identifier)
|
admin_config.LUD16 = dvm_config.LN_ADDRESS
|
||||||
npub = Keys.from_sk_str(dvm_config.PRIVATE_KEY).public_key().to_bech32()
|
|
||||||
invoice_key, admin_key, wallet_id, user_id, lnaddress = check_and_set_ln_bits_keys(identifier, npub)
|
|
||||||
dvm_config.LNBITS_INVOICE_KEY = invoice_key
|
|
||||||
dvm_config.LNBITS_ADMIN_KEY = admin_key # The dvm might pay failed jobs back
|
|
||||||
dvm_config.LNBITS_URL = os.getenv("LNBITS_HOST")
|
|
||||||
admin_config.LUD16 = lnaddress
|
|
||||||
|
|
||||||
nip90params = {
|
nip90params = {
|
||||||
"size": {
|
"size": {
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
import json
|
import json
|
||||||
import os
|
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
||||||
import dotenv
|
import dotenv
|
||||||
@ -8,11 +7,10 @@ from nostr_dvm.interfaces.dvmtaskinterface import DVMTaskInterface
|
|||||||
from nostr_dvm.utils.admin_utils import AdminConfig
|
from nostr_dvm.utils.admin_utils import AdminConfig
|
||||||
from nostr_dvm.utils.backend_utils import keep_alive
|
from nostr_dvm.utils.backend_utils import keep_alive
|
||||||
from nostr_dvm.utils.definitions import EventDefinitions
|
from nostr_dvm.utils.definitions import EventDefinitions
|
||||||
from nostr_dvm.utils.dvmconfig import DVMConfig
|
from nostr_dvm.utils.dvmconfig import DVMConfig, build_default_config
|
||||||
from nostr_dvm.utils.nip89_utils import NIP89Config, check_and_set_d_tag
|
from nostr_dvm.utils.nip89_utils import NIP89Config, check_and_set_d_tag
|
||||||
from nostr_dvm.utils.nostr_utils import get_referenced_event_by_id, get_event_by_id, check_and_set_private_key
|
from nostr_dvm.utils.nostr_utils import get_referenced_event_by_id, get_event_by_id
|
||||||
from nostr_dvm.utils.zap_utils import check_and_set_ln_bits_keys
|
|
||||||
from nostr_sdk import Keys
|
|
||||||
|
|
||||||
"""
|
"""
|
||||||
This File contains a Module to call Google Translate Services locally on the DVM Machine
|
This File contains a Module to call Google Translate Services locally on the DVM Machine
|
||||||
@ -114,14 +112,8 @@ class TranslationGoogle(DVMTaskInterface):
|
|||||||
# 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
|
||||||
# playground or elsewhere
|
# playground or elsewhere
|
||||||
def build_example(name, identifier, admin_config):
|
def build_example(name, identifier, admin_config):
|
||||||
dvm_config = DVMConfig()
|
dvm_config = build_default_config(identifier)
|
||||||
dvm_config.PRIVATE_KEY = check_and_set_private_key(identifier)
|
admin_config.LUD16 = dvm_config.LN_ADDRESS
|
||||||
npub = Keys.from_sk_str(dvm_config.PRIVATE_KEY).public_key().to_bech32()
|
|
||||||
invoice_key, admin_key, wallet_id, user_id, lnaddress = check_and_set_ln_bits_keys(identifier, npub)
|
|
||||||
dvm_config.LNBITS_INVOICE_KEY = invoice_key
|
|
||||||
dvm_config.LNBITS_ADMIN_KEY = admin_key # The dvm might pay failed jobs back
|
|
||||||
dvm_config.LNBITS_URL = os.getenv("LNBITS_HOST")
|
|
||||||
admin_config.LUD16 = lnaddress
|
|
||||||
|
|
||||||
nip90params = {
|
nip90params = {
|
||||||
"language": {
|
"language": {
|
||||||
|
@ -9,11 +9,10 @@ from nostr_dvm.interfaces.dvmtaskinterface import DVMTaskInterface
|
|||||||
from nostr_dvm.utils.admin_utils import AdminConfig
|
from nostr_dvm.utils.admin_utils import AdminConfig
|
||||||
from nostr_dvm.utils.backend_utils import keep_alive
|
from nostr_dvm.utils.backend_utils import keep_alive
|
||||||
from nostr_dvm.utils.definitions import EventDefinitions
|
from nostr_dvm.utils.definitions import EventDefinitions
|
||||||
from nostr_dvm.utils.dvmconfig import DVMConfig
|
from nostr_dvm.utils.dvmconfig import DVMConfig, build_default_config
|
||||||
from nostr_dvm.utils.nip89_utils import NIP89Config, check_and_set_d_tag
|
from nostr_dvm.utils.nip89_utils import NIP89Config, check_and_set_d_tag
|
||||||
from nostr_dvm.utils.nostr_utils import get_referenced_event_by_id, get_event_by_id, check_and_set_private_key
|
from nostr_dvm.utils.nostr_utils import get_referenced_event_by_id, get_event_by_id
|
||||||
from nostr_dvm.utils.zap_utils import check_and_set_ln_bits_keys
|
|
||||||
from nostr_sdk import Keys
|
|
||||||
|
|
||||||
"""
|
"""
|
||||||
This File contains a Module to call Google Translate Services locally on the DVM Machine
|
This File contains a Module to call Google Translate Services locally on the DVM Machine
|
||||||
@ -110,14 +109,8 @@ class TranslationLibre(DVMTaskInterface):
|
|||||||
# 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
|
||||||
# playground or elsewhere
|
# playground or elsewhere
|
||||||
def build_example(name, identifier, admin_config):
|
def build_example(name, identifier, admin_config):
|
||||||
dvm_config = DVMConfig()
|
dvm_config = build_default_config(identifier)
|
||||||
dvm_config.PRIVATE_KEY = check_and_set_private_key(identifier)
|
admin_config.LUD16 = dvm_config.LN_ADDRESS
|
||||||
npub = Keys.from_sk_str(dvm_config.PRIVATE_KEY).public_key().to_bech32()
|
|
||||||
invoice_key, admin_key, wallet_id, user_id, lnaddress = check_and_set_ln_bits_keys(identifier, npub)
|
|
||||||
dvm_config.LNBITS_INVOICE_KEY = invoice_key
|
|
||||||
dvm_config.LNBITS_ADMIN_KEY = admin_key # The dvm might pay failed jobs back
|
|
||||||
dvm_config.LNBITS_URL = os.getenv("LNBITS_HOST")
|
|
||||||
admin_config.LUD16 = lnaddress
|
|
||||||
|
|
||||||
options = {'libre_end_point': os.getenv("LIBRE_TRANSLATE_ENDPOINT"),
|
options = {'libre_end_point': os.getenv("LIBRE_TRANSLATE_ENDPOINT"),
|
||||||
'libre_api_key': os.getenv("LIBRE_TRANSLATE_API_KEY")}
|
'libre_api_key': os.getenv("LIBRE_TRANSLATE_API_KEY")}
|
||||||
|
@ -3,17 +3,15 @@ import os
|
|||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
||||||
import dotenv
|
import dotenv
|
||||||
from nostr_sdk import Tag, Keys
|
from nostr_sdk import Tag
|
||||||
|
|
||||||
from nostr_dvm.interfaces.dvmtaskinterface import DVMTaskInterface
|
from nostr_dvm.interfaces.dvmtaskinterface import DVMTaskInterface
|
||||||
from nostr_dvm.utils.admin_utils import AdminConfig
|
from nostr_dvm.utils.admin_utils import AdminConfig
|
||||||
from nostr_dvm.utils.backend_utils import keep_alive
|
from nostr_dvm.utils.backend_utils import keep_alive
|
||||||
from nostr_dvm.utils.definitions import EventDefinitions
|
from nostr_dvm.utils.definitions import EventDefinitions
|
||||||
from nostr_dvm.utils.dvmconfig import DVMConfig
|
from nostr_dvm.utils.dvmconfig import DVMConfig, build_default_config
|
||||||
from nostr_dvm.utils.nip89_utils import NIP89Config, check_and_set_d_tag
|
from nostr_dvm.utils.nip89_utils import NIP89Config, check_and_set_d_tag
|
||||||
from nostr_dvm.utils.nostr_utils import check_and_set_private_key
|
|
||||||
from nostr_dvm.utils.output_utils import post_process_list_to_events
|
from nostr_dvm.utils.output_utils import post_process_list_to_events
|
||||||
from nostr_dvm.utils.zap_utils import check_and_set_ln_bits_keys
|
|
||||||
|
|
||||||
"""
|
"""
|
||||||
This File contains a Module to search for notes
|
This File contains a Module to search for notes
|
||||||
@ -104,14 +102,8 @@ class TrendingNotesNostrBand(DVMTaskInterface):
|
|||||||
# 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
|
||||||
# playground or elsewhere
|
# playground or elsewhere
|
||||||
def build_example(name, identifier, admin_config):
|
def build_example(name, identifier, admin_config):
|
||||||
dvm_config = DVMConfig()
|
dvm_config = build_default_config(identifier)
|
||||||
dvm_config.PRIVATE_KEY = check_and_set_private_key(identifier)
|
admin_config.LUD16 = dvm_config.LN_ADDRESS
|
||||||
npub = Keys.from_sk_str(dvm_config.PRIVATE_KEY).public_key().to_bech32()
|
|
||||||
invoice_key, admin_key, wallet_id, user_id, lnaddress = check_and_set_ln_bits_keys(identifier, npub)
|
|
||||||
dvm_config.LNBITS_INVOICE_KEY = invoice_key
|
|
||||||
dvm_config.LNBITS_ADMIN_KEY = admin_key # The dvm might pay failed jobs back
|
|
||||||
dvm_config.LNBITS_URL = os.getenv("LNBITS_HOST")
|
|
||||||
admin_config.LUD16 = lnaddress
|
|
||||||
# Add NIP89
|
# Add NIP89
|
||||||
nip90params = {
|
nip90params = {
|
||||||
}
|
}
|
||||||
|
@ -12,12 +12,10 @@ from nostr_dvm.interfaces.dvmtaskinterface import DVMTaskInterface
|
|||||||
from nostr_dvm.utils.admin_utils import AdminConfig
|
from nostr_dvm.utils.admin_utils import AdminConfig
|
||||||
from nostr_dvm.utils.backend_utils import keep_alive
|
from nostr_dvm.utils.backend_utils import keep_alive
|
||||||
from nostr_dvm.utils.definitions import EventDefinitions
|
from nostr_dvm.utils.definitions import EventDefinitions
|
||||||
from nostr_dvm.utils.dvmconfig import DVMConfig
|
from nostr_dvm.utils.dvmconfig import DVMConfig, build_default_config
|
||||||
from nostr_dvm.utils.nip89_utils import NIP89Config, check_and_set_d_tag
|
from nostr_dvm.utils.nip89_utils import NIP89Config, check_and_set_d_tag
|
||||||
from nostr_dvm.utils.nostr_utils import check_and_set_private_key
|
|
||||||
from nostr_dvm.utils.output_utils import upload_media_to_hoster
|
from nostr_dvm.utils.output_utils import upload_media_to_hoster
|
||||||
from nostr_dvm.utils.zap_utils import get_price_per_sat, check_and_set_ln_bits_keys
|
from nostr_dvm.utils.zap_utils import get_price_per_sat
|
||||||
from nostr_sdk import Keys
|
|
||||||
|
|
||||||
"""
|
"""
|
||||||
This File contains a Module to transform an image to a short video clip using Stable Video Diffusion with replicate
|
This File contains a Module to transform an image to a short video clip using Stable Video Diffusion with replicate
|
||||||
@ -112,14 +110,8 @@ class VideoGenerationReplicateSVD(DVMTaskInterface):
|
|||||||
# 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
|
||||||
# playground or elsewhere
|
# playground or elsewhere
|
||||||
def build_example(name, identifier, admin_config):
|
def build_example(name, identifier, admin_config):
|
||||||
dvm_config = DVMConfig()
|
dvm_config = build_default_config(identifier)
|
||||||
dvm_config.PRIVATE_KEY = check_and_set_private_key(identifier)
|
admin_config.LUD16 = dvm_config.LN_ADDRESS
|
||||||
npub = Keys.from_sk_str(dvm_config.PRIVATE_KEY).public_key().to_bech32()
|
|
||||||
invoice_key, admin_key, wallet_id, user_id, lnaddress = check_and_set_ln_bits_keys(identifier, npub)
|
|
||||||
dvm_config.LNBITS_INVOICE_KEY = invoice_key
|
|
||||||
dvm_config.LNBITS_ADMIN_KEY = admin_key # The dvm might pay failed jobs back
|
|
||||||
dvm_config.LNBITS_URL = os.getenv("LNBITS_HOST")
|
|
||||||
admin_config.LUD16 = lnaddress
|
|
||||||
profit_in_sats = 10
|
profit_in_sats = 10
|
||||||
cost_in_cent = 4.0
|
cost_in_cent = 4.0
|
||||||
dvm_config.FIX_COST = int(((cost_in_cent / (get_price_per_sat("USD") * 100)) + profit_in_sats))
|
dvm_config.FIX_COST = int(((cost_in_cent / (get_price_per_sat("USD") * 100)) + profit_in_sats))
|
||||||
|
@ -1,5 +1,11 @@
|
|||||||
|
import os
|
||||||
|
|
||||||
|
from nostr_sdk import Keys
|
||||||
|
|
||||||
from nostr_dvm.utils.nip89_utils import NIP89Config
|
from nostr_dvm.utils.nip89_utils import NIP89Config
|
||||||
|
from nostr_dvm.utils.nostr_utils import check_and_set_private_key
|
||||||
from nostr_dvm.utils.output_utils import PostProcessFunctionType
|
from nostr_dvm.utils.output_utils import PostProcessFunctionType
|
||||||
|
from nostr_dvm.utils.zap_utils import check_and_set_ln_bits_keys
|
||||||
|
|
||||||
|
|
||||||
class DVMConfig:
|
class DVMConfig:
|
||||||
@ -20,10 +26,20 @@ class DVMConfig:
|
|||||||
LNBITS_INVOICE_KEY = ''
|
LNBITS_INVOICE_KEY = ''
|
||||||
LNBITS_ADMIN_KEY = '' # In order to pay invoices, e.g. from the bot to DVMs, or reimburse users.
|
LNBITS_ADMIN_KEY = '' # In order to pay invoices, e.g. from the bot to DVMs, or reimburse users.
|
||||||
LNBITS_URL = 'https://lnbits.com'
|
LNBITS_URL = 'https://lnbits.com'
|
||||||
|
LN_ADDRESS = ''
|
||||||
DB: str
|
DB: str
|
||||||
NEW_USER_BALANCE: int = 0 # Free credits for new users
|
NEW_USER_BALANCE: int = 0 # Free credits for new users
|
||||||
NIP89: NIP89Config
|
NIP89: NIP89Config
|
||||||
SHOW_RESULT_BEFORE_PAYMENT: bool = False # if this is true show results even when not paid right after autoprocess
|
SHOW_RESULT_BEFORE_PAYMENT: bool = False # if this is true show results even when not paid right after autoprocess
|
||||||
|
|
||||||
|
|
||||||
|
def build_default_config(identifier):
|
||||||
|
dvm_config = DVMConfig()
|
||||||
|
dvm_config.PRIVATE_KEY = check_and_set_private_key(identifier)
|
||||||
|
npub = Keys.from_sk_str(dvm_config.PRIVATE_KEY).public_key().to_bech32()
|
||||||
|
invoice_key, admin_key, wallet_id, user_id, lnaddress = check_and_set_ln_bits_keys(identifier, npub)
|
||||||
|
dvm_config.LNBITS_INVOICE_KEY = invoice_key
|
||||||
|
dvm_config.LNBITS_ADMIN_KEY = admin_key # The dvm might pay failed jobs back
|
||||||
|
dvm_config.LNBITS_URL = os.getenv("LNBITS_HOST")
|
||||||
|
dvm_config.LN_ADDRESS = lnaddress
|
||||||
|
return dvm_config
|
||||||
|
7
setup.py
7
setup.py
@ -1,6 +1,6 @@
|
|||||||
from setuptools import setup, find_packages
|
from setuptools import setup, find_packages
|
||||||
|
|
||||||
VERSION = '0.0.1'
|
VERSION = '0.0.2'
|
||||||
DESCRIPTION = 'A framework to build and run NIP90 Data Vending Machines'
|
DESCRIPTION = 'A framework to build and run NIP90 Data Vending Machines'
|
||||||
LONG_DESCRIPTION = ('A framework to build and run NIP90 Data Vending Machines. '
|
LONG_DESCRIPTION = ('A framework to build and run NIP90 Data Vending Machines. '
|
||||||
'This is an early stage release. Interfaces might change/brick')
|
'This is an early stage release. Interfaces might change/brick')
|
||||||
@ -28,9 +28,12 @@ setup(
|
|||||||
"requests==2.31.0",
|
"requests==2.31.0",
|
||||||
"instaloader==4.10.1",
|
"instaloader==4.10.1",
|
||||||
"pytube==15.0.0",
|
"pytube==15.0.0",
|
||||||
"moviepy==2.0.0.dev2"
|
"moviepy==2.0.0.dev2",
|
||||||
|
"zipp==3.17.0"
|
||||||
],
|
],
|
||||||
keywords=['nostr', 'nip90', 'dvm', 'data vending machine'],
|
keywords=['nostr', 'nip90', 'dvm', 'data vending machine'],
|
||||||
|
url="https://github.com/believethehype/nostrdvm",
|
||||||
|
license="MIT",
|
||||||
classifiers=[
|
classifiers=[
|
||||||
"Development Status :: 3 - Alpha",
|
"Development Status :: 3 - Alpha",
|
||||||
"Intended Audience :: Education",
|
"Intended Audience :: Education",
|
||||||
|
@ -7,9 +7,9 @@ import dotenv
|
|||||||
from nostr_sdk import Keys, Client, Tag, EventBuilder, Filter, HandleNotification, Timestamp, nip04_decrypt, \
|
from nostr_sdk import Keys, Client, Tag, EventBuilder, Filter, HandleNotification, Timestamp, nip04_decrypt, \
|
||||||
nip04_encrypt
|
nip04_encrypt
|
||||||
|
|
||||||
from utils.dvmconfig import DVMConfig
|
from nostr_dvm.utils.dvmconfig import DVMConfig
|
||||||
from utils.nostr_utils import send_event, check_and_set_private_key
|
from nostr_dvm.utils.nostr_utils import send_event, check_and_set_private_key
|
||||||
from utils.definitions import EventDefinitions
|
from nostr_dvm.utils.definitions import EventDefinitions
|
||||||
|
|
||||||
|
|
||||||
# TODO HINT: Best use this path with a previously whitelisted privkey, as zapping events is not implemented in the lib/code
|
# TODO HINT: Best use this path with a previously whitelisted privkey, as zapping events is not implemented in the lib/code
|
||||||
|
Loading…
x
Reference in New Issue
Block a user