2025-01-29 14:18:32 +11:00
import json
import account
2025-01-29 14:36:04 +11:00
import os
import time
2025-01-29 14:18:32 +11:00
# Plugin Data
info = {
" name " : " Multi Wallet Functions " ,
" description " : " Access and manage multiple wallets at once " ,
" version " : " 1.0 " ,
" author " : " Nathan.Woodburn/ "
}
# Functions
functions = {
" balance " : {
" name " : " Wallet Balances " ,
" type " : " default " ,
" description " : " List balances of all wallets " ,
" params " : { } ,
" returns " : {
" result " :
{
" name " : " Result " ,
" type " : " list "
}
}
2025-01-29 14:36:04 +11:00
} ,
2025-01-29 14:46:21 +11:00
" domains " : {
" name " : " Domains " ,
" type " : " default " ,
" description " : " List number of domains in each wallet " ,
" params " : { } ,
" returns " : {
" result " :
{
" name " : " Result " ,
" type " : " list "
}
}
} ,
2025-02-04 15:12:07 +11:00
" expiring " : {
" name " : " Expiring Domains " ,
" type " : " default " ,
" description " : " List domains that are expiring and their wallet " ,
" params " : {
" days " : {
" name " : " Days until expiry (default 30) " ,
" type " : " number "
}
} ,
" returns " : {
" result " :
{
" name " : " Result " ,
" type " : " text "
}
}
} ,
" export " : {
" name " : " Export Domains " ,
" type " : " default " ,
" description " : " Export domains to a file " ,
" params " : {
} ,
" returns " : {
" result " :
{
" name " : " result.csv " ,
" type " : " file "
}
}
} ,
2025-01-29 14:36:04 +11:00
" dash " : {
" name " : " Dashboard widget " ,
" type " : " dashboard " ,
" description " : " List total balance of all wallets on your dashboard " ,
" params " : { } ,
" returns " : {
" result " :
{
" name " : " Total Holdings " ,
" type " : " text "
}
}
} ,
" enable " : {
" name " : " Enable Dashboard widget " ,
" type " : " default " ,
" description " : " Enable the dashboard widget " ,
" params " : { } ,
" returns " : {
" result " :
{
" name " : " Result " ,
" type " : " text "
}
}
} ,
" disable " : {
" name " : " Disable Dashboard widget " ,
" type " : " default " ,
" description " : " Disable the dashboard widget " ,
" params " : { } ,
" returns " : {
" result " :
{
" name " : " Result " ,
" type " : " text "
}
}
2025-01-29 14:18:32 +11:00
}
}
2025-01-29 14:36:04 +11:00
if not os . path . exists ( " user_data/multiwallet.json " ) :
with open ( " user_data/multiwallet.json " , " w " ) as f :
json . dump ( {
" enabled " : False ,
" lastUpdate " : 0
} , f )
2025-01-29 14:18:32 +11:00
def balance ( params , authentication ) :
wallets = account . listWallets ( )
balances = [ ]
total = 0
available = 0
for wallet in wallets :
info = account . getBalance ( wallet )
balances . append ( f " { wallet } : Available: { info [ ' available ' ] : ,.2f } HNS, Total: { info [ ' total ' ] : ,.2f } HNS " )
total + = info [ ' total ' ]
available + = info [ ' available ' ]
balances . append ( f " Total: Available: { available : ,.2f } HNS, Total: { total : ,.2f } HNS " )
2025-01-29 14:36:04 +11:00
return { " result " : balances }
2025-02-04 15:12:07 +11:00
def expiring ( params , authentication ) :
days = params [ ' days ' ]
if days == None or days == ' ' :
days = 30
else :
days = int ( days )
wallets = account . listWallets ( )
expiring = ' '
for wallet in wallets :
walletExpiring = [ ]
domains = account . getDomains ( wallet )
for domain in domains :
if ' stats ' in domain and ' daysUntilExpire ' in domain [ ' stats ' ] :
if domain [ ' stats ' ] [ ' daysUntilExpire ' ] < = days :
walletExpiring . append ( { " domain " : domain [ ' name ' ] , " wallet " : wallet , " days " : domain [ ' stats ' ] [ ' daysUntilExpire ' ] } )
if len ( walletExpiring ) > 0 :
2025-02-04 15:57:38 +11:00
expiring + = f " <div class= ' row ' ><div class= ' col-md-12 ' ><h3>Expiring Domains in { wallet } </h3><table class= ' table table-striped ' ><thead><tr><th>Domain</th><th>Days Until Expiration</th></tr></thead><tbody> "
2025-02-04 15:12:07 +11:00
for domain in walletExpiring :
expiring + = f " <tr><td> { domain [ ' domain ' ] } </td><td> { domain [ ' days ' ] } </td></tr> "
expiring + = " </tbody></table></div></div> "
return { " result " : expiring }
def export ( params , authentication ) :
wallets = account . listWallets ( )
result = " name,expiry,value,wallet "
for wallet in wallets :
domains = account . getDomains ( wallet )
for domain in domains :
if ' stats ' in domain and ' renewalPeriodEnd ' in domain [ ' stats ' ] :
result + = f " \n { domain [ ' name ' ] } , { domain [ ' stats ' ] [ ' renewalPeriodEnd ' ] } , { domain [ ' value ' ] / 1000000 } , { wallet } "
else :
result + = f " \n { domain [ ' name ' ] } ,N/A, { domain [ ' value ' ] / 1000000 } , { wallet } "
return { " result " : result }
2025-01-29 14:36:04 +11:00
def dash ( params , authentication ) :
with open ( " user_data/multiwallet.json " , " r " ) as f :
multiwallet = json . load ( f )
if multiwallet [ ' enabled ' ] == False :
return { " result " : None }
# Check time
currentTime = int ( time . time ( ) )
if currentTime - multiwallet [ ' lastUpdate ' ] < 60 * 10 :
return { " result " : f " Available: { multiwallet [ ' total ' ] [ ' available ' ] : ,.2f } HNS<br>Total: { multiwallet [ ' total ' ] [ ' total ' ] : ,.2f } HNS " }
wallets = account . listWallets ( )
total = 0
available = 0
for wallet in wallets :
info = account . getBalance ( wallet )
total + = info [ ' total ' ]
available + = info [ ' available ' ]
multiwallet [ ' total ' ] = {
" available " : available ,
" total " : total
}
multiwallet [ ' lastUpdate ' ] = currentTime
with open ( " user_data/multiwallet.json " , " w " ) as f :
json . dump ( multiwallet , f )
return { " result " : f " Available: { available : ,.2f } HNS<br>Total: { total : ,.2f } HNS " }
2025-01-29 14:46:21 +11:00
def domains ( params , authentication ) :
wallets = account . listWallets ( )
domains = [ ]
total = 0
for wallet in wallets :
numDomains = len ( account . getDomains ( wallet ) )
domains . append ( f " { wallet } : { numDomains } " )
total + = numDomains
domains . append ( f " Total: { total } " )
return { " result " : domains }
2025-01-29 14:36:04 +11:00
def enable ( params , authentication ) :
with open ( " user_data/multiwallet.json " , " r " ) as f :
multiwallet = json . load ( f )
multiwallet [ ' enabled ' ] = True
with open ( " user_data/multiwallet.json " , " w " ) as f :
json . dump ( multiwallet , f )
return { " result " : " Success " }
def disable ( params , authentication ) :
with open ( " user_data/multiwallet.json " , " r " ) as f :
multiwallet = json . load ( f )
multiwallet [ ' enabled ' ] = False
with open ( " user_data/multiwallet.json " , " w " ) as f :
json . dump ( multiwallet , f )
return { " result " : " Success " }