diff --git a/pybitblock/PyBlock.py b/pybitblock/PyBlock.py index 1096b39..81fb9f9 100644 --- a/pybitblock/PyBlock.py +++ b/pybitblock/PyBlock.py @@ -2268,35 +2268,81 @@ def lightningnetworkLOCAL(): lsd0 = str(lsd) alias = json.loads(lsd0) - print("""\t\t + from rich.columns import Columns + from rich.text import Text as RText + + header = """\t\t \033[1;37;40m{}\033[0;37;40m: \033[1;31;40mPyBLOCK\033[0;37;40m \033[1;37;40mNode\033[0;37;40m: \033[1;33;40m{}\033[0;37;40m \033[1;37;40mBlock\033[0;37;40m: \033[1;32;40m{}\033[0;37;40m - \033[1;37;40mVersion\033[0;37;40m: {} + \033[1;37;40mVersion\033[0;37;40m: {}""".format(n, alias['alias'], d['blocks'], version) + print(header) - \u001b[33;1mA.\033[0;37;40m Lncli Console - \u001b[33;1mB.\033[0;37;40m New Invoice - \u001b[33;1mC.\033[0;37;40m Pay Invoice - \u001b[33;1mD.\033[0;37;40m Make a KeySend Payment - \u001b[33;1mE.\033[0;37;40m New Bitcoin Address - \u001b[33;1mF.\033[0;37;40m List Invoices - \u001b[33;1mG.\033[0;37;40m Channel Balance - \u001b[33;1mH.\033[0;37;40m Show Channels - \u001b[33;1mI.\033[0;37;40m Rebalance Channel - \u001b[33;1mJ.\033[0;37;40m Show Peers - \u001b[33;1mK.\033[0;37;40m Connect Peers - \u001b[33;1mL.\033[0;37;40m Onchain Balance - \u001b[33;1mM.\033[0;37;40m List Onchain Transactions - \u001b[33;1mN.\033[0;37;40m Get Node Info - \u001b[33;1mO.\033[0;37;40m Get Network Information - \u001b[33;1mP.\033[0;37;40m PyChat - \u001b[33;1mZ.\033[0;37;40m Stats - \u001b[33;1mT.\033[0;37;40m Ranking - \u001b[33;1mQ.\033[0;37;40m LNBits List LNURL \033[3;35;40m{lnbitspaid}\033[0;37;40m - \u001b[33;1mS.\033[0;37;40m LNBits Create LNURL \033[3;35;40m{lnbitspaid}\033[0;37;40m - \u001b[33;1mEnter.\033[0;37;40m Return - \n\n\x1b[?25h""".format(n, alias['alias'], d['blocks'], version, lnbitspaid = "UNLOCKED" if os.path.isfile("lnbitSN.conf") else "LOCKED")) - lightningnetworkLOCALcontrol(input("\033[1;32;40mSelect option: \033[0;37;40m")) + lnbitspaid = "UNLOCKED" if os.path.isfile("lnbitSN.conf") else "LOCKED" + + # Invoices section + col1 = RText() + col1.append(" INVOICES\n", style="bold yellow underline") + col1.append(" A. ", style="bold yellow") + col1.append("Lncli Console\n", style="white") + col1.append(" B. ", style="bold yellow") + col1.append("New Invoice\n", style="white") + col1.append(" C. ", style="bold yellow") + col1.append("Pay Invoice\n", style="white") + col1.append(" D. ", style="bold yellow") + col1.append("Make a KeySend Payment\n", style="white") + col1.append(" F. ", style="bold yellow") + col1.append("List Invoices\n", style="white") + + # Channels section + col2 = RText() + col2.append(" CHANNELS\n", style="bold cyan underline") + col2.append(" G. ", style="bold cyan") + col2.append("Channel Balance\n", style="white") + col2.append(" H. ", style="bold cyan") + col2.append("Show Channels\n", style="white") + col2.append(" I. ", style="bold cyan") + col2.append("Rebalance Channel\n", style="white") + col2.append(" E. ", style="bold cyan") + col2.append("New Bitcoin Address\n", style="white") + col2.append(" L. ", style="bold cyan") + col2.append("Onchain Balance\n", style="white") + col2.append(" M. ", style="bold cyan") + col2.append("List Onchain Transactions\n", style="white") + + # Node section + col3 = RText() + col3.append(" NODE\n", style="bold green underline") + col3.append(" N. ", style="bold green") + col3.append("Get Node Info\n", style="white") + col3.append(" O. ", style="bold green") + col3.append("Get Network Information\n", style="white") + col3.append(" J. ", style="bold green") + col3.append("Show Peers\n", style="white") + col3.append(" K. ", style="bold green") + col3.append("Connect Peers\n", style="white") + col3.append(" Z. ", style="bold green") + col3.append("Stats\n", style="white") + col3.append(" T. ", style="bold green") + col3.append("Ranking\n", style="white") + + # Chat & LNBits section + col4 = RText() + col4.append(" CHAT & LNBITS\n", style="bold magenta underline") + col4.append(" P. ", style="bold magenta") + col4.append("PyChat\n", style="white") + col4.append(" Q. ", style="bold magenta") + col4.append(f"LNBits List LNURL {lnbitspaid}\n", style="white") + col4.append(" S. ", style="bold magenta") + col4.append(f"LNBits Create LNURL {lnbitspaid}\n", style="white") + + rich_console.print() + rich_console.print(Columns([col1, col2, col3, col4], padding=(0, 2), expand=False)) + rich_console.print() + rich_console.print(" [dim]Enter.[/dim] [yellow]Return[/yellow]") + rich_console.print() + print("\x1b[?25h") + lightningnetworkLOCALcontrol(rich_prompt("Select option")) def chatConn(): clear() @@ -2431,28 +2477,67 @@ def lightningnetworkREMOTE(): r = requests.get(url, headers=headers, verify=cert_path) alias = r.json() - print("""\t\t + from rich.columns import Columns + from rich.text import Text as RText + + header = """\t\t \033[1;37;40m{}\033[0;37;40m: \033[1;31;40mPyBLOCK\033[0;37;40m \033[1;37;40mNode\033[0;37;40m: \033[1;33;40m{}\033[0;37;40m \033[1;37;40mBlock\033[0;37;40m: \033[1;32;40m{}\033[0;37;40m - \033[1;37;40mVersion\033[0;37;40m: {} + \033[1;37;40mVersion\033[0;37;40m: {}""".format(a, alias['alias'], d['blocks'], version) + print(header) - \u001b[33;1mA.\033[0;37;40m New Invoice - \u001b[33;1mB.\033[0;37;40m Pay Invoice - \u001b[33;1mC.\033[0;37;40m New Bitcoin Address - \u001b[33;1mD.\033[0;37;40m List Invoices - \u001b[33;1mE.\033[0;37;40m Channel Balance - \u001b[33;1mF.\033[0;37;40m Show Channels - \u001b[33;1mG.\033[0;37;40m Onchain Balance - \u001b[33;1mH.\033[0;37;40m List Onchain Transactions - \u001b[33;1mI.\033[0;37;40m Get Node Info - \u001b[33;1mZ.\033[0;37;40m Stats - \u001b[33;1mT.\033[0;37;40m Ranking - \u001b[33;1mQ.\033[0;37;40m LNBits List LNURL \033[3;35;40m{lnbitspaid}\033[0;37;40m - \u001b[33;1mS.\033[0;37;40m LNBits Create LNURL \033[3;35;40m{lnbitspaid}\033[0;37;40m - \u001b[33;1mEnter.\033[0;37;40m Return - \n\n\x1b[?25h""".format(a, alias['alias'], d['blocks'], version , lnbitspaid = "UNLOCKED" if os.path.isfile("lnbitSN.conf") else "LOCKED")) - lightningnetworkREMOTEcontrol(input("\033[1;32;40mSelect option: \033[0;37;40m")) + lnbitspaid = "UNLOCKED" if os.path.isfile("lnbitSN.conf") else "LOCKED" + + # Invoices section + col1 = RText() + col1.append(" INVOICES\n", style="bold yellow underline") + col1.append(" A. ", style="bold yellow") + col1.append("New Invoice\n", style="white") + col1.append(" B. ", style="bold yellow") + col1.append("Pay Invoice\n", style="white") + col1.append(" D. ", style="bold yellow") + col1.append("List Invoices\n", style="white") + + # Channels section + col2 = RText() + col2.append(" CHANNELS\n", style="bold cyan underline") + col2.append(" E. ", style="bold cyan") + col2.append("Channel Balance\n", style="white") + col2.append(" F. ", style="bold cyan") + col2.append("Show Channels\n", style="white") + col2.append(" C. ", style="bold cyan") + col2.append("New Bitcoin Address\n", style="white") + col2.append(" G. ", style="bold cyan") + col2.append("Onchain Balance\n", style="white") + col2.append(" H. ", style="bold cyan") + col2.append("List Onchain Transactions\n", style="white") + + # Node section + col3 = RText() + col3.append(" NODE\n", style="bold green underline") + col3.append(" I. ", style="bold green") + col3.append("Get Node Info\n", style="white") + col3.append(" Z. ", style="bold green") + col3.append("Stats\n", style="white") + col3.append(" T. ", style="bold green") + col3.append("Ranking\n", style="white") + + # LNBits section + col4 = RText() + col4.append(" LNBITS\n", style="bold magenta underline") + col4.append(" Q. ", style="bold magenta") + col4.append(f"LNBits List LNURL {lnbitspaid}\n", style="white") + col4.append(" S. ", style="bold magenta") + col4.append(f"LNBits Create LNURL {lnbitspaid}\n", style="white") + + rich_console.print() + rich_console.print(Columns([col1, col2, col3, col4], padding=(0, 2), expand=False)) + rich_console.print() + rich_console.print(" [dim]Enter.[/dim] [yellow]Return[/yellow]") + rich_console.print() + print("\x1b[?25h") + lightningnetworkREMOTEcontrol(rich_prompt("Select option")) def APIMenuLOCAL(): clear() @@ -2482,35 +2567,83 @@ def APIMenuLOCAL(): url = f'https://{lndconnectload["ip_port"]}/v1/getinfo' r = requests.get(url, headers=headers, verify=cert_path) alias = r.json() - print("""\t\t + from rich.columns import Columns + from rich.text import Text as RText + + header = """\t\t \033[1;37;40m{}\033[0;37;40m: \033[1;31;40mPyBLOCK\033[0;37;40m \033[1;37;40mNode\033[0;37;40m: \033[1;33;40m{}\033[0;37;40m \033[1;37;40mBlock\033[0;37;40m: \033[1;32;40m{}\033[0;37;40m - \033[1;37;40mVersion\033[0;37;40m: {} + \033[1;37;40mVersion\033[0;37;40m: {}""".format(n if path['bitcoincli'] else a, alias['alias'], d['blocks'], version) + print(header) - \033[1;32;40mA.\033[0;37;40m TippinMe FREE - \033[1;32;40mB.\033[0;37;40m Tallycoin FREE - \033[1;32;40mC.\033[0;37;40m Mempool FREE - \033[1;32;40mD.\033[0;37;40m CoinGecko FREE - \033[1;32;40mE.\033[0;37;40m Rate.sx FREE - \033[1;32;40mF.\033[0;37;40m BWT FREE - \033[1;32;40mG.\033[0;37;40m LNBits \033[3;35;40m{lnbitspaid}\033[0;37;40m - \033[1;32;40mH.\033[0;37;40m LNPay \033[3;35;40m{lnpaypaid}\033[0;37;40m - \033[1;32;40mI.\033[0;37;40m OpenNode \033[3;35;40m{opennodepaid}\033[0;37;40m - \033[1;32;40mJ.\033[0;37;40m SatNode FREE - \033[1;32;40mK.\033[0;37;40m Weather FREE - \033[1;32;40mL.\033[0;37;40m Arcade FREE - \033[1;32;40mM.\033[0;37;40m Whale Alert FREE - \033[1;32;40mN.\033[0;37;40m Nostr FREE - \033[1;32;40mQ.\033[0;37;40m Ocean FREE - \033[1;32;40mS.\033[0;37;40m Braiins Pool FREE - \033[1;32;40mT.\033[0;37;40m TinySeed FREE - \033[1;32;40mU.\033[0;37;40m UTXOracle FREE - \033[1;32;40mW.\033[0;37;40m CK Pool FREE - \033[1;32;40mZ.\033[0;37;40m PyBLOCK Pool FREE - \u001b[33;1mEnter.\033[0;37;40m Return - \n\n\x1b[?25h""".format(n if path['bitcoincli'] else a , alias['alias'], d['blocks'], version ,lnbitspaid = "PAID" if os.path.isfile("lnbitSN.conf") else "PREMIUM", lnpaypaid = "PAID" if os.path.isfile("lnpaySN.conf") else "PREMIUM", opennodepaid = "PAID" if os.path.isfile("opennodeSN.conf") else "PREMIUM")) - platfformsLOCALcontrol(input("\033[1;32;40mSelect option: \033[0;37;40m")) + lnbitspaid = "PAID" if os.path.isfile("lnbitSN.conf") else "PREMIUM" + lnpaypaid = "PAID" if os.path.isfile("lnpaySN.conf") else "PREMIUM" + opennodepaid = "PAID" if os.path.isfile("opennodeSN.conf") else "PREMIUM" + + # Lightning APIs section + col1 = RText() + col1.append(" LIGHTNING APIS\n", style="bold cyan underline") + col1.append(" G. ", style="bold cyan") + col1.append(f"LNBits {lnbitspaid}\n", style="white") + col1.append(" H. ", style="bold cyan") + col1.append(f"LNPay {lnpaypaid}\n", style="white") + col1.append(" F. ", style="bold cyan") + col1.append("BWT FREE\n", style="white") + col1.append(" D. ", style="bold cyan") + col1.append("CoinGecko FREE\n", style="white") + col1.append(" L. ", style="bold cyan") + col1.append("Arcade FREE\n", style="white") + + # Payment section + col2 = RText() + col2.append(" PAYMENT\n", style="bold green underline") + col2.append(" I. ", style="bold green") + col2.append(f"OpenNode {opennodepaid}\n", style="white") + col2.append(" A. ", style="bold green") + col2.append("TippinMe FREE\n", style="white") + col2.append(" B. ", style="bold green") + col2.append("Tallycoin FREE\n", style="white") + col2.append(" M. ", style="bold green") + col2.append("Whale Alert FREE\n", style="white") + col2.append(" T. ", style="bold green") + col2.append("TinySeed FREE\n", style="white") + + # Data & Feeds section + col3 = RText() + col3.append(" DATA & FEEDS\n", style="bold yellow underline") + col3.append(" K. ", style="bold yellow") + col3.append("Weather FREE\n", style="white") + col3.append(" E. ", style="bold yellow") + col3.append("Rate.sx FREE\n", style="white") + col3.append(" N. ", style="bold yellow") + col3.append("Nostr FREE\n", style="white") + col3.append(" U. ", style="bold yellow") + col3.append("UTXOracle FREE\n", style="white") + + # Tools & Mining section + col4 = RText() + col4.append(" TOOLS & MINING\n", style="bold rgb(255,165,0) underline") + col4.append(" J. ", style="bold rgb(255,165,0)") + col4.append("SatNode FREE\n", style="white") + col4.append(" C. ", style="bold rgb(255,165,0)") + col4.append("Mempool FREE\n", style="white") + col4.append(" Q. ", style="bold rgb(255,165,0)") + col4.append("Ocean FREE\n", style="white") + col4.append(" S. ", style="bold rgb(255,165,0)") + col4.append("Braiins Pool FREE\n", style="white") + col4.append(" W. ", style="bold rgb(255,165,0)") + col4.append("CK Pool FREE\n", style="white") + col4.append(" Z. ", style="bold rgb(255,165,0)") + col4.append("PyBLOCK Pool FREE\n", style="white") + + rich_console.print() + rich_console.print(Columns([col1, col2, col3, col4], padding=(0, 2), expand=False)) + rich_console.print() + rich_console.print(" [dim]Enter.[/dim] [yellow]Return[/yellow]") + rich_console.print() + print("\x1b[?25h") + platfformsLOCALcontrol(rich_prompt("Select option")) def APIMenuLOCALOnchainONLY(): clear() @@ -2535,36 +2668,86 @@ def APIMenuLOCALOnchainONLY(): url = f'https://{lndconnectload["ip_port"]}/v1/getinfo' r = requests.get(url, headers=headers, verify=cert_path) alias = r.json() - print("""\t\t + from rich.columns import Columns + from rich.text import Text as RText + + header = """\t\t \033[1;37;40m{}\033[0;37;40m: \033[1;31;40mPyBLOCK\033[0;37;40m \033[1;37;40mBlock\033[0;37;40m: \033[1;32;40m{}\033[0;37;40m - \033[1;37;40mVersion\033[0;37;40m: {} + \033[1;37;40mVersion\033[0;37;40m: {}""".format(n if path['bitcoincli'] else a, d['blocks'], version) + print(header) - \033[1;32;40mA.\033[0;37;40m TippinMe FREE - \033[1;32;40mB.\033[0;37;40m Tallycoin FREE - \033[1;32;40mC.\033[0;37;40m Mempool FREE - \033[1;32;40mD.\033[0;37;40m CoinGecko FREE - \033[1;32;40mE.\033[0;37;40m Rate.sx FREE - \033[1;32;40mF.\033[0;37;40m BWT FREE - \033[1;32;40mG.\033[0;37;40m LNBits \033[3;35;40m{lnbitspaid}\033[0;37;40m - \033[1;32;40mH.\033[0;37;40m LNPay \033[3;35;40m{lnpaypaid}\033[0;37;40m - \033[1;32;40mI.\033[0;37;40m OpenNode \033[3;35;40m{opennodepaid}\033[0;37;40m - \033[1;32;40mJ.\033[0;37;40m SatNode FREE - \033[1;32;40mK.\033[0;37;40m Weather FREE - \033[1;32;40mL.\033[0;37;40m Arcade FREE - \033[1;32;40mM.\033[0;37;40m Whale Alert FREE - \033[1;32;40mN.\033[0;37;40m Nostr FREE - \033[1;32;40mP.\033[0;37;40m PhoenixD FREE - \033[1;32;40mQ.\033[0;37;40m Ocean Pool FREE - \033[1;32;40mR.\033[0;37;40m Luxor Pool FREE - \033[1;32;40mS.\033[0;37;40m Braiins Pool FREE - \033[1;32;40mT.\033[0;37;40m TinySeed FREE - \033[1;32;40mU.\033[0;37;40m UTXOracle FREE - \033[1;32;40mW.\033[0;37;40m CK Pool FREE - \033[1;32;40mZ.\033[0;37;40m PyBLOCK Pool FREE - \u001b[33;1mEnter.\033[0;37;40m Return - \n\n\x1b[?25h""".format(n if path['bitcoincli'] else a, d['blocks'], version ,lnbitspaid = "PAID" if os.path.isfile("lnbitSN.conf") else "PREMIUM", lnpaypaid = "PAID" if os.path.isfile("lnpaySN.conf") else "PREMIUM", opennodepaid = "PAID" if os.path.isfile("opennodeSN.conf") else "PREMIUM")) - platfformsLOCALcontrolOnchainONLY(input("\033[1;32;40mSelect option: \033[0;37;40m")) + lnbitspaid = "PAID" if os.path.isfile("lnbitSN.conf") else "PREMIUM" + lnpaypaid = "PAID" if os.path.isfile("lnpaySN.conf") else "PREMIUM" + opennodepaid = "PAID" if os.path.isfile("opennodeSN.conf") else "PREMIUM" + + # Lightning APIs section + col1 = RText() + col1.append(" LIGHTNING APIS\n", style="bold cyan underline") + col1.append(" G. ", style="bold cyan") + col1.append(f"LNBits {lnbitspaid}\n", style="white") + col1.append(" H. ", style="bold cyan") + col1.append(f"LNPay {lnpaypaid}\n", style="white") + col1.append(" F. ", style="bold cyan") + col1.append("BWT FREE\n", style="white") + col1.append(" D. ", style="bold cyan") + col1.append("CoinGecko FREE\n", style="white") + col1.append(" L. ", style="bold cyan") + col1.append("Arcade FREE\n", style="white") + col1.append(" P. ", style="bold cyan") + col1.append("PhoenixD FREE\n", style="white") + + # Payment section + col2 = RText() + col2.append(" PAYMENT\n", style="bold green underline") + col2.append(" I. ", style="bold green") + col2.append(f"OpenNode {opennodepaid}\n", style="white") + col2.append(" A. ", style="bold green") + col2.append("TippinMe FREE\n", style="white") + col2.append(" B. ", style="bold green") + col2.append("Tallycoin FREE\n", style="white") + col2.append(" M. ", style="bold green") + col2.append("Whale Alert FREE\n", style="white") + col2.append(" T. ", style="bold green") + col2.append("TinySeed FREE\n", style="white") + + # Data & Feeds section + col3 = RText() + col3.append(" DATA & FEEDS\n", style="bold yellow underline") + col3.append(" K. ", style="bold yellow") + col3.append("Weather FREE\n", style="white") + col3.append(" E. ", style="bold yellow") + col3.append("Rate.sx FREE\n", style="white") + col3.append(" N. ", style="bold yellow") + col3.append("Nostr FREE\n", style="white") + col3.append(" U. ", style="bold yellow") + col3.append("UTXOracle FREE\n", style="white") + + # Tools & Mining section + col4 = RText() + col4.append(" TOOLS & MINING\n", style="bold rgb(255,165,0) underline") + col4.append(" J. ", style="bold rgb(255,165,0)") + col4.append("SatNode FREE\n", style="white") + col4.append(" C. ", style="bold rgb(255,165,0)") + col4.append("Mempool FREE\n", style="white") + col4.append(" Q. ", style="bold rgb(255,165,0)") + col4.append("Ocean Pool FREE\n", style="white") + col4.append(" R. ", style="bold rgb(255,165,0)") + col4.append("Luxor Pool FREE\n", style="white") + col4.append(" S. ", style="bold rgb(255,165,0)") + col4.append("Braiins Pool FREE\n", style="white") + col4.append(" W. ", style="bold rgb(255,165,0)") + col4.append("CK Pool FREE\n", style="white") + col4.append(" Z. ", style="bold rgb(255,165,0)") + col4.append("PyBLOCK Pool FREE\n", style="white") + + rich_console.print() + rich_console.print(Columns([col1, col2, col3, col4], padding=(0, 2), expand=False)) + rich_console.print() + rich_console.print(" [dim]Enter.[/dim] [yellow]Return[/yellow]") + rich_console.print() + print("\x1b[?25h") + platfformsLOCALcontrolOnchainONLY(rich_prompt("Select option")) def decodeHex(): clear() diff --git a/pybitblock/SPV/spvblock.py b/pybitblock/SPV/spvblock.py index 4d92712..317da27 100644 --- a/pybitblock/SPV/spvblock.py +++ b/pybitblock/SPV/spvblock.py @@ -38,7 +38,7 @@ from shared.display import clear, close, sysinfo, rectangle, delay_print from shared.formatting import get_ansi_color_code, get_color from shared.ui import status_bar, show_error, loading from shared.rich_ui import ( - console, rich_status_bar, rich_header, rich_menu, rich_error, rich_prompt + console as rich_console, rich_status_bar, rich_header, rich_menu, rich_error, rich_prompt ) logger = get_logger("SPV") @@ -4658,33 +4658,73 @@ def bitcoincoremenuLOCAL(): di = json.loads(nn) a = di b = str(a) - print("""\t\t + + from rich.columns import Columns + from rich.text import Text as RText + + header = """\t\t \033[1;37;40m{}\033[0;37;40m: \033[1;31;40mPyBLOCK\033[0;37;40m \033[1;37;40mBlock\033[0;37;40m: \033[1;32;40m{}\033[0;37;40m - \033[1;37;40mVersion\033[0;37;40m: {} + \033[1;37;40mVersion\033[0;37;40m: {}""".format(n, b, version) + print(header) - \u001b[38;5;202mA.\033[0;37;40m Bitcoin-cli Console - \u001b[38;5;202mB.\033[0;37;40m Show Genesis Block - \u001b[38;5;202mC.\033[0;37;40m Show Blockchain Information - \u001b[38;5;202mD.\033[0;37;40m Run the Numbers - \u001b[38;5;202mE.\033[0;37;40m Decode Block - \u001b[38;5;202mF.\033[0;37;40m Show QR from a Bitcoin Address - \u001b[38;5;202mG.\033[0;37;40m Show Merkle Proof from a Tx - \u001b[38;5;202mH.\033[0;37;40m Miscellaneous - \u001b[38;5;202mI.\033[0;37;40m ColdCore - \u001b[38;5;202mJ.\033[0;37;40m Whitepaper - \u001b[38;5;202mM.\033[0;37;40m Moscow Time - \u001b[38;5;202mO.\033[0;37;40m OP_RETURN - \u001b[38;5;202mZ.\033[0;37;40m Stats - \u001b[38;5;202mQ.\033[0;37;40m Hashrate - \u001b[38;5;202mU.\033[0;37;40m Unconfirmed Txs - \u001b[38;5;202mS.\033[0;37;40m Mempool - \u001b[38;5;202mPPC.\033[0;37;40m PyBLOCK PooL Computer - \u001b[38;5;202mPPR.\033[0;37;40m PyBLOCK PooL Raspberry - \u001b[38;5;202mVG.\033[0;37;40m Vanity Generator - \u001b[33;1mEnter.\033[0;37;40m Return - \n\n\x1b[?25h""".format(n,b, version )) - bitcoincoremenuLOCALcontrolA(input("\033[1;32;40mSelect option: \033[0;37;40m")) + col1 = RText() + col1.append(" BLOCKCHAIN\n", style="bold rgb(255,102,0) underline") + col1.append(" A. ", style="bold rgb(255,102,0)") + col1.append("Console\n", style="white") + col1.append(" B. ", style="bold rgb(255,102,0)") + col1.append("Genesis Block\n", style="white") + col1.append(" C. ", style="bold rgb(255,102,0)") + col1.append("Blockchain Info\n", style="white") + col1.append(" D. ", style="bold rgb(255,102,0)") + col1.append("Run the Numbers\n", style="white") + col1.append(" M. ", style="bold rgb(255,102,0)") + col1.append("Moscow Time\n", style="white") + col1.append(" J. ", style="bold rgb(255,102,0)") + col1.append("Whitepaper\n", style="white") + + col2 = RText() + col2.append(" MONITORING\n", style="bold cyan underline") + col2.append(" S. ", style="bold cyan") + col2.append("Mempool\n", style="white") + col2.append(" U. ", style="bold cyan") + col2.append("Unconfirmed Txs\n", style="white") + + col3 = RText() + col3.append(" TOOLS\n", style="bold green underline") + col3.append(" E. ", style="bold green") + col3.append("Decode Block\n", style="white") + col3.append(" F. ", style="bold green") + col3.append("QR from Address\n", style="white") + col3.append(" G. ", style="bold green") + col3.append("Merkle Proof\n", style="white") + col3.append(" O. ", style="bold green") + col3.append("OP_RETURN\n", style="white") + col3.append(" H. ", style="bold green") + col3.append("Miscellaneous\n", style="white") + col3.append(" I. ", style="bold green") + col3.append("ColdCore\n", style="white") + col3.append(" VG. ", style="bold green") + col3.append("Vanity Generator\n", style="white") + + col4 = RText() + col4.append(" STATS & MINING\n", style="bold yellow underline") + col4.append(" Z. ", style="bold yellow") + col4.append("Stats\n", style="white") + col4.append(" Q. ", style="bold yellow") + col4.append("Hashrate\n", style="white") + col4.append(" PPC.", style="bold yellow") + col4.append(" Pool Computer\n", style="white") + col4.append(" PPR.", style="bold yellow") + col4.append(" Pool Raspberry\n", style="white") + + rich_console.print() + rich_console.print(Columns([col1, col2, col3, col4], padding=(0, 2), expand=False)) + rich_console.print() + rich_console.print(" [dim]Enter.[/dim] [yellow]Return[/yellow]") + rich_console.print() + print("\x1b[?25h") + bitcoincoremenuLOCALcontrolA(rich_prompt("Select option")) def bitcoincoremenuLOCALOPRETURN(): clear() @@ -4720,34 +4760,78 @@ def lightningnetworkLOCAL(): di = json.loads(nn) a = di b = str(a) - print("""\t\t + lnbitspaid = "UNLOCKED" if os.path.isfile("lnbitSN.conf") else "LOCKED" + + from rich.columns import Columns + from rich.text import Text as RText + + header = """\t\t \033[1;37;40m{}\033[0;37;40m: \033[1;31;40mPyBLOCK\033[0;37;40m \033[1;37;40mBlock\033[0;37;40m: \033[1;32;40m{}\033[0;37;40m - \033[1;37;40mVersion\033[0;37;40m: {} + \033[1;37;40mVersion\033[0;37;40m: {}""".format(n, b, version) + print(header) - \u001b[33;1mA.\033[0;37;40m Lncli Console - \u001b[33;1mB.\033[0;37;40m New Invoice - \u001b[33;1mC.\033[0;37;40m Pay Invoice - \u001b[33;1mD.\033[0;37;40m Make a KeySend Payment - \u001b[33;1mE.\033[0;37;40m New Bitcoin Address - \u001b[33;1mF.\033[0;37;40m List Invoices - \u001b[33;1mG.\033[0;37;40m Channel Balance - \u001b[33;1mH.\033[0;37;40m Show Channels - \u001b[33;1mI.\033[0;37;40m Rebalance Channel - \u001b[33;1mJ.\033[0;37;40m Show Peers - \u001b[33;1mK.\033[0;37;40m Connect Peers - \u001b[33;1mL.\033[0;37;40m Onchain Balance - \u001b[33;1mM.\033[0;37;40m List Onchain Transactions - \u001b[33;1mN.\033[0;37;40m Get Node Info - \u001b[33;1mO.\033[0;37;40m Get Network Information - \u001b[33;1mP.\033[0;37;40m PyChat - \u001b[33;1mZ.\033[0;37;40m Stats - \u001b[33;1mT.\033[0;37;40m Ranking - \u001b[33;1mQ.\033[0;37;40m LNBits List LNURL \033[3;35;40m{lnbitspaid}\033[0;37;40m - \u001b[33;1mS.\033[0;37;40m LNBits Create LNURL \033[3;35;40m{lnbitspaid}\033[0;37;40m - \u001b[33;1mEnter.\033[0;37;40m Return - \n\n\x1b[?25h""".format(n,b, version , lnbitspaid = "UNLOCKED" if os.path.isfile("lnbitSN.conf") else "LOCKED")) - lightningnetworkLOCALcontrol(input("\033[1;32;40mSelect option: \033[0;37;40m")) + col1 = RText() + col1.append(" PAYMENTS\n", style="bold yellow underline") + col1.append(" B. ", style="bold yellow") + col1.append("New Invoice\n", style="white") + col1.append(" C. ", style="bold yellow") + col1.append("Pay Invoice\n", style="white") + col1.append(" D. ", style="bold yellow") + col1.append("KeySend Payment\n", style="white") + col1.append(" F. ", style="bold yellow") + col1.append("List Invoices\n", style="white") + col1.append(" E. ", style="bold yellow") + col1.append("New BTC Address\n", style="white") + + col2 = RText() + col2.append(" CHANNELS & PEERS\n", style="bold cyan underline") + col2.append(" G. ", style="bold cyan") + col2.append("Channel Balance\n", style="white") + col2.append(" H. ", style="bold cyan") + col2.append("Show Channels\n", style="white") + col2.append(" I. ", style="bold cyan") + col2.append("Rebalance Channel\n", style="white") + col2.append(" J. ", style="bold cyan") + col2.append("Show Peers\n", style="white") + col2.append(" K. ", style="bold cyan") + col2.append("Connect Peers\n", style="white") + + col3 = RText() + col3.append(" NODE & NETWORK\n", style="bold green underline") + col3.append(" A. ", style="bold green") + col3.append("Lncli Console\n", style="white") + col3.append(" L. ", style="bold green") + col3.append("Onchain Balance\n", style="white") + col3.append(" M. ", style="bold green") + col3.append("Onchain Txs\n", style="white") + col3.append(" N. ", style="bold green") + col3.append("Node Info\n", style="white") + col3.append(" O. ", style="bold green") + col3.append("Network Info\n", style="white") + + col4 = RText() + col4.append(" TOOLS & STATS\n", style="bold rgb(255,102,0) underline") + col4.append(" P. ", style="bold rgb(255,102,0)") + col4.append("PyChat\n", style="white") + col4.append(" Z. ", style="bold rgb(255,102,0)") + col4.append("Stats\n", style="white") + col4.append(" T. ", style="bold rgb(255,102,0)") + col4.append("Ranking\n", style="white") + col4.append(" Q. ", style="bold rgb(255,102,0)") + col4.append("LNBits List LNURL ", style="white") + col4.append(lnbitspaid + "\n", style="italic magenta") + col4.append(" S. ", style="bold rgb(255,102,0)") + col4.append("LNBits Create LNURL ", style="white") + col4.append(lnbitspaid + "\n", style="italic magenta") + + rich_console.print() + rich_console.print(Columns([col1, col2, col3, col4], padding=(0, 2), expand=False)) + rich_console.print() + rich_console.print(" [dim]Enter.[/dim] [yellow]Return[/yellow]") + rich_console.print() + print("\x1b[?25h") + lightningnetworkLOCALcontrol(rich_prompt("Select option")) def chatConn(): clear() @@ -4856,38 +4940,89 @@ def APIMenuLOCAL(): di = json.loads(nn) a = di b = str(a) - print("""\t\t + lnbitspaid = "PAID" if os.path.isfile("lnbitSN.conf") else "PREMIUM" + lnpaypaid = "PAID" if os.path.isfile("lnpaySN.conf") else "PREMIUM" + opennodepaid = "PAID" if os.path.isfile("opennodeSN.conf") else "PREMIUM" + + from rich.columns import Columns + from rich.text import Text as RText + + header = """\t\t \033[1;37;40m{}\033[0;37;40m: \033[1;31;40mPyBLOCK\033[0;37;40m \033[1;37;40mBlock\033[0;37;40m: \033[1;32;40m{}\033[0;37;40m - \033[1;37;40mVersion\033[0;37;40m: {} + \033[1;37;40mVersion\033[0;37;40m: {}""".format(n, b, version) + print(header) - \033[1;32;40mA.\033[0;37;40m TippinMe - \033[1;32;40mB.\033[0;37;40m Tallycoin - \033[1;32;40mC.\033[0;37;40m Mempool - \033[1;32;40mD.\033[0;37;40m CoinGecko - \033[1;32;40mE.\033[0;37;40m Rate.sx - \033[1;32;40mF.\033[0;37;40m BWT - \033[1;32;40mG.\033[0;37;40m LNBits \033[3;35;40m{lnbitspaid}\033[0;37;40m - \033[1;32;40mH.\033[0;37;40m LNPay \033[3;35;40m{lnpaypaid}\033[0;37;40m - \033[1;32;40mI.\033[0;37;40m OpenNode \033[3;35;40m{opennodepaid}\033[0;37;40m - \033[1;32;40mJ.\033[0;37;40m SatNode - \033[1;32;40mK.\033[0;37;40m Weather - \033[1;32;40mL.\033[0;37;40m Arcade - \033[1;32;40mM.\033[0;37;40m Whale Alert - \033[1;32;40mN.\033[0;37;40m Nostr - \033[1;32;40mO.\033[0;37;40m PhoenixD - \033[1;32;40mP.\033[0;37;40m Pickaxe - \033[1;32;40mQ.\033[0;37;40m Ocean Pool - \033[1;32;40mR.\033[0;37;40m Luxor Pool - \033[1;32;40mS.\033[0;37;40m Braiins Pool - \033[1;32;40mT.\033[0;37;40m TinySeed - \033[1;32;40mU.\033[0;37;40m UTXOracle - \033[1;32;40mW.\033[0;37;40m CK Pool - \033[1;32;40mX.\033[0;37;40m Template - \033[1;32;40mZ.\033[0;37;40m PyBLOCK Pool - \u001b[33;1mEnter.\033[0;37;40m Return - \n\n\x1b[?25h""".format(n,b, version ,lnbitspaid = "PAID" if os.path.isfile("lnbitSN.conf") else "PREMIUM", lnpaypaid = "PAID" if os.path.isfile("lnpaySN.conf") else "PREMIUM", opennodepaid = "PAID" if os.path.isfile("opennodeSN.conf") else "PREMIUM")) - platfformsLOCALcontrol(input("\033[1;32;40mSelect option: \033[0;37;40m")) + col1 = RText() + col1.append(" LIGHTNING APIS\n", style="bold cyan underline") + col1.append(" G. ", style="bold cyan") + col1.append("LNBits ", style="white") + col1.append(lnbitspaid + "\n", style="italic magenta") + col1.append(" H. ", style="bold cyan") + col1.append("LNPay ", style="white") + col1.append(lnpaypaid + "\n", style="italic magenta") + col1.append(" O. ", style="bold cyan") + col1.append("PhoenixD\n", style="white") + col1.append(" F. ", style="bold cyan") + col1.append("BWT\n", style="white") + + col2 = RText() + col2.append(" PAYMENT\n", style="bold green underline") + col2.append(" I. ", style="bold green") + col2.append("OpenNode ", style="white") + col2.append(opennodepaid + "\n", style="italic magenta") + col2.append(" A. ", style="bold green") + col2.append("TippinMe\n", style="white") + col2.append(" B. ", style="bold green") + col2.append("Tallycoin\n", style="white") + col2.append(" D. ", style="bold green") + col2.append("CoinGecko\n", style="white") + col2.append(" U. ", style="bold green") + col2.append("UTXOracle\n", style="white") + col2.append(" T. ", style="bold green") + col2.append("TinySeed\n", style="white") + + col3 = RText() + col3.append(" DATA & FEEDS\n", style="bold yellow underline") + col3.append(" E. ", style="bold yellow") + col3.append("Rate.sx\n", style="white") + col3.append(" K. ", style="bold yellow") + col3.append("Weather\n", style="white") + col3.append(" M. ", style="bold yellow") + col3.append("Whale Alert\n", style="white") + col3.append(" N. ", style="bold yellow") + col3.append("Nostr\n", style="white") + col3.append(" L. ", style="bold yellow") + col3.append("Arcade\n", style="white") + col3.append(" X. ", style="bold yellow") + col3.append("Template\n", style="white") + + col4 = RText() + col4.append(" TOOLS & MINING\n", style="bold rgb(255,102,0) underline") + col4.append(" C. ", style="bold rgb(255,102,0)") + col4.append("Mempool\n", style="white") + col4.append(" J. ", style="bold rgb(255,102,0)") + col4.append("SatNode\n", style="white") + col4.append(" P. ", style="bold rgb(255,102,0)") + col4.append("Pickaxe\n", style="white") + col4.append(" Q. ", style="bold rgb(255,102,0)") + col4.append("Ocean Pool\n", style="white") + col4.append(" R. ", style="bold rgb(255,102,0)") + col4.append("Luxor Pool\n", style="white") + col4.append(" S. ", style="bold rgb(255,102,0)") + col4.append("Braiins Pool\n", style="white") + col4.append(" W. ", style="bold rgb(255,102,0)") + col4.append("CK Pool\n", style="white") + col4.append(" Z. ", style="bold rgb(255,102,0)") + col4.append("PyBLOCK Pool\n", style="white") + + rich_console.print() + rich_console.print(Columns([col1, col2, col3, col4], padding=(0, 2), expand=False)) + rich_console.print() + rich_console.print(" [dim]Enter.[/dim] [yellow]Return[/yellow]") + rich_console.print() + print("\x1b[?25h") + platfformsLOCALcontrol(rich_prompt("Select option")) def decodeHex(): # show hex try: