create account

Un Bot para extraer la cuentas que delegan a un usuario de Hive - Parte de Aliento Pay by enrique89

View this thread on: hive.blogpeakd.comecency.com
· @enrique89 ·
$59.01
Un Bot para extraer la cuentas que delegan a un usuario de Hive - Parte de Aliento Pay
<div class="text-justify">


![image.png](https://files.peakd.com/file/peakd-hive/enrique89/23tRzsdn84Uu7rAoHL9TfpmkXFtpihXUuMHhmmEQbmmfJp2jkJ23x6tSoghxX1Tp2dMzT.png)



He estado desarrollando un bot que me permite extraer información sobre las delegaciones de HP en la blockchain de Hive. Para ello, he utilizado la biblioteca [beem](https://beem.readthedocs.io/en/latest/) para interactuar con la API de Hive, y he creado una serie de funciones que me permiten obtener y procesar los datos de la cadena de bloques.

Esto lo hice por solicitud de @manuphotos de Hive Cuba porque no ha podido conectarse a Hive SQL y me apoyé de inteligencia artificial para poder aclarar algunas cosas.



El bot me permite especificar una cuenta de Hive y un número de días de antigüedad, y luego obtiene todas las delegaciones de HP que han ocurrido para esa cuenta en los últimos X días (donde X es el número de días de antigüedad especificado por mí). Para ello, uso la biblioteca datetime para calcular la fecha de corte a partir del número de días de antigüedad.

El bot cambia automáticamente de API cada 1000 operaciones para evitar sobrecargar cualquier nodo API en particular. Para ello, he utilizado la una lista de nodos API, y he creado una función que me permite cambiar de nodo cada vez que se alcanza el límite de operaciones.



```
def get_next_api_url():
    node_list = nodes
    while True:
        for api_url in node_list:
            yield api_url

next_api_url = get_next_api_url()


all_results_obtained = False
def switch_hive_node():
    global all_results_obtained
    if not all_results_obtained:
        api_url = next(next_api_url)
        print(f"Switching to new Hive API node: {api_url}")
        hive_instance = Hive(node=api_url)
        set_shared_blockchain_instance(hive_instance)

switch_hive_node()


```



Una vez que he obtenido los datos de la cadena de bloques, he procesado los resultados para asegurarme de que solo se incluyan las delegaciones más recientes de cada delegador (basándome en la fecha de la delegación), y he convertido los montos de vesting shares a HP usando lo siguiente:

```
'                vests = float(operation["vesting_shares"]["amount"])
                vests = round(float(vests), 4)
                mvests = vests / 1000000'


```

Finalmente, he almacenado los resultados en una base de datos SQLite utilizando la biblioteca sqlite3, y he utilizado un archivo de configuración config.ini para permitirme configurar varias variables, como la cuenta de Hive a analizar, el número de días de antigüedad y el número máximo de operaciones a recuperar por solicitud.


Hice el ejemplo con @hivecuba


![image.png](https://files.peakd.com/file/peakd-hive/enrique89/23t8B2wL63BSk8c5mJfcdtB17zrSQgBhPEyQFidgYd1DqcKK9Nh7BL4cc5MKZ4nYCjhPz.png)


<br>

El propósito de esto es poder crear actualizar el bot de delegación de @aliento, que pueda cualquier comunidad realizar pagos a los usuarios de Hive que le delegan 


### Código Abierto

El código en Github: https://github.com/enrique89ve/bot_hive_delegacion

Asi que puedes contribuir al desarrollo de este bot 

</div>

<center>https://images.hive.blog/0x0/https://files.peakd.com/file/peakd-hive/enrique89/zLRXvucf-rect908.png</center>

<center> https://images.hive.blog/0x0/https://files.peakd.com/file/peakd-hive/enrique89/1wK1k8h4-rect4225.png </center>

👍  , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , and 126 others
👎  , , ,
properties (23)
authorenrique89
permlinkun-bot-para-extraer-la-cuentas-que-delegan-a-un-usuario-de-hive-parte-de-aliento-pay
categoryhive-110011
json_metadata{"app":"peakd/2023.3.4","format":"markdown","tags":["spanish","apps","devs","ideas","bot","beem"],"users":["manuphotos","hivecuba","aliento"],"image":["https://files.peakd.com/file/peakd-hive/enrique89/23tRzsdn84Uu7rAoHL9TfpmkXFtpihXUuMHhmmEQbmmfJp2jkJ23x6tSoghxX1Tp2dMzT.png","https://files.peakd.com/file/peakd-hive/enrique89/23t8B2wL63BSk8c5mJfcdtB17zrSQgBhPEyQFidgYd1DqcKK9Nh7BL4cc5MKZ4nYCjhPz.png","https://files.peakd.com/file/peakd-hive/enrique89/zLRXvucf-rect908.png","https://files.peakd.com/file/peakd-hive/enrique89/1wK1k8h4-rect4225.png"]}
created2023-03-28 23:28:45
last_update2023-03-28 23:28:45
depth0
children5
last_payout2023-04-04 23:28:45
cashout_time1969-12-31 23:59:59
total_payout_value29.526 HBD
curator_payout_value29.488 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length3,367
author_reputation599,542,362,290,816
root_title"Un Bot para extraer la cuentas que delegan a un usuario de Hive - Parte de Aliento Pay"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id122,051,874
net_rshares107,592,946,962,980
author_curate_reward""
vote details (194)
@alborhada · (edited)
Se ve interesante ese bot y será de gran utilidad. Buen aporte a la comunidad👏🏽👏🏽
properties (22)
authoralborhada
permlinkre-enrique89-2023328t212919979z
categoryhive-110011
json_metadata{"tags":["spanish","apps","devs","ideas","bot","beem"],"app":"ecency/3.0.31-vision","format":"markdown+html"}
created2023-03-29 01:29:21
last_update2023-03-29 01:30:21
depth1
children0
last_payout2023-04-05 01:29:21
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length81
author_reputation23,806,487,894,424
root_title"Un Bot para extraer la cuentas que delegan a un usuario de Hive - Parte de Aliento Pay"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id122,053,927
net_rshares0
@crptogeek ·
Entiendo para que sirve, pero no entiendo el código 😅🤣... tengo que darle a la programación este año. 
properties (22)
authorcrptogeek
permlinkre-enrique89-2023329t102137z
categoryhive-110011
json_metadata{"tags":["hive-110011","spanish","apps","devs","ideas","bot","beem"],"app":"ecency/3.0.39-mobile","format":"markdown+html"}
created2023-03-29 14:21:15
last_update2023-03-29 14:21:15
depth1
children0
last_payout2023-04-05 14:21:15
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length102
author_reputation60,428,197,232,715
root_title"Un Bot para extraer la cuentas que delegan a un usuario de Hive - Parte de Aliento Pay"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id122,066,731
net_rshares0
@escuadron201 · (edited)
Excelente la idea de ir cambiando de nodo cada 1000 operaciones, no se me hubiera ocurrido.

Te has rifado con tu bot, 10/10
properties (22)
authorescuadron201
permlinkre-enrique89-rs9hxx
categoryhive-110011
json_metadata{"tags":"hive-110011"}
created2023-03-29 03:06:00
last_update2023-03-29 03:06:54
depth1
children0
last_payout2023-04-05 03:06:00
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length124
author_reputation3,611,065,006,346
root_title"Un Bot para extraer la cuentas que delegan a un usuario de Hive - Parte de Aliento Pay"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id122,055,585
net_rshares0
@lfu-radio ·
Justo, lo que necesitaba, para avanzar en el conocimiento desde el punto de vista informático, la verdad, en la época que estudie, no existían los **_API_**

Qué lenguajes de programación usastes para tal fin, Lenguaje C++?

properties (22)
authorlfu-radio
permlinkre-enrique89-s5nlgz
categoryhive-110011
json_metadata{"tags":["hive-110011"],"app":"peakd/2023.11.3"}
created2023-12-14 11:05:27
last_update2023-12-14 11:05:27
depth1
children0
last_payout2023-12-21 11:05:27
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length225
author_reputation10,898,554,933,200
root_title"Un Bot para extraer la cuentas que delegan a un usuario de Hive - Parte de Aliento Pay"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id129,662,400
net_rshares0
@poshtoken ·
https://twitter.com/1138293778681356288/status/1640865384873041922
<sub> The rewards earned on this comment will go directly to the people sharing the post on Twitter as long as they are registered with @poshtoken. Sign up at https://hiveposh.com.</sub>
properties (22)
authorposhtoken
permlinkre-enrique89-un-bot-para-extraer-la-cuentas-que-delegan-a-un-us-33088976
categoryhive-110011
json_metadata"{"app":"Poshtoken 0.0.1","payoutToUser":[]}"
created2023-03-28 23:56:18
last_update2023-03-28 23:56:18
depth1
children0
last_payout2023-04-04 23:56:18
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length254
author_reputation3,941,425,902,386,420
root_title"Un Bot para extraer la cuentas que delegan a un usuario de Hive - Parte de Aliento Pay"
beneficiaries
0.
accountnomnomnomnom
weight10,000
max_accepted_payout1,000,000.000 HBD
percent_hbd0
post_id122,052,348
net_rshares0