[코딩몰라여] steem-python 보상 자동으로 받기

in #kr-dev4 years ago (edited)

codingmola02.png

  1편의 내용이 좀 많았나요? 어려워하시는 분들이 좀 계셨습니다. 파이썬이 안익숙한 것도 한 몫 했겠죠!? 메모장에서 바로 코딩할 수 있으면 좋을텐데... 안타깝게도 간단한 웹 프로그래밍말고는 불가능합니다. 그래도 설정에 관련된건 다 알려드렸으니! 계속 진행해보려고 합니다.

  1편에서 다루었던 steem-python을 이용한 기능 개발과 텔레그램 봇에 반영하는 방법을 파악하실 수 있다면 이후에 올릴 모든 기능들을 여러분은 혼자서 봇에 반영하실 수 있습니다. :D

  오늘은 쉽게 따라해볼 수 있는 '자동으로 보상 받는 기능'에 대해서 다뤄보겠습니다.


보상(rewards)

01.png

  스팀잇에선 글 써서 보팅을 받거나 다른 사람들의 포스트에 보팅하면 활동에 따른 보상을 받는건 다들 아시죠? 모르면 큰 일인데..

  대부분의 경우엔 확인할 때 마다 바로바로 입금을 하지 않을 이유가 없죠. 스파가 조금이라도 높아야 보팅 가중치가 강해지니까요.

  그런데 보상이 바로 지갑에 들어오는게 아니라 여러분들의 지갑을 확인해서 '내 지갑으로 입금하기'를 눌러야 보상이 여러분들의 지갑으로 들어오게 됩니다. 상시 돌아가는 봇이 자동으로 보상을 받아준다면 편하지 않을까요?


02.jpg
▲ 보상을 줍는 플랑크톤


자동으로 보상 받기

  steemd.com에선 여러분들의 계정에 대한 다양한 정보를 알 수 있습니다. 그 중에는 아직 받지 않은 보상 정보도 포함되어있습니다. 보상을 받기 위해선 키가 필요합니다. 키가 필요할 땐 우선 포스팅키를 사용하는 습관을 반드시 가집시다.

  계정명과 포스팅키를 입력하여 계정 정보를 얻어오는 코드를 작성합니다.

import re  
from steem.steem import Steem  
  
acc = '여러분들의 계정명'
pkey = '여러분들의 포스팅 키(5로 시작)'
  
def claim_rewards():  
    steem = Steem(keys = pkey)  
    acc_info = steem.get_account(acc)



  Steem 생성자 파라미터에 포스팅 키를 입력하 여, 권한이 부여된 객체를 얻을 수 있습니다. get_account는 계정 정보를 불러옵니다.

    rvb = acc_info['reward_vesting_balance'] # Vests
    rvs = acc_info['reward_vesting_steem'] # Steem Power
    rvd = acc_info['reward_sbd_balance'] # Steem Dollar



  위의 코드를 통해 아직 받지 않은 보상에 대한 Vests, SP, SBD의 양을 확인 할 수 있습니다. 이제 보상을 청구해야 하는데 보상이 0일 땐 청구할 필요가 없겠죠? 또한, 보상이 있는 경우엔 항상 Vests 가 0보다 큰 값으로 나타납니다. 따라서 Vests가 0보다 클 때 보상을 청구하면 되는데 문제는...

print(rvb, rvs, rvd)
> 10.210896 VESTS 0.005 STEEM 0.000 SBD

  결과 값에 VESTS, STEEM, SBD 표기가 남아있어 rvb, rvs, rvd가 숫자가 아닌 문자열입니다. 그러므로 숫자만 남도록 해야합니다. 단순하게 뒤에서 몇 글자를 자르는 식의 코드를 작성할 수도 있지만 범용성이 높은 코드가 되도록 정규식(Regular Expression)를 사용하도록 하겠습니다. 코드 첫 줄의 import re는 정규식 모듈을 불러온 것입니다. 정규식 모듈에 대한 설명은 여기선 다루지 않을게요.

    rvb = re.findall("([0-9]+(?:\.[0-9]+)?)(?:\s)", rvb)[0]  
    rvs = re.findall("([0-9]+(?:\.[0-9]+)?)(?:\s)", rvs)[0]  
    rvd = re.findall("([0-9]+(?:\.[0-9]+)?)(?:\s)", rvd)[0]



  주어진 문자열에서 소숫값 형태를 가지는 문자열을 찾고, 첫 번째로 탐색된 문자열을 가져오는 정규식입니다.

  예를 들어 mb91.232asdf4723.1123 라는 문자열이 있으면 91.232만 가져옵니다.

  이제 보상이 존재하는 것으로 확인되면 보상 받기를 대신 눌러주는 코드를 작성합니다.

if float(rvb) > 0:  
    steem.claim_reward_balance(account = acc)  
    print('와! %s의 SP와 %s의 SBD의 과자 값이 들어왔어요.' % (rvs, rvd))

  claim_reward_balance가 보상 받기 버튼을 눌러주는 코드입니다. 간단하죠?


결과

와! 0.005의 SP와 0.000의 SBD의 과자 값이 들어왔어요.

03.png

여러분의 보팅으로 더 큰 과자 값을 받ㅇ... 읍읍


  어제 만들었다가 내용이 너무 짧은가... 싶어서 다른걸 만들고 있었는데 짧은 것도 괜찮은 것 같아서 오늘 올리게 되었습니다. 오늘은 간단했죠!? 그쵸!?

  코딩몰라여 시리즈가 5번 정도 작성되면 그 기능들을 모아서 여러분들만의 텔레그램 봇을 구글 앱 엔진을 이용해서 상시 돌아갈 수 있게끔 안내를 해드릴 계획이 있고... 제가 작성한 코드를 GitHub를 통해 공유할 수 있도록 준비 중이니 계속해서 코딩몰라여 시리즈를 기대해주셨으면 좋겠습니다. 'ㅂ'b






전체 코드

import re  
from steem.steem import Steem  
  
acc = '여러분들의 계정명'
pkey = '여러분들의 포스팅 키(5로 시작)'
  
def claim_rewards():  
    steem = Steem(keys = pkey)  
    acc_info = steem.get_account(acc)  
  
    rvb = acc_info['reward_vesting_balance']  
    rvs = acc_info['reward_vesting_steem']  
    rvd = acc_info['reward_sbd_balance']  
  
    rvb = re.findall("([0-9]+(?:\.[0-9]+)?)(?:\s)", rvb)[0]  
    rvs = re.findall("([0-9]+(?:\.[0-9]+)?)(?:\s)", rvs)[0]  
    rvd = re.findall("([0-9]+(?:\.[0-9]+)?)(?:\s)", rvd)[0] 
  
    if float(rvb) > 0:  
        steem.claim_reward_balance(account = acc)  
        print('와! %s의 SP와 %s의 SBD의 과자 값이 들어왔어요.' % (rvs, rvd))  
  
claim_rewards()



함께 보면 좋은 이전 포스트

Sort:  

좋은 정보 검서합니다맛.. 일일이 저렇개 해야되나요..?? ㅋㅋ..

코드로 보여드린 부분은 실행할 때마다 한 번만 보상을 취득하지만, 일정 시간마다 실행되도록 하는 코드를 추가함으로써 자동화 할 수 있습니다 :D

하나 하나 따라해볼거에요. 노트북 하나 사고 나서 ㅋㅋ 아직 장비 준비전ㅜ
도움안되는 보팅, 도움되는 리스팀해요 ㅋㅋ 계속 잘 부탁드립니다!!

감사합니다 //ㅅ/ 노트북은 그램 같은 가벼운게 짱입니다..

혹시 저 같은 코딩 문외한에게 입문용으로 추천해주실만한 책이 있을까요 ??

파이썬은 어떻게 실행을 먼저 해야할지.. 공부 해야겠네요..
올려주셔서 감사 합니다.

파이썬 시작은 이 포스트를 참고해주세요!

제가 프로그램에 대해서는 잘 모르고, 이 글에 있는 글씨를 빠짐없이 읽었지만 여전히 뭘 읽었는지를 잘 파악하지 못합니다.
그렇지만 이렇게 좋은 글을 쓰는 것에 대해 미약한 보팅과 칭잔을 아낄 수가 없네요.
아니 단순히 글을 쓰는 것이 아니라 프로그램 코드를 작성하는 것 자체는 엄청난 노력이 필요할 것으로 봅니다.
이러한 작업에 대해서는 그에 상응하는 보상도 필요하지요.
저도 뉴비라서 잘 모릅니다.
그런데 프로그래머를 지원하는 "유토피안"이라는 계정이 있습니다.
그곳에 프로젝트를 등록하면 상당한 보팅을 받을 수 있는 것으로 압니다.
참고하세요.

감사합니다 :D 유토피안 안내도 감사드립니다. 사실 그저께부터 보고 있었지만... 너무 어려워 보여서 미루고 있었습니다. 한 번 더 확인해볼게요. 고맙습니다!

봐도 봐도 잘 모르겠는 1인입니다. ^^;
그래도 보상줍는 플랑크톤이 저인건 바로 알겠네요. ㅋㅋㅋ

미미님, 저, 우리 ㅎㅎㅎ /ㅅ/

지갑에 저금 하는 것도 이제 봇에게 맡기는 시대가 온건가....

난 반댈세....
지갑에 저금 하는 맛이 없으니.... ㅋㅋㅋㅋ

저는 저금하는 맛보다 저도 모르게 쌓여있는 주머니돈을 보는 즐거움을 추구합니다. 후후.

쓸데 없는걸 만들어냈어.....요
좀 쓸만한거 없어요?

저는 직업이 Data Scientist 이고 회사에서도 파이썬을 많이 쓰지만 파이썬으로 암호화폐쪽 코딩은 해볼 생각을 하지 않고 있었는데 이렇게 짧은 예제를 통하여 또 새로운 세계를 쉽게 접할 수 있게 되었네요. @maanya 님 좋은 일 하시네요.

파이썬을 이해할 수 있어 이 글을 즐겁게 볼 수 있으니 더욱 좋네요. 잘 배우고 갑니다.

이렇게 말씀해주시니 너무 힘이 납니다..! 열심히 이어서 연재할게요!

Coin Marketplace

STEEM 0.49
TRX 0.09
JST 0.062
BTC 48285.06
ETH 4042.61
BNB 562.79
SBD 5.91