pyblock/ppi.py
2020-06-22 22:02:00 -03:00

945 lines
38 KiB
Python

#Developer: Curly60e
#PyBLOCK its a clock of the Bitcoin blockchain.
#Version: 0.5.0
import base64, codecs, json, requests
import pickle
import os
import os.path
import qrcode
import lnpay_py
import requests
import simplejson as json
import time as t
from art import *
from pblogo import *
from logos import *
from lnpay_py.wallet import LNPayWallet
def clear(): # clear the screen
os.system('cls' if os.name=='nt' else 'clear')
#-----------------------------LNBITS--------------------------------
def loadFileConnLNBits(lnbitLoad):
lnbitLoad = {"wallet_name":"", "wallet_id":"", "admin_key":"", "invoice_read_key":""}
if os.path.isfile('lnbit.conf'): # Check if the file 'bclock.conf' is in the same folder
lnbitData= pickle.load(open("lnbit.conf", "rb")) # Load the file 'bclock.conf'
lnbitLoad = lnbitData # Copy the variable pathv to 'path'
else:
clear()
blogo()
print("""\n\t \033[1;33;40mATENTION\033[0;37;40m: YOU ARE GOING TO CREATE A FILE WITH YOUR INFORMATION OF CONNECTION TO LNBITS.COM.
WE WILL NEED SOME INFORMATION FROM YOUR ACCOUNT THAT THE ONLY ONE THAT WILL HAVE ACCESS IS YOU.
IF YOU DELETE THIS FILE YOU WILL NEED TO PAY AGAIN TO GET ACCESS FROM PyBLOCK.
SAVE THE FILE '\033[1;33;40mlnbitSN.conf\033[0;37;40m' IN A SAFE PLACE.\n
""")
lnbitLoad["wallet_name"] = input("Wallet name: ") # path to the bitcoin-cli
lnbitLoad["wallet_id"] = input("Wallet ID: ")
lnbitLoad["admin_key"] = input("Admin key: ")
lnbitLoad["invoice_read_key"] = input("Invoice/read key: ")
pickle.dump(lnbitLoad, open("lnbit.conf", "wb"))
return lnbitLoad
def createFileConnLNBits():
lnbitLoad = {"wallet_name":"", "wallet_id":"", "admin_key":"", "invoice_read_key":""}
clear()
blogo()
print("""\n\t \033[1;33;40mATENTION\033[0;37;40m: YOU ARE GOING TO CREATE A FILE WITH YOUR INFORMATION OF CONNECTION TO LNBITS.COM.
WE WILL NEED SOME INFORMATION FROM YOUR ACCOUNT THAT THE ONLY ONE THAT WILL HAVE ACCESS IS YOU.
IF YOU DELETE THIS FILE YOU WILL NEED TO PAY AGAIN TO GET ACCESS FROM PyBLOCK.
SAVE THE FILE '\033[1;33;40mlnbitSN.conf\033[0;37;40m' IN A SAFE PLACE.\n
""")
lnbitLoad["wallet_name"] = input("Wallet name: ") # path to the bitcoin-cli
lnbitLoad["wallet_id"] = input("Wallet ID: ")
lnbitLoad["admin_key"] = input("Admin key: ")
lnbitLoad["invoice_read_key"] = input("Invoice/read key: ")
pickle.dump(lnbitLoad, open("lnbit.conf", "wb"))
def lnbitCreateNewInvoice():
qr = qrcode.QRCode(
version=1,
error_correction=qrcode.constants.ERROR_CORRECT_L,
box_size=10,
border=4,
)
try:
print("\n\tLNBITS CREATE INVOICE\n")
amt = input("Amount: ")
memo = input("Memo: ")
a = loadFileConnLNBits(['invoice_read_key'])
b = str(a['invoice_read_key'])
curl = 'curl -X POST https://lnbits.com/api/v1/payments -d ' + "'{" + """"out": false, "amount": {}, "memo": "{} -PyBLOCK" """.format(amt,memo) + "}'" + """ -H "X-Api-Key: {} " -H "Content-type: application/json" """.format(b)
sh = os.popen(curl).read()
clear()
blogo()
n = str(sh)
d = json.loads(n)
q = d['payment_request']
c = q.lower()
while True:
print("\033[1;30;47m")
qr.add_data(c)
qr.print_ascii()
print("\033[0;37;40m")
qr.clear()
print("Lightning Invoice: " + c)
t.sleep(10)
dn = str(d['checking_id'])
checkcurl = 'curl -X GET https://lnbits.com/api/v1/payments/' + dn + """ -H "X-Api-Key: {}" -H "Content-type: application/json" """.format(b)
rsh = os.popen(checkcurl).read()
clear()
blogo()
nn = str(rsh)
dd = json.loads(nn)
db = dd['paid']
if db == True:
clear()
blogo()
tick()
t.sleep(2)
break
else:
continue
except:
pass
def lnbitPayInvoice():
bolt = input("Invoice: ")
a = loadFileConnLNBits(['admin_key'])
b = str(a['admin_key'])
curl = 'curl -X POST https://lnbits.com/api/v1/payments -d ' + "'{" + """"out": true, "bolt11": "{}" """.format(bolt) + "}'" + """ -H "X-Api-Key: {}" -H "Content-type: application/json" """.format(b)
try:
sh = os.popen(curl).read()
n = str(sh)
d = json.loads(n)
dn = str(d['checking_id'])
a = loadFileConnLNBits(['invoice_read_key'])
b = str(a['invoice_read_key'])
while True:
checkcurl = 'curl -X GET https://lnbits.com/api/v1/payments/' + dn + """ -H "X-Api-Key: {}" -H "Content-type: application/json" """.format(b)
rsh = os.popen(checkcurl).read()
clear()
blogo()
nn = str(rsh)
dd = json.loads(nn)
db = dd['paid']
if db == True:
tick()
t.sleep(2)
break
else:
continue
except:
pass
def lnbitCreatePayWall():
while True:
try:
url = input("Url: ")
memo = input("Memo: ")
desc = input("Description: ")
amt = input("Amount in sats: ")
remb = input("Remembers Y/n: ")
a = loadFileConnLNBits(['admin_key'])
b = str(a['admin_key'])
if remb == "Y" or remb == "y":
remember = "true"
elif remb == "N" or remb == "n":
remember = "false"
curl = 'curl -X POST https://lnbits.com/paywall/api/v1/paywalls -d ' + "'{" + """"url": "{}", "memo": "{}", "description": "{}", "amount": {}, "remembers": {} """.format(url,memo,desc,amt,remember) + "}'" + """ -H "Content-type: application/json" -H "X-Api-Key: {}" """.format(b)
sh = os.popen(curl).read()
clear()
blogo()
n = str(sh)
d = json.loads(n)
print("\n\tPAYWALL CREATED SUCCESSFULLY\n")
t.sleep(2)
clear()
aa = loadFileConnLNBits(['invoice_read_key'])
bb = str(a['invoice_read_key'])
checkcurl = 'curl -X GET https://lnbits.com/paywall/api/v1/paywalls -H' + """ "X-Api-Key: {}" """.format(bb)
sh = os.popen(checkcurl).read()
clear()
blogo()
n = str(sh)
d = json.loads(n)
while True:
print("\n\tLNBITS PAYWALL LIST\n")
for r in range(len(d)):
s = d[r]
print("ID: " + s['id'])
nd = input("\nSelect ID: ")
for r in range(len(d)):
s = d[r]
nn = s['id']
if nd == nn:
print("\n----------------------------------------------------------------------------------------------------------------")
print("""
\tLNBITS PAYWALL DECODED
ID: {}
Amount: {} sats
Description: {}
Memo: {}
Extras: {}
Remembers: {}
URL: {}
Wallet: {}
""".format(s['id'], s['amount'], s['description'], s['memo'], s['extras'], s['remembers'], s['url'], s['wallet']))
print("----------------------------------------------------------------------------------------------------------------\n")
input("Continue...")
clear()
blogo()
except:
break
def lnbitListPawWall():
a = loadFileConnLNBits(['invoice_read_key'])
b = str(a['invoice_read_key'])
checkcurl = 'curl -X GET https://lnbits.com/paywall/api/v1/paywalls -H' + """ "X-Api-Key: {}" """.format(b)
sh = os.popen(checkcurl).read()
clear()
blogo()
n = str(sh)
d = json.loads(n)
while True:
print("\n\tLNBITS PAYWALL LIST\n")
try:
for r in range(len(d)):
s = d[r]
print("ID: " + s['id'])
nd = input("\nSelect ID: ")
for r in range(len(d)):
s = d[r]
nn = s['id']
if nd == nn:
print("\n----------------------------------------------------------------------------------------------------------------")
print("""
\tLNBITS PAYWALL DECODED
ID: {}
Amount: {} sats
Description: {}
Memo: {}
Extras: {}
Remembers: {}
URL: {}
Wallet: {}
""".format(s['id'], s['amount'], s['description'], s['memo'], s['extras'], s['remembers'], s['url'], s['wallet']))
print("----------------------------------------------------------------------------------------------------------------\n")
except:
break
input("Continue...")
clear()
blogo()
def lnbitDeletePayWall():
while True:
try:
a = loadFileConnLNBits(['invoice_read_key'])
b = str(a['invoice_read_key'])
checkcurl = 'curl -X GET https://lnbits.com/paywall/api/v1/paywalls -H' + """ "X-Api-Key: {}" """.format(b)
sh = os.popen(checkcurl).read()
clear()
blogo()
n = str(sh)
d = json.loads(n)
while True:
print("\n\tLNBITS PAYWALL LIST\n")
try:
for r in range(len(d)):
s = d[r]
print("ID: " + s['id'])
nd = input("\nSelect ID: ")
for r in range(len(d)):
s = d[r]
nn = s['id']
if nd == nn:
print("\n----------------------------------------------------------------------------------------------------------------")
print("""
\tLNBITS PAYWALL DECODED
ID: {}
Amount: {} sats
Description: {}
Memo: {}
Extras: {}
Remembers: {}
URL: {}
Wallet: {}
""".format(s['id'], s['amount'], s['description'], s['memo'], s['extras'], s['remembers'], s['url'], s['wallet']))
print("----------------------------------------------------------------------------------------------------------------\n")
except:
break
input("Continue...")
break
print("\n\tDELETE PAYWALL\n")
a = loadFileConnLNBits(['admin_key'])
b = str(a['admin_key'])
id = input("Insert PayWall ID: ")
curl = "curl -X DELETE https://lnbits.com/paywall/api/v1/paywalls/{}".format(id) + """ -H "X-Api-Key: {}" """.format(b)
sh = os.popen(curl).read()
clear()
blogo()
print("\n\tPAYWALL DELETED SUCCESSFULLY\n")
t.sleep(2)
clear()
except:
break
#-----------------------------END LNBITS--------------------------------
#-----------------------------LNPAY--------------------------------
def loadFileConnLNPay(lnpayLoad):
lnpayLoad = {"key":""}
if os.path.isfile('lnpay.conf'): # Check if the file 'bclock.conf' is in the same folder
lnpayData= pickle.load(open("lnpay.conf", "rb")) # Load the file 'bclock.conf'
lnpayLoad = lnpayData # Copy the variable pathv to 'path'
else:
clear()
blogo()
print("""\n\t \033[1;33;40mATENTION\033[0;37;40m: YOU ARE GOING TO CREATE A FILE WITH YOUR INFORMATION OF CONNECTION TO LNPAY.CO.
WE WILL NEED SOME INFORMATION FROM YOUR ACCOUNT THAT THE ONLY ONE THAT WILL HAVE ACCESS IS YOU.
IF YOU DELETE THIS FILE YOU WILL NEED TO PAY AGAIN TO GET ACCESS FROM PyBLOCK.
SAVE THE FILE '\033[1;33;40mlnpaySN.conf\033[0;37;40m' IN A SAFE PLACE.\n
""")
lnpayLoad["key"] = input("API Key: ")
print("\n\tWALLET ACCESS KEYS\n")
lnpayLoad["wallet_key_id"] = input("Wallet Admin: ")
pickle.dump(lnpayLoad, open("lnpay.conf", "wb"))
clear()
blogo()
return lnpayLoad
def createFileConnLNPay():
clear()
blogo()
print("""\n\t \033[1;33;40mATENTION\033[0;37;40m: YOU ARE GOING TO CREATE A FILE WITH YOUR INFORMATION OF CONNECTION TO LNPAY.CO.
WE WILL NEED SOME INFORMATION FROM YOUR ACCOUNT THAT THE ONLY ONE THAT WILL HAVE ACCESS IS YOU.
IF YOU DELETE THIS FILE YOU WILL NEED TO PAY AGAIN TO GET ACCESS FROM PyBLOCK.
SAVE THE FILE '\033[1;33;40mlnpaySN.conf\033[0;37;40m' IN A SAFE PLACE.\n
""")
lnpayLoad["key"] = input("API Key: ")
print("\n\tWALLET ACCESS KEYS\n")
lnpayLoad["wallet_key_id"] = input("Wallet Admin: ")
pickle.dump(lnpayLoad, open("lnpay.conf", "wb"))
def lnpayGetBalance():
a = loadFileConnLNPay(['key'])
b = str(a['key'])
n = loadFileConnLNPay(['wallet_key_id'])
q = str(n['wallet_key_id'])
lnpay_py.initialize(b)
clear()
blogo()
my_wallet = LNPayWallet(q)
info = my_wallet.get_info()
print("\n---------------------------------------------------------------------------------------------------")
print("""
\tLNPAY WALLET BALANCE
Wallet ID: {}
Wallet Name: {}
Balance: {} sats
""".format(info['id'], info['user_label'], info['balance']))
print("---------------------------------------------------------------------------------------------------\n")
input("\nContinue... ")
def lnpayCreateInvoice():
qr = qrcode.QRCode(
version=1,
error_correction=qrcode.constants.ERROR_CORRECT_L,
box_size=10,
border=4,
)
a = loadFileConnLNPay(['key'])
b = str(a['key'])
n = loadFileConnLNPay(['wallet_key_id'])
q = str(n['wallet_key_id'])
lnpay_py.initialize(b)
clear()
blogo()
my_wallet = LNPayWallet(q)
amt = input("\nAmount in Sats: ")
memo = input("Memo: ")
invoice_params = {
'num_satoshis': amt,
'memo': memo + ' -PyBLOCK'
}
try:
invoice = my_wallet.create_invoice(invoice_params)
while True:
print("\033[1;30;47m")
qr.add_data(invoice['payment_request'])
qr.print_ascii()
print("\033[0;37;40m")
qr.clear()
print("Lightning Invoice: " + invoice['payment_request'])
t.sleep(10)
curl = 'curl -u ' + b + ': https://lnpay.co/v1/lntx/' + invoice['id'] + '?fields=settled,num_satoshis'
rsh = os.popen(curl).read()
clear()
blogo()
nn = str(rsh)
dd = json.loads(nn)
db = dd['settled']
if db == 1:
clear()
blogo()
tick()
t.sleep(2)
break
else:
continue
except:
pass
def lnpayGetTransactions():
qr = qrcode.QRCode(
version=1,
error_correction=qrcode.constants.ERROR_CORRECT_L,
box_size=10,
border=4,
)
a = loadFileConnLNPay(['key'])
b = str(a['key'])
n = loadFileConnLNPay(['wallet_key_id'])
q = str(n['wallet_key_id'])
lnpay_py.initialize(b)
clear()
blogo()
my_wallet = LNPayWallet(q)
transactions = my_wallet.get_transactions()
while True:
try:
print("\n\tLNPAY LIST PAYMENTS\n")
for r in range(len(transactions)):
s = transactions[r]
q = s['lnTx']
print("ID: " + s['id'])
nd = input("\nSelect ID: ")
for r in range(len(transactions)):
s = transactions[r]
nn = s['id']
nnn = s['lnTx']
if nd == nn:
print("\n----------------------------------------------------------------------------------------------------")
print("""
\tLNPAY LIST PAYMENT DECODED
ID: {}
Amount: {} sats
Memo: {}
Invoice: {}
RHash: {}
""".format(nnn['id'], nnn['num_satoshis'], nnn['memo'], nnn['payment_request'], nnn['r_hash_decoded']))
print("----------------------------------------------------------------------------------------------------\n")
print("\033[1;30;47m")
qr.add_data(nnn['payment_request'])
qr.print_ascii()
print("\033[0;37;40m")
qr.clear()
input("Continue...")
clear()
blogo()
print("\n\tLNPAY LIST PAYMENTS\n")
except:
break
clear()
blogo()
def lnpayPayInvoice():
a = loadFileConnLNPay(['key'])
b = str(a['key'])
n = loadFileConnLNPay(['wallet_key_id'])
q = str(n['wallet_key_id'])
lnpay_py.initialize(b)
clear()
blogo()
my_wallet = LNPayWallet(q)
try:
print("\n\tLNPAY PAY INVOICE\n")
inv = input("\nInvoice: ")
curl = 'curl -u' + b +': https://lnpay.co/v1/node/default/payments/decodeinvoice?payment_request=' + inv
clear()
rsh = os.popen(curl).read()
nn = str(rsh)
dd = json.loads(nn)
clear()
blogo()
print("\n----------------------------------------------------------------------------------------------------")
print("""
\tLNPAY INVOICE DECODED
Destination: {}
Amount: {} sats
Memo: {}
Invoice: {}
""".format(dd['destination'], dd['num_satoshis'], dd['description'], inv))
print("----------------------------------------------------------------------------------------------------\n")
print("<<< Cancel Control + C")
input("\nEnter to Continue... ")
invoice_params = {
'payment_request': inv
}
pay_result = my_wallet.pay_invoice(invoice_params)
except:
pass
def lnpayTransBWallets():
a = loadFileConnLNPay(['key'])
b = str(a['key'])
n = loadFileConnLNPay(['wallet_key_id'])
q = str(n['wallet_key_id'])
lnpay_py.initialize(b)
clear()
blogo()
print("""\n\tLNPAY TRANSFER BETWEEN WALLETS
\nCaution: If you Transfer to another of your LNPay wallets
you will only access to your funds via Web.\n""")
try:
wall = input("Wallet destination ID: ")
amt = input("Amount in Sats: ")
memo = input("Memo: ")
my_wallet = LNPayWallet(q)
transfer_params = {
'dest_wallet_id': wall,
'num_satoshis': amt,
'memo': memo
}
transfer_result = my_wallet.internal_transfer(transfer_params)
p = transfer_result['wtx_transfer_in']
e = transfer_result['wtx_transfer_out']
f = e['wal']
v = p['wal']
print("\n----------------------------------------------------------------------------------------------------")
print("""
\tLNPAY TRANSFER BETEWWN WALLETS INFORMATION
ID: {}
Amount: {} sats
Memo: {}
To Wallet: {}
From Wallet: {}
""".format(p['id'], p['num_satoshis'], p['user_label'], v['user_label'], f['user_label']))
print("----------------------------------------------------------------------------------------------------\n")
input("Continue...")
except:
pass
#-----------------------------END LNPAY--------------------------------
#-----------------------------OPENNODE--------------------------------
def loadFileConnOpenNode(opennodeLoad):
opennodeLoad = {"key":"","wdr":"","inv":""}
if os.path.isfile('opennode.conf'): # Check if the file 'bclock.conf' is in the same folder
opennodeData= pickle.load(open("opennode.conf", "rb")) # Load the file 'bclock.conf'
opennodeLoad = opennodeData # Copy the variable pathv to 'path'
else:
clear()
blogo()
print("""\n\t \033[1;33;40mATENTION\033[0;37;40m: YOU ARE GOING TO CREATE A FILE WITH YOUR INFORMATION OF CONNECTION TO OPENNODE.COM.
WE WILL NEED SOME INFORMATION FROM YOUR ACCOUNT THAT THE ONLY ONE THAT WILL HAVE ACCESS IS YOU.
IF YOU DELETE THIS FILE YOU WILL NEED TO PAY AGAIN TO GET ACCESS FROM PyBLOCK.
SAVE THE FILE '\033[1;33;40mopennodeSN.conf\033[0;37;40m' IN A SAFE PLACE.\n
""")
opennodeLoad["key"] = input("API Read Only Key: ")
opennodeLoad["wdr"] = input("API Withdrawall Key: ")
opennodeLoad["inv"] = input("API Invoices Key: ")
pickle.dump(opennodeLoad, open("opennode.conf", "wb"))
clear()
blogo()
return opennodeLoad
def createFileConnOpenNode():
opennodeLoad = {"key":"","wdr":"","inv":""}
clear()
blogo()
print("""\n\t \033[1;33;40mATENTION\033[0;37;40m: YOU ARE GOING TO CREATE A FILE WITH YOUR INFORMATION OF CONNECTION TO OPENNODE.COM.
WE WILL NEED SOME INFORMATION FROM YOUR ACCOUNT THAT THE ONLY ONE THAT WILL HAVE ACCESS IS YOU.
IF YOU DELETE THIS FILE YOU WILL NEED TO PAY AGAIN TO GET ACCESS FROM PyBLOCK.
SAVE THE FILE '\033[1;33;40mopennodeSN.conf\033[0;37;40m' IN A SAFE PLACE.\n
""")
opennodeLoad["key"] = input("API Read Only Key: ")
opennodeLoad["wdr"] = input("API Withdrawall Key: ")
opennodeLoad["inv"] = input("API Invoices Key: ")
pickle.dump(opennodeLoad, open("opennode.conf", "wb"))
def OpenNodelistfunds():
a = loadFileConnOpenNode(['wdr'])
b = str(a['wdr'])
curl = "curl https://api.opennode.co/v1/account/balance -H "+ '"Content-Type: application/json" -H "Authorization: {}"'.format(b)
sh = os.popen(curl).read()
clear()
blogo()
n = str(sh)
d = json.loads(n)
r = d['data']
p = r['balance']
print("\n----------------------------------------------------------------------------------------------------")
print("""
OPENNODE BALANCE
Amount: {} sats
""".format(p['BTC']))
print("----------------------------------------------------------------------------------------------------\n")
input("Continue...")
def OpenNodecreatecharge():
qr = qrcode.QRCode(
version=1,
error_correction=qrcode.constants.ERROR_CORRECT_L,
box_size=10,
border=4,
)
a = loadFileConnOpenNode(['key'])
b = str(a['key'])
fiat = input("Are you going to pay in FIAT? Y/n:")
if fiat == "Y" or fiat == "y":
print("\n----------------------------------------------------------------------------------------------------")
print("""
\tFIAT supported on OpenNode:
AED,AFN,ALL,AMD,ANG,AOA,ARS,AUD,AWG,AZN,BAM,BBD,BDT,BGN,BHD,BIF,BMD,BND,BOB,BRL,BSD,BTN,BWP,
BYN,BZD,CAD,CDF,CHF,CLF,CLP,CNH,CNY,COP,CRC,CUC,CUP,CVE,CZK,DJF,DKK,DOP,DZD,EGP,ERN,ETB,EUR,
FJD,FKP,GBP,GEL,GGP,GHS,GIP,GMD,GNF,GTQ,GYD,HKD,HNL,HRK,HTG,HUF,IDR,ILS,IMP,INR,IQD,IRR,ISK,
JEP,JMD,JOD,JPY,KES,KGS,KHR,KMF,KPW,KRW,KWD,KYD,KZT,LAK,LBP,LKR,LRD,LSL,LYD,MAD,MDL,MGA,MKD,
MMK,MNT,MOP,MRO,MUR,MVR,MWK,MXN,MYR,MZN,NAD,NGN,NIO,NOK,NPR,NZD,OMR,PAB,PEN,PGK,PHP,PKR,PLN,
PYG,QAR,RON,RSD,RUB,RWF,SAR,SBD,SCR,SDG,SEK,SGD,SHP,SLL,SOS,SRD,SSP,STD,SVC,SYP,SZL,THB,TJS,
TMT,TND,TOP,TRY,TTD,TWD,TZS,UAH,UGX,USD,UYU,UZS,VES,VND,VUV,WST,XAF,XAG,XAU,XCD,XDR,XOF,XPD,
XPF,XPT,YER,ZAR,ZMW,ZWL,USDC.
""")
print("\n----------------------------------------------------------------------------------------------------")
selection = input("Select a FIAT currency: ")
amt = input("Amount in {}: ".format(selection))
curl = 'curl https://api.opennode.co/v1/charges -X POST -H ' + '"Authorization: {}"'.format(b) + ' -H "Content-Type: application/json" -d ' + "'{" + '"amount": "{}", "currency": "{}"'.format(amt,selection.upper()) + "}'"
sh = os.popen(curl).read()
clear()
blogo()
n = str(sh)
d = json.loads(n)
dd = d['data']
qq = dd['lightning_invoice']
pp = dd['chain_invoice']
while True:
try:
print("\n----------------------------------------------------------------------------------------------------")
print("""
\tOPENNODE PAYMENT REQUEST
Amount: {} {}
ID: {}
Status: {}
Invoice: {}
Onchain Address: {}
Amount: {} sats
""".format(amt, selection.upper(), dd['id'], dd['status'], qq['payreq'], pp['address'], dd['amount']))
print("----------------------------------------------------------------------------------------------------\n")
q = qq['payreq']
p = pp['address']
pay = input("Invoice or Onchain Address? I/O: ")
if pay =="I" or pay == "i":
print("\033[1;30;47m")
qr.add_data(q)
qr.print_ascii()
print("\033[0;37;40m")
qr.clear()
print("\nLightning Invoice: " + q)
elif pay =="O" or pay == "o":
print("\033[1;30;47m")
qr.add_data(p)
qr.print_ascii()
print("\033[0;37;40m")
qr.clear()
print("\nAmount in sats: {} sats".format(dd['amount']))
print("\nOnchain Address: " + p)
input("\nContinue...")
clear()
blogo()
except:
break
elif fiat == "N" or fiat == "n":
amt = input("Amount in sats: ")
curl = 'curl https://api.opennode.co/v1/charges -X POST -H' + '"Authorization: {}"'.format(b) + ' -H "Content-Type: application/json" -d ' + "'{" + '"amount": "{}", "currency": "BTC"'.format(amt) + "}'"
sh = os.popen(curl).read()
clear()
blogo()
n = str(sh)
d = json.loads(n)
dd = d['data']
qq = dd['lightning_invoice']
pp = dd['chain_invoice']
while True:
try:
print("\n----------------------------------------------------------------------------------------------------")
print("""
\tOPENNODE PAYMENT REQUEST
Amount: {} sats
ID: {}
Status: {}
Invoice: {}
Onchain Address: {}
Amount: {} sats
""".format(amt, dd['id'], dd['status'], qq['payreq'], pp['address'], dd['amount']))
print("----------------------------------------------------------------------------------------------------\n")
q = qq['payreq']
p = pp['address']
pay = input("Invoice or Onchain Address? I/O: ")
if pay =="I" or pay == "i":
print("\033[1;30;47m")
qr.add_data(q)
qr.print_ascii()
print("\033[0;37;40m")
qr.clear()
print("\nLightning Invoice: " + q)
elif pay =="O" or pay == "o":
print("\033[1;30;47m")
qr.add_data(p)
qr.print_ascii()
print("\033[0;37;40m")
qr.clear()
print("\nAmount in sats: {} sats".format(dd['amount']))
print("\nOnchain Address: " + p)
input("\nContinue...")
clear()
blogo()
except:
break
def OpenNodeiniciatewithdrawal():
a = loadFileConnOpenNode(['wdr'])
b = str(a['wdr'])
c = loadFileConnOpenNode(['key'])
d = str(a['key'])
lnchain = input("Are you going to pay with Lightning or Onchain? L/O: ")
clear()
blogo()
if lnchain == "L" or lnchain == "l":
try:
while True:
invoice = input("\nInvoice: ")
checkcurl = 'curl https://api.opennode.co/v1/charge/decode -X POST -H "Authorization: {}" -H "Content-Type: application/json" -d '.format(b) + "'{" + '"pay_req": "{}"'.format(invoice) + "}'"
ssh = os.popen(checkcurl).read()
nn = str(ssh)
dd = json.loads(nn)
print(dd)
if invoice == "":
print("\n----------------------------------------------------------------------------------------------------")
print("""
\tOPENNODE TRANSFER REQUEST
Message: {}
""".format(dd['message']))
print("----------------------------------------------------------------------------------------------------\n")
else:
break
rr = dd['data']
ss = rr['pay_req']
print("\n----------------------------------------------------------------------------------------------------")
print("""
\tOPENNODE TRANSFER REQUEST
Network: {}
Amount: {} sats
Destination: {}
Hash: {}
""".format(ss['network'],ss['amount'],ss['pub_key'],ss['hash']))
print("----------------------------------------------------------------------------------------------------\n")
print("<<< Cancel Control + C")
input("\nEnter to Continue... ")
curl = 'curl https://api.opennode.co/v2/withdrawals -X POST -H "Content-Type: application/json" -H "Authorization: {}"'.format(b) + " -d '{" + '"type": "ln", "address": "{}", "callback_url": ""'.format(invoice) + "}'"
sh = os.popen(curl).read()
n = str(sh)
d = json.loads(n)
clear()
blogo()
tick()
t.sleep(2)
except:
pass
elif lnchain == "O" or lnchain == "o":
try:
while True:
print("\n\tOPENNODE TRANSFER REQUEST\n")
print("\n\tMinimum amount 200000 sats\n")
address = input("\nBitcoin Address: ")
amt = int(input("Amount in sats: "))
curl = 'curl https://api.opennode.co/v2/withdrawals -X POST -H "Content-Type: application/json" -H "Authorization: {}"'.format(b) + " -d '{" + '"type": "chain", "amount": {}, "address": "{}", "callback_url": ""'.format(amt,address) + "}'"
if amt < 199999:
sh = os.popen(curl).read()
n = str(sh)
d = json.loads(n)
print("\n----------------------------------------------------------------------------------------------------")
print("""
\tOPENNODE TRANSFER REQUEST
Message: {}
""".format(d['message']))
print("----------------------------------------------------------------------------------------------------\n")
elif amt > 200000:
sh = os.popen(curl).read()
n = str(sh)
d = json.loads(n)
dd = d['data']
print("\n----------------------------------------------------------------------------------------------------")
print("""
\tOPENNODE TRANSFER REQUEST
Amount: {} sats
Address Destination: {}
Fee: {}
Status: {}
""".format(dd['amount'],dd['address'],dd['fee'], dd['status']))
print("----------------------------------------------------------------------------------------------------\n")
input("\nContinue... ")
clear()
blogo()
logoB()
t.sleep(2)
break
except:
pass
def OpenNodeListPayments():
qr = qrcode.QRCode(
version=1,
error_correction=qrcode.constants.ERROR_CORRECT_L,
box_size=10,
border=4,
)
a = loadFileConnOpenNode(['wdr'])
b = str(a['wdr'])
curl = 'curl https://api.opennode.co/v1/withdrawals -H "Content-Type: application/json" -H "Authorization: {}"'.format(b)
sh = os.popen(curl).read()
clear()
blogo()
print("\n\tOPENNODE TRANSACTIONS LIST\n")
n = str(sh)
d = json.loads(n)
da = d['data']
while True:
try:
for r in range(len(da)):
s = da[r]
n = s['status']
q = str(n)
print("ID: " + s['id'] + " " + q)
nd = input("\nSelect ID: ")
for r in range(len(da)):
s = da[r]
nn = s['id']
if nd == nn:
print("\n----------------------------------------------------------------------------------------------------")
print("""
\tOPENNODE TRANSACTION DECODED
ID: {}
Amount: {} sats
Type: {}
Invoice or Tx ID: {}
Status: {}
""".format(s['id'], s['amount'], s['type'], s['reference'], s['status']))
print("----------------------------------------------------------------------------------------------------\n")
print("\033[1;30;47m")
qr.add_data(s['reference'])
qr.print_ascii()
print("\033[0;37;40m")
qr.clear()
input("Continue...")
clear()
blogo()
print("\n\tOPENNODE TRANSACTIONS LIST\n")
except:
break
#-----------------------------END OPENNODE--------------------------------
#-----------------------------TIPPINME--------------------------------
def loadFileTippinMe(tippinmeLoad):
tippinmeLoad = {"key":""}
if os.path.isfile('tippinme.conf'): # Check if the file 'bclock.conf' is in the same folder
tippinmeData= pickle.load(open("tippinme.conf", "rb")) # Load the file 'bclock.conf'
tippinmeLoad = tippinmeData # Copy the variable pathv to 'path'
else:
clear()
blogo()
print("""\n\t \033[1;33;40mATENTION\033[0;37;40m: YOU ARE GOING TO CREATE A FILE WITH YOUR INFORMATION OF CONNECTION TO TIPPIN.ME.
WE WILL NEED SOME INFORMATION FROM YOUR ACCOUNT THAT THE ONLY ONE THAT WILL HAVE ACCESS IS YOU.
IF YOU DELETE THIS FILE YOU WILL NEED TO PAY AGAIN TO GET ACCESS FROM PyBLOCK.
SAVE THE FILE '\033[1;33;40mtippinmeSN.conf\033[0;37;40m' IN A SAFE PLACE.\n
""")
tippinmeLoad["key"] = input("Twitter @user: ")
pickle.dump(tippinmeLoad, open("tippinme.conf", "wb"))
clear()
blogo()
return tippinmeLoad
def createFileTippinMe():
tippinmeLoad = {"key":""}
clear()
blogo()
print("""\n\t \033[1;33;40mATENTION\033[0;37;40m: YOU ARE GOING TO CREATE A FILE WITH YOUR INFORMATION OF CONNECTION TO TIPPIN.ME.
WE WILL NEED SOME INFORMATION FROM YOUR ACCOUNT THAT THE ONLY ONE THAT WILL HAVE ACCESS IS YOU.
IF YOU DELETE THIS FILE YOU WILL NEED TO PAY AGAIN TO GET ACCESS FROM PyBLOCK.
SAVE THE FILE '\033[1;33;40mtippinmeSN.conf\033[0;37;40m' IN A SAFE PLACE.\n
""")
tippinmeLoad["key"] = input("Twitter @user: ")
pickle.dump(tippinmeLoad, open("tippinme.conf", "wb"))
def tippinmeGetInvoice():
qr = qrcode.QRCode(
version=1,
error_correction=qrcode.constants.ERROR_CORRECT_L,
box_size=10,
border=4,
)
a = loadFileTippinMe(['key'])
b = str(a['key'])
try:
print("\n\tTIPPINME GENERATE INVOICE\n")
q = input("Amount in Sats: ")
clear()
blogo()
url = 'https://api.tippin.me/v1/public/addinvoice/{}/{}'.format(b,q)
response = requests.get(url)
responseB = str(response.text)
responseC = responseB
lnreq = responseC.split(',')
lnbc1 = lnreq[1]
lnbc1S = str(lnbc1)
lnbc1R = lnbc1S.split(':')
lnbc1W = lnbc1R[1]
ln = str(lnbc1W)
ln1 = ln.strip('"')
print("\033[1;30;47m")
qr.add_data(ln1)
qr.print_ascii()
print("\033[0;37;40m")
print("LND Invoice: " + ln1)
response.close()
input("Continue...")
except:
pass
#-----------------------------END TIPPINME--------------------------------