Extrayendo datos de la red SPK via Python

Words
283
Reading
2 min
Listen
Play
4y

image.png

¡Hola Hivers!

Hoy traigo un post un poco técnico, ya que se trata de programación, en la cual voy a describir como podemos extraer datos de la red SPK a través del lenguaje de programación Python.

Como saben recientemente se inició el ciclo para el Claim Drop de los tokens SPK, si no sabes de qué trata puedes mirar este post: Ir, donde puedes aclarar las dudas más recurrentes.

Este post lo hago para todos esos programadores que están en Hive y saben Python, para que puedan observar como puedo conectarme a una API de la red SPK, para extraer datos.

Lo primero debemos considerar es tener la API en la cual vamos a hacer los requerimientos, en mi caso, voy a elegir la sugerida por el equipo de desarrollo de la red SPK:

https://spkinstant.hivehoneycomb.com

Para hacer los requerimientos API vamos a usar el módulo requests que es uno de los usados para solicitar datos a una API.

El código base para hacer los requerimientos son los siguientes:

import requests 
import re
import json



node = 'https://spkinstant.hivehoneycomb.com/'

def accountapi(ac):

    
    urlapi = node+"@"+ac
    reponse = requests.get(urlapi)
    dataaccount = reponse.json()


    return dataaccount


def funcionapi(comando):

    '''commdand:

    runners
    coin
    stats
    queue

    '''



    urlapi = node+comando
    reponse = requests.get(urlapi)
    dataaccount = reponse.json()


    return dataaccount



def accountapi(ac):

    
    urlapi = node+"@"+ac
    reponse = requests.get(urlapi)
    data = reponse.json()


    return data


### Test comandos


def stats():


    data = funcionapi('stats')

    return data



def nodos():


    data = funcionapi('queue')

    return data


if __name__ == "__main__":
    print (stats())

    print ("----------------")

    print (nodos())








Resultado:

{'result': {'IPFSRate': 2000, 'MSHeld': {'HBD': 78410, 'HIVE': 406559}, 'budgetRate': 2000, 'currationRate': 2000, 'delegationRate': 2000, 'dex_fee': 'NaN', 'dex_max': '100.00', 'dex_slope': '0.00', 'gov_threshhold': 1332969, 'hashLastIBlock': 'QmRtfMXCWv3NC12NmMhdjvt1HL5FEG4XBi2Kn9ANB54kCd', 'icoPrice': 0, 'interestRate': 999999999999, 'lastBlock': 'QmbV1DaL37R2uw6B5g5zQsJXV8t5sDuLXveb6Q8FGP9Apz', 'lastIBlock': 62891400, 'liq_reward': 100, 'marketingRate': 156, 'maxBudget': 1000000000, 'movingWeight': 0, 'ms': {'active_account_auths': {'pizza.spk': 1, 'regardspk': 1, 'verbalshadow': 1}, 'active_threshold': 2, 'memo_key': 'STM5GNM3jpjWh7Msts5Z37eM9UPfGwTMU7Ksats3RdKeRaP5SveR9', 'owner_key_auths': {'STM5AAedmAPerZhzhA1f7FQCLnaidzeSoSnzRSJgMnvqVcXzaRXUK': 1, 'STM6EUEaEywYoxpeVDX1fPDxrsyQLGTsgYf1LLDSHWwiKBdgRhGrx': 1, 'STM7aLtAzKUpakSUJsrhTDhzEtWsKKwQsZcFmWMd2XDV9Tq5XH7bz': 1}, 'owner_threshold': 2, 'posting_threshold': 1}, 'multiSigCollateral': 143261041, 'nodeRate': 531, 'outOnBlock': 0, 'safetyLimit': 22012616, 'savingsRate': 1000, 'tokenSupply': 5409937181}, 'behind': 18, 'node': 'regardspk', 'VERSION': 'v1.0.3'}
----------------
{'queue': {'actifit-3speak': {'api': 'https://spknode.actifit.io', 'g': 3005208, 'l': 100}, 'andrewspk': {'api': 'https://spktoken.dlux.io/', 'g': 5193919, 'l': 100}, 'atexoras.witness': {'api': 'http://203.118.135.137:5305', 'g': 5674147, 'l': 100}, 'balvinder294': {'api': 'https://spk.tekraze.com', 'g': 1907297, 'l': 100}, 'bil.prag-node': {'api': 'https://spktoken.dlux.io', 'g': 1892774, 'l': 100}, 'carloaxie': {'api': 'http://at.drlobes.bar', 'g': 2262386, 'l': 100}, 'dluxfox': {'api': 'https://spktoken.dlux.io', 'g': 3282031, 'l': 100}, 'east.autovote': {'api': 'https://dluxspk.blurtopian.com', 'g': 150000, 'l': 100}, 'enjargames.spk': {'api': 'https://spktoken.dlux.io', 'g': 2579341, 'l': 100}, 'gotgame': {'api': 'https://spktoken.circuscodes.com', 'g': 26952, 'l': 100}, 'grand.strategy': {'api': 'https://spktoken.dlux.io', 'g': 0, 'l': 100}, 'heteroclite': {'api': 'https://spktoken.dlux.io', 'g': 3400053, 'l': 100}, 'hiveland.dapp': {'api': 'https://spktoken.dlux.io', 'g': 115543, 'l': 100}, 'mannimanccadm': {'api': 'https://spkccapi.manninote.com', 'g': 1560000, 'l': 100}, 'minibot': {'api': 'https://spktoken.dlux.io', 'g': 1231732, 'l': 100}, 'nonsowrites': {'api': 'https://spktoken.dlux.io', 'g': 0, 'l': 100}, 'phillytv': {'api': 'https://spktoken.dlux.io', 'g': 5892378, 'l': 100}, 'pizza.spk': {'api': 'https://spkcc.hive.pizza/', 'g': 1936789, 'l': 100}, 'princekham': {'api': 'http://185.130.45.228/', 'g': 1523925, 'l': 100}, 'reazul-dev': {'api': 'https://spkcc.dtools.dev', 'g': 2543991, 'l': 100}, 'regardspk': {'api': 'https://spktoken.dlux.io', 'g': 27045885, 'l': 100}, 'savvytester': {'api': 'https://spktoken.dlux.io', 'g': 44263, 'l': 100}, 'speak-scc': {'api': 'https://spktoken.dlux.io', 'g': 39671236, 'l': 100}, 'spk-hiro': {'api': 'https://spktoken.dlux.io', 'g': 5958763, 'l': 100}, 'spk-promo': {'api': 'https://spktoken.dlux.io', 'g': 6859032, 'l': 100}, 'spk.maruskina': {'api': 'https://spknode.canarysat.eu', 'g': 441833, 'l': 100}, 'spkgiles': {'api': 'https://spkgiles.hivehoneycomb.com', 'g': 8210057, 'l': 100}, 'spknode-es': {'api': 'https://spk.polen.network', 'g': 1569173, 'l': 100}, 'v4vapp': {'api': 'https://spktoken.dlux.io', 'g': 6858778, 'l': 100}, 'verbalshadow': {'api': 'https://spkcc.darkthread.tk', 'g': 3202146, 'l': 100}}, 'node': 'regardspk', 'behind': 18, 'VERSION': 'v1.0.3'}

Cabe resaltar que hay muchos más requerimientos que se pueden hacer pero en mi caso estoy probando con estos:

    runners
    coin
    stats
    queue

Consultar el saldo y la cantidad de Token Larynx (por mes) que reclamará una cuenta de HIVE:

Agregas esa función al código base:

def balance():

    ac = "enrique89"


    data = accountapi(ac)

    return data



Correr el código y extraer los datos:

if __name__ == "__main__":


    data = (balance())

    balance = data['balance']/1000 ### Hay que dividir entre 1000 para que pueda dar el mondo exacto

    drop = data['drop']

    snap = drop['availible']


    print ("---------------")

    
    cantidad = snap['amount']/1000 ### Hay que dividir entre 1000 para que pueda dar el mondo exacto


    print ('La cuenta tiene un balance de {} LARYNX y cantidad disponible por mes {} LARYNX '.format(balance, cantidad))




Resultado:

La cuenta tiene un balance de 10.301 LARYNX y cantidad disponible por mes 861.202 LARYNX 

Verificamos en la página web

image.png

Listo, vemos que la información es correcta.


Esto era todo lo que quería mostrar, si eres un programador y te sabes de Python puedes comenzar a conectarte con la SPK y hacer aplicaciones que ayuden a la comunidad.

Pienso que podría crear una aplicación que sirva de alternativa para reclamar los tokens y que sea fácil desde el Tlf.

Extrayendo datos de la red SPK via Python | Ecency