Recolector de Recompensas de Steem-Engine Multicuenta

in spanish •  8 months ago 

claimallyourtokens.jpg

Hastiado de tener que estar recogiendo las recompensas de tokens de todas las comunidades en las que participo a través del interfaz de Steem-Engine, mi amigo @monster-one me mostró hace unos días una útil herramienta creada por @holger80 para automatizar esa tarea -> https://steempeak.com/scot/@holger80/how-to-claim-all-pending-token-rewards-at-once-improved-claim-command

Les agradezco muchísimo a los dos esta gran ayuda; a Holger por crearla y a Monster por enseñármela. Y estoy seguro de que son muchos los usuarios que opinarán igual.

Se trata de un pequeño programa escrito en Python que reclama todas las recompensas pendientes de la cuenta cuyos datos de acceso se introduzcan durante su ejecución, por lo que es necesario tener instalado el entorno de ejecución de Python.

También es necesario, tal y como explica Holger, instalar las bibliotecas Beem y steemengine

pip install beem steemengine

Muy útil pero...

Sin embargo, para muchos de nosotros la explosión de comunidades y sus tokens nos ha obligado a separar las fuerzas de voto en diferentes cuentas, por lo que ya no se trata solo de reclamar varias recompensas de una cuenta, sino de varias.

Así es como me he decidido a modificar el programa de Holger para que reclame todas las recompensas pendientes en todas nuestras cuentas... ¡de una sola vez!

Para ejecutar el programa se requieren los mismos requisitos que los indicados en el post de Holger.

A continuación explico las modificaciones.

Archivo auxiliar de cuentas

En primer lugar, he creado un archivo auxiliar con los datos de las cuentas que queremos reclamar en una lista de diccionarios:

accounts = [
    { 'name': 'cuenta1', 'pwd': 'KXXX1....'},
    { 'name': 'cuenta2', 'pwd': 'KXXX2....'},
    { 'name': 'cuenta3', 'pwd': 'KXXX3....'},
    { 'name': 'cuenta4', 'pwd': 'KXXX4....'}
]

donde cuenta1 es el nombre de cuenta en steemit (sin @) y en pwd se añade la Private Posting key de esa cuenta.

He llamado a este archivo accountlist.py

El archivo principal ha quedado modificado de la siguiente manera:

from beem import Steem
import json
import requests
from accountlist import accounts

# En caso de error consultar disponibilidad de nodos: https://steemit.com/@fullnodeupdate
smtNode = "https://api.steemit.com"

Al incluír los datos de las cuentas en un archivo se elimina la necesidad de solicitarlos al usuario por lo que se han prenscindido de varias librerías.

También importo la lista de diccionarios para acceder desde el módulo principal.

He cargado un nodo de acceso a steemit diferente al usado en el ejemplo de Holger porque al probar su programa me respondía con errores de conexión. Si esto sucediera se puede consultar la disponibilidad de nodos en el enlace que he añadido como comentario.

A partir de ahora se realiza un bucle por cada una de las cuentas incluídas en el archivo accountlist.py

El resto del programa ya es prácticamente igual al original. Solo he añadido una línea de visualización con el nombre de la cuenta que va a reclamarse y he cambiado la forma de acceso al nodo de steemit.

    for user in accounts:
        username = user.get('name')
        pwd = user.get('pwd')
        print("Rewards de: %s" % username)

        url = "http://scot-api.steem-engine.com/@" + username
        r = requests.get(url)
        result = r.json()

        json_data = []
        for token in result:
            scot = result[token]
            if int(scot["pending_token"]) > 0:
                json_data.append({"symbol": token})
                print("Hay %s pendientes de reclamar." % ( token))
        
        if len(json_data) > 0:
            stm=Steem(smtNode)
                    
            try:
                stm.unlock(pwd)
            except:
                stm = Steem(node=smtNode, keys=[pwd])        
            stm.custom_json("scot_claim_token", json_data, required_posting_auths=[username])
        else:
            print("No hay recompensas pendientes")

Este código se guarda con el nombre de claim_all_scot.py y se ejecuta igual que el ejemplo de Holger:

python claim_all_scot.py

Todas las recompensas serán reclamadas en sus respectivas cuentas de Steem-Engine. Puede que sean necesarios unos segundos de espera hasta que aparezcan.

De nuevo doy las gracias a Holgen por su idea y espero que no le haya molestado que se la "retoque" un poco.

NOTA Cuando añadais la información de vuestras cuentas en el archivo accountlist.py aseguraos de que nadie acceda a él más que vosotros. Cuidad de vuestras claves privadas.

Rada Quest
Discord 3DK Render


wishtoseeyouinrada.png

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!
Sort Order:  

Impresionante y muy útil modificación, y sí, cada vez necesitamos de ésto para reclamar todas las recompensas, saludos.

Gracias. El mérito realmente es de Holger, yo solo hice unos pequeños cambios. Aunque útiles, eso sí.

Se ve muy útil a mí me vuelve loca tener tantas cuentas, se ve estupendo el dato @marcosdk

Si, yo ya estaba desesperado. Esto me ha añadido tiempo extra a mi vida ^_^

Gracias por compartir la información y por añadir comodidad, sacando mayor provecho a la aplicación original. Saludos

¡Excelente herramienta! Y ahora que cada vez tengo más recompensas viene muy bien.

No sé mucho de informática pero, si lo recomiendas tú, debe tener muchisima utilidad. Gracias por compartir, me asomaré y cualquier cosa, grito jajaja. Gracias por ser siempre tan diligente y solidario con la información que nos aporta mucha utilidad. Te abrazo de vuelta, @marcosdk!..

Esta publicación ha sido seleccionada para el reporte de Curación Diaria.

final de post.png¡¡¡Felicidades!!!

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

You made more than 600 comments. Your next target is to reach 700 comments.

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

You can upvote this notification to help all Steem users. Learn how here!