From baca2845e147d607d8e4d6789849c035695d3427 Mon Sep 17 00:00:00 2001 From: Nathan Woodburn Date: Tue, 4 Feb 2025 15:12:07 +1100 Subject: [PATCH] feat: Add get expiring domains and export all domains --- multi-wallet.py | 68 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) diff --git a/multi-wallet.py b/multi-wallet.py index 5897ed9..89347d0 100644 --- a/multi-wallet.py +++ b/multi-wallet.py @@ -39,6 +39,38 @@ functions = { } } }, + "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" + } + } + }, "dash": { "name": "Dashboard widget", "type": "dashboard", @@ -102,6 +134,42 @@ def balance(params, authentication): return {"result": balances} +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: + expiring += f"

{wallet} Expiring Domains

" + for domain in walletExpiring: + expiring += f"" + expiring += "
DomainDays Until Expiration
{domain['domain']}{domain['days']}
" + 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} + def dash(params, authentication): with open("user_data/multiwallet.json", "r") as f: multiwallet = json.load(f)