pyblock/pybitblock/clockscript.py

170 lines
7.3 KiB
Python
Raw Normal View History

import json
import os
import subprocess
import sys
import base64, codecs, requests
2022-03-18 18:49:32 -03:00
import time as t
from cfonts import render, say
2022-03-18 18:49:32 -03:00
def clear(): # clear the screen
subprocess.run(['clear'] if os.name != 'nt' else ['cls'], shell=(os.name == 'nt'))
2022-03-13 23:59:13 -03:00
def rectangle(n):
x = n - 3
y = n - x
[
print(''.join(i))
for i in
(
''*x
if i in (0,y-1)
else
(
f'{""*n}{"|"*n}{""*n}'
if i >= (n+1)/2 and i <= (1*n)/2
else
2022-03-22 23:19:50 +01:00
f'\033[A\u001b[38;5;27m{""*(x-1)}\033[A'
2022-03-13 23:59:13 -03:00
)
for i in range(y)
)
]
def blogo():
2022-03-13 23:59:13 -03:00
if os.path.isfile('config/pyblocksettings.conf') or os.path.isfile('config/pyblocksettings.conf'): # Check if the file 'bclock.conf' is in the same folder
with open("config/pyblocksettings.conf", "r") as f:
settingsv = json.load(f) # Load the file 'bclock.conf'
settings = settingsv # Copy the variable pathv to 'path'
else:
settings = {"gradient":"", "design":"block", "colorA":"green", "colorB":"yellow"}
with open("config/pyblocksettings.conf", "w") as f:
json.dump(settings, f, indent=2)
if settings["gradient"] == "grd":
output = render('PyBLOCK', gradient=[settings['colorA'], settings['colorB']], align='center', font=settings['design'])
else:
output = render('PyBLOCK', colors=[settings['colorA'], settings['colorB']], align='center', font=settings['design'])
print(output)
def artist(): # here we convert the result of the command 'getblockcount' on a random art design
while True:
try:
clear()
design()
except Exception:
break
2022-03-18 18:49:32 -03:00
def pathexec():
global path
path = {"ip_port":"", "rpcuser":"", "rpcpass":"", "bitcoincli":""}
with open("config/bclock.conf", "r") as f:
pathv = json.load(f) # Load the file 'bclock.conf'
path = pathv # Copy the variable pathv to 'path'
2022-03-18 18:49:32 -03:00
def design():
while True:
2022-03-13 23:59:13 -03:00
if os.path.isfile('config/pyblocksettingsClock.conf') or os.path.isfile('config/pyblocksettingsClock.conf'): # Check if the file 'bclock.conf' is in the same folder
with open("config/pyblocksettingsClock.conf", "r") as f:
settingsv = json.load(f) # Load the file 'bclock.conf'
settingsClock = settingsv # Copy the variable pathv to 'path'
else:
settingsClock = {"gradient":"", "design":"block", "colorA":"green", "colorB":"yellow"}
with open("config/pyblocksettingsClock.conf", "w") as f:
json.dump(settingsClock, f, indent=2)
bitcoinclient = path['bitcoincli'] + " getblockcount"
block = subprocess.run(str(bitcoinclient).split(), capture_output=True, text=True).stdout # 'getblockcount' convert to string
b = block
a = b
blogo()
output = render(str(b), colors=[settingsClock['colorA'], settingsClock['colorB']], align='center')
print("\x1b[?25l" + output)
bitcoinclient = path['bitcoincli'] + " getbestblockhash"
bb = subprocess.run(str(bitcoinclient).split(), capture_output=True, text=True).stdout
ll = bb
bitcoinclientgetblock = path['bitcoincli'] + " getblock " + ll
qq = subprocess.run(bitcoinclientgetblock.split(), capture_output=True, text=True).stdout
yy = json.loads(qq)
mm = yy
2022-03-13 23:59:13 -03:00
outputsize = render(str(mm['size']) + " bytes", colors=[settingsClock['colorA'], settingsClock['colorB']], align='center', font='tiny')
print("\x1b[?25l" + outputsize)
2022-03-13 23:59:13 -03:00
outputtxs = render(str(mm['nTx']) + " txs", colors=[settingsClock['colorA'], settingsClock['colorB']], align='center', font='tiny')
print("\x1b[?25l" + outputtxs)
2022-03-13 23:59:13 -03:00
sh = int(mm['nTx']) / 4
shq = int(sh)
ss = str(rectangle(shq))
print(ss.replace("None",""))
while True:
x = a
bitcoinclient = path['bitcoincli'] + " getblockcount"
block = subprocess.run(str(bitcoinclient).split(), capture_output=True, text=True).stdout # 'getblockcount' convert to string
b = block
if b > a:
clear()
blogo()
output = render(str(b), colors=[settingsClock['colorA'], settingsClock['colorB']], align='center')
print("\a\x1b[?25l" + output)
bitcoinclient = path['bitcoincli'] + " getbestblockhash"
bb = subprocess.run(str(bitcoinclient).split(), capture_output=True, text=True).stdout
ll = bb
bitcoinclientgetblock = path['bitcoincli'] + " getblock " + ll
qq = subprocess.run(bitcoinclientgetblock.split(), capture_output=True, text=True).stdout
yy = json.loads(qq)
mm = yy
2022-03-13 23:59:13 -03:00
outputsize = render(str(mm['size']) + " bytes", colors=[settingsClock['colorA'], settingsClock['colorB']], align='center', font='tiny')
print("\x1b[?25l" + outputsize)
2022-03-13 23:59:13 -03:00
outputtxs = render(str(mm['nTx']) + " txs", colors=[settingsClock['colorA'], settingsClock['colorB']], align='center', font='tiny')
print("\x1b[?25l" + outputtxs)
2022-03-13 23:59:13 -03:00
sh = int(mm['nTx']) / 4
shq = int(sh)
ss = str(rectangle(shq))
print(ss.replace("None",""))
t.sleep(10)
2022-03-07 03:07:14 +01:00
txs = str(mm['nTx'])
if txs == "1":
2022-03-08 00:13:31 +01:00
try:
2024-06-26 21:20:24 +02:00
p = subprocess.Popen(['curl', 'http://ascii.live/forrest'])
2022-03-08 00:13:31 +01:00
p.wait(5)
except subprocess.TimeoutExpired:
p.kill()
print("\033[0;37;40m\x1b[?25l")
clear()
2022-03-08 00:13:31 +01:00
close()
a = b
output = render(str(b), colors=[settingsClock['colorA'], settingsClock['colorB']], align='center')
print("\x1b[?25l" + output)
settings = {"gradient":"", "design":"block", "colorA":"green", "colorB":"yellow"}
settingsClock = {"gradient":"", "colorA":"green", "colorB":"yellow"}
while True: # Loop
try:
clear()
path = {"ip_port":"", "rpcuser":"", "rpcpass":"", "bitcoincli":""}
2022-03-13 23:59:13 -03:00
if os.path.isfile('config/bclock.conf') or os.path.isfile('config/blnclock.conf'): # Check if the file 'bclock.conf' is in the same folder
with open("config/bclock.conf", "r") as f:
pathv = json.load(f) # Load the file 'bclock.conf'
path = pathv # Copy the variable pathv to 'path'
else:
blogo()
print("Welcome to \033[1;31;40mPyBLOCK\033[0;37;40m\n\n")
print("\n\tIf you are going to use your local node leave IP:PORT/USER/PASSWORD in blank.\n")
2022-03-22 22:20:03 +00:00
path[
'ip_port'
] = f'http://{input("Insert IP:PORT to access your remote Bitcoin-Cli node: ")}'
path['rpcuser'] = input("RPC User: ")
path['rpcpass'] = input("RPC Password: ")
print("\n\tLocal Bitcoin Node connection.\n")
path['bitcoincli']= input("Insert the Path to Bitcoin-Cli: ")
with open("config/bclock.conf", "w") as f:
json.dump(path, f, indent=2)
artist()
except Exception:
print("\n")
sys.exit(101)