Streamlit-test

import streamlit as st
import os
from stellar_sdk import Server, Keypair, TransactionBuilder, Network, Asset
import requests
import time
import json
from datetime import date
from datetime import datetime
import random
from random import randrange
gap = 0.0005

def cuann(dx):
    page = "https://horizon.stellar.org/transactions/"+dx+"/operations"
    body = {}
    r = requests.get(page, data=json.dumps(body))
    amo = r.json()['_embedded']['records'][2]['amount']
    return amo


def ediff(p):
	if(len(p)==2):
	    return "ok"
	if(p[2]==True):
	    return "ok"
	curr_dt = datetime.now()
	tn = int(round(curr_dt.timestamp()))
	asx = p[2].replace("T", ",")
	asx = asx.replace(":", ",")
	asx = asx.replace("-", ",")
	asx = asx.replace("Z", "")
	asx = asx.split(",")
	dt = datetime(int(asx[0]),int(asx[1]),int(asx[2]),int(asx[3]),int(asx[4]),int(asx[5]))
	dt = dt.timestamp()
	dt = int(round(dt))
	if(tn > dt):
		return "expired"
	else:
		return "ok"

def sdiff(p):
	#st.write(p)
	if(len(p)==2):
	    return "ok"
	if(p[2]==True):
	    return "ok"
	curr_dt = datetime.now()
	tn = int(round(curr_dt.timestamp()))
	asx = p[2].replace("T", ",")
	asx = asx.replace(":", ",")
	asx = asx.replace("-", ",")
	asx = asx.replace("Z", "")
	asx = asx.split(",")
	dt = datetime(int(asx[0]),int(asx[1]),int(asx[2]),int(asx[3]),int(asx[4]),int(asx[5]))
	dt = dt.timestamp()
	dt = int(round(dt))
	if(tn > dt):
		return "ok"
	else:
		return "lock"

def satu(skey): 
    root_keypair = Keypair.from_secret(skey)
    pk = root_keypair.public_key
    page = "https://horizon.stellar.org/claimable_balances?limit=200&claimant="+pk;
    body = {}
    r = requests.get(page, data=json.dumps(body))
    try:
    	be = len(r.json()['_embedded']['records'])
    except:
    	st.text("null")
    	return
    #st.text(str(be)+" "+pk)
    #return	

    for x in range(be):
        assetx = r.json()['_embedded']['records'][x]['asset']
        idb = r.json()['_embedded']['records'][x]['id']
        jum = r.json()['_embedded']['records'][x]['amount']
        spon = r.json()['_embedded']['records'][x]['sponsor']
        at = assetx.split(":")
        code = at[0]
        issuer = at[1]
        lbxx.text(pk)
        lbx.text(code+" "+jum)
        exp = []
        exp.append(code)
        exp.append(jum)

        exp2 = []
        exp2.append(code)
        exp2.append(jum)	


	######END ['_embedded']['records'][x]['claimants'][0]['predicate']['and'][1]['abs_before']
        try:
            ee0 = r.json()['_embedded']['records'][x]['claimants'][0]['predicate']['and'][1]['abs_before']
            exp.append(ee0)
        except:
            ee0 = "null"	
        try:
            ee0 = r.json()['_embedded']['records'][x]['claimants'][1]['predicate']['abs_before']
            exp.append(ee0)
        except:
            ee0 = "null"	
        try:
            ee0 = r.json()['_embedded']['records'][x]['claimants'][0]['predicate']['abs_before']
            exp.append(ee0)
        except:
            ee0 = "null"  
        try:     
            ee0 = r.json()['_embedded']['records'][x]['claimants'][0]['predicate']['and'][0]['abs_before']
            exp.append(ee0)
        except:
            ee0 = "null"         
        try:     
            ee0 = r.json()['_embedded']['records'][x]['claimants'][0]['predicate']['unconditional']
            exp.append(ee0)
        except:
            ee0 = "null"

        #st.write(len(exp))
        #st.write(exp)
        if(len(exp)>1):
        	ec = ediff(exp)
	##########START
	#var ss0 = r.json()['_embedded']['records'][x]['claimants'][0]['predicate']['and'][0]['not']['abs_before']
        try:     
            ss0 = r.json()['_embedded']['records'][x]['claimants'][0]['predicate']['and'][0]['not']['abs_before']
            exp2.append(ss0)		
        except:
            ss0 = "null"
        try:     
            ss0 = r.json()['_embedded']['records'][x]['claimants'][1]['predicate']['not']['abs_before']
            exp2.append(ss0)		
        except:
            ss0 = "null"	
        try:     
            ss0 = r.json()['_embedded']['records'][x]['claimants'][0]['predicate']['not']['abs_before']
            exp2.append(ss0)
        except:
            ss0 = "null"			
        try:     
            ss0 = r.json()['_embedded']['records'][x]['claimants'][0]['predicate']['and'][1]['not']['abs_before']
            exp2.append(ss0)
        except:
            ss0 = "null"	

        #st.write(len(exp2))
        #st.write(exp2)
        if(len(exp2)>1):
        	sc = sdiff(exp2)
	##############################################
        if(code=="AQUA" and spon == pk):
        	sc = "lock"		
        if(ec!="expired" and sc!="lock"):	
        	#st.text(ec+" "+sc+" "+code+" "+jum)
        	chkn(code,issuer,jum,idb,skey)

    #st.write(r.json())
    return

def chkn(tok2,iss2,anu1,idb,skey):
    tp = "credit_alphanum4"    
    if(len(tok2)>4):
        tp = "credit_alphanum12"
    page = "https://horizon.stellar.org/paths/strict-send?source_asset_type="+tp+"&source_asset_code="+tok2+"&source_asset_issuer="+iss2+"&source_amount="+anu1+"&destination_assets=native";
    body = {}
    r = requests.get(page, data=json.dumps(body))
    arr = []
    try:
    	anu2 = r.json()['_embedded']['records'][0]['destination_amount']	
    	#lx = r.json()['_embedded']['records'][0]['path']
    	#st.write(anu2)
    except:
    	#st.write("anu2 null")
    	return

    if(tok2=="AQUA"):
        swapxx(tok2,iss2,anu1,idb,skey)
        return

    if(float(anu2) > float(gap)):
        swapgoo(tok2,iss2,anu1,idb,skey)
    else:
        #st.write("skip")
        return

def swapgoo(tok,iss,dam,idb,skey):
    ppt = []
    ppt.append(Asset.native())
    server = Server(horizon_url="https://horizon.stellar.org")
    root_keypair = Keypair.from_secret(skey)
    pkey = root_keypair.public_key
    peka = pkey[0:10]+"..."+pkey[len(pkey)-10:]
    root_account = server.load_account(account_id=pkey)
    public_key = pkey
    transaction = (
    TransactionBuilder(
        source_account=root_account,
        network_passphrase=Network.PUBLIC_NETWORK_PASSPHRASE,
        base_fee=1000,
        )

    .append_change_trust_op(tok,iss,limit=None,source=None)
    .append_claim_claimable_balance_op(balance_id=idb,source=None)
    .append_path_payment_strict_send_op(
        destination=public_key,
        send_code=tok,
        send_issuer=iss,
        send_amount=dam,
        dest_code="XLM",
        dest_issuer=None,
        dest_min=str(gap),
        path=ppt,
        )

    .append_change_trust_op(tok,iss,"0",source=None)
    .add_text_memo("PedjuangRetjeh")
    .set_timeout(30)
    .build()
    )

    xd = transaction.to_xdr()
    transaction.sign(root_keypair)
    #st.caption(peka)
    dam = dam.split(".")[0]
    try:
        response = server.submit_transaction(transaction)
        #kirim(dam+" to "+damx)
        #st.write(response['id'])
        #st.write(dam+" "+tok)
        s = peka+"_"+cuann(response['id'])+"_"
        st.caption(":blue["+s+"] ["+tok+"](https://stellar.expert/explorer/public/tx/"+response['id']+")   ")
        #y = response['id']
    except Exception as e:
        y = json.loads(str(e))
        #st.write(y['title']+" "+tok+" "+dam)
        y = peka+"__"+y['title']+" "+tok+" "+dam
        st.caption(":red["+y+"]")
        #st.write(str(e))
        #placeholder20.text(y['title'])
    #time.sleep(1)
    #swapp20()
    return

def swapxx(tok,iss,dam,idb,skey):
    server = Server(horizon_url="https://horizon.stellar.org")
    root_keypair = Keypair.from_secret(skey)
    pkey = root_keypair.public_key
    peka = pkey[0:10]+"..."+pkey[len(pkey)-10:]
    root_account = server.load_account(account_id=pkey)
    public_key = pkey
    transaction = (
    TransactionBuilder(
        source_account=root_account,
        network_passphrase=Network.PUBLIC_NETWORK_PASSPHRASE,
        base_fee=2000,
        )
    .append_claim_claimable_balance_op(balance_id=idb,source=None)
    .add_text_memo("PedjuangRetjeh")
    .set_timeout(30)
    .build()
    )

    xd = transaction.to_xdr()
    transaction.sign(root_keypair)

    try:
        response = server.submit_transaction(transaction)
        y = response['id']	
        s = peka+"__"+dam
        st.caption(":blue["+s+"] ["+tok+"](https://stellar.expert/explorer/public/tx/"+y+")")

    except Exception as e:
        y = json.loads(str(e))
        y = peka+"__"+y['title']+" "+tok+" "+dam
        st.caption(":red["+y+"]")
        st.write(y)

    return

st.title("Hajar Micin")
st.write("[email protected]")
st.caption(":red[^Untuk digunakan dalam area terbatas, segala resiko yang terjadi, diluar tanggungjawab kami.]")
line = st.text_input('Paste Secret Key', type='password')

if st.button('Hajar...'):
	lbxx = st.empty()
	lbx = st.empty()
	try:
		satu(line)
		lbx.text("Selesai !!!")
	except:
		lbx.text("null")
		#lbx.text("Selesai !!!")