Extrayendo datos de la red SPK via Python

in #spanish2 years ago

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.

Sort:  

Esto es increíble y les agradezco por compartir esto. Jugaré con un poco de código este fin de semana y veré si puedo contribuir a sus esfuerzos. Mi idioma nativo es el inglés, así que disculpe cualquier ortografía ya que usé un traductor. :)

yo se lo más básico en Python, pero tengo experiencia haciendo varios códigos que se conectan con Hive, asi que experimenté haciendo algunos códigos que ayuden a crear App para SPK.


The rewards earned on this comment will go directly to the person sharing the post on Twitter as long as they are registered with @poshtoken. Sign up at https://hiveposh.com.

Congratulations @enrique89! You have completed the following achievement on the Hive blockchain and have been rewarded with new badge(s):

You received more than 20000 HP as payout for your posts, comments and curation.
Your next payout target is 21000 HP.
The unit is Hive Power equivalent because post and comment rewards can be split into HP and HBD

You can view your badges on your board and compare yourself to others in the Ranking
If you no longer want to receive notifications, reply to this comment with the word STOP

To support your work, I also upvoted your post!

Check out the last post from @hivebuzz:

Happy 6th Birthday to the Hive Community
Introducing NFT for Peace
Support the HiveBuzz project. Vote for our proposal!