用官方的 steem-python 做一个稳健领取 steem 作者奖励和审查奖励的定时机器人 by dappcoder

View this thread on steempeak.com
· @dappcoder ·
$1.22
用官方的 steem-python 做一个稳健领取 steem 作者奖励和审查奖励的定时机器人
要求:
1. 能在各种恶劣网络环境下,正常工作;
2. 每30分钟定时领取一次
![0.jpg](https://cdn.steemitimages.com/DQmSLANaocCRwtucagvYzYrcu65Y6xLzzShZZavuE6adfw8/0.jpg)
由于[Steem](https://steem.io) 官方的 API 节点 https://api.steemit.com 因种种原因而无法访问,其他第三方的API 节点,也出各种状况.所以稳健的机器人,要在这些API 节点动态寻找可用API 节点.

示范程序(auto_claim_bot.py):
-----------------------------
```python
import steembase
import steem
from pick import pick
from steem.steemd import Steemd
from steem.account import Account
from steem.amount import Amount
from steem.instance import set_shared_steemd_instance
from steem.blockchain import Blockchain

steemd_nodes = [
    'https://anyx.io',
    'https://steemd.minnowsupportproject.org',
    'https://rpc.esteem.app',
    'https://api.steemit.com',
    'https://api.steem.house',
    'https://gtg.steem.house:8090',
    'https://appbasetest.timcliff.com',
]

set_shared_steemd_instance(Steemd(nodes=steemd_nodes))

# username = input('Enter username: ')
username = 'dappcoder'
# post_key = input('Enter private POST key: ')
post_key = '5JzkkkkkK3ZN'

# connect node
client = steem.Steem(nodes=steemd_nodes, keys=[post_key])

# get account reward balances
userinfo = client.get_account(username)
print('userinfo:', userinfo)

if(userinfo is None):
    print('Oops. Looks like user ' + username +
          ' doesn\'t exist on this chain!')
    exit()

reward_steem = userinfo['reward_steem_balance']
reward_sbd = userinfo['reward_sbd_balance']
reward_sp = userinfo['reward_vesting_steem']
reward_vests = userinfo['reward_vesting_balance']

print('Reward Balances:' + '\n' +
      'STEEM: ' + reward_steem + '\n' +
      'SBD: ' + reward_sbd + '\n' +
      'STEEM POWER: ' + reward_sp + '\n' +
      'VESTS: ' + reward_vests
      )

if Amount(reward_steem).amount + Amount(reward_sbd).amount + Amount(reward_vests).amount == 0:
    print('\n' + 'No rewards to claim')
    exit()
else:
    client.claim_reward_balance(
        reward_steem, reward_sbd, reward_vests, username)
    print(
        '\n' + 'All reward balances have been claimed. New reward balances are:' + '\n')

userinfo = client.get_account(username)

reward_steem = userinfo['reward_steem_balance']
reward_sbd = userinfo['reward_sbd_balance']
reward_sp = userinfo['reward_vesting_steem']
reward_vests = userinfo['reward_vesting_balance']

print('STEEM: ' + reward_steem + '\n' +
      'SBD: ' + reward_sbd + '\n' +
      'STEEM POWER: ' + reward_sp + '\n' +
      'VESTS: ' + reward_vests
      )
```
执行程序:`python auto_claim_bot.py`
执行结果符合预期:
![屏幕快照 2020-02-02 下午12.51.53.png](https://cdn.steemitimages.com/DQmWV8xK6kXFEW6YXDMDeGiuETrZFYs2A31hmovWKj7wr1A/%E5%B1%8F%E5%B9%95%E5%BF%AB%E7%85%A7%202020-02-02%20%E4%B8%8B%E5%8D%8812.51.53.png)


MacOS 上自动定时执行:`$ crontab -e`
```crontab
*/30 * * * * /usr/bin/python /path/auto_claim_bot.py >> /tmp/auto_claim_bot.log
```
👍  , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , and 15 others
properties (23)
post_id83,995,219
authordappcoder
permlinksteem-python-steem
categoryhive-180932
json_metadata{"tags":["cn","chinese","whalepower","dblog","actnearn","neoxian","palnet","marlians","cn-marlians","mediaofficials","sct","sct-cn","sct-freeboard","upfundme","lassecash","spt","cc","steemleo","liv","vi","cn-stem","steemstem","cn-programming","hive-143316","zzan"],"image":["https:\/\/cdn.steemitimages.com\/DQmSLANaocCRwtucagvYzYrcu65Y6xLzzShZZavuE6adfw8\/0.jpg","https:\/\/cdn.steemitimages.com\/DQmWV8xK6kXFEW6YXDMDeGiuETrZFYs2A31hmovWKj7wr1A\/%E5%B1%8F%E5%B9%95%E5%BF%AB%E7%85%A7%202020-02-02%20%E4%B8%8B%E5%8D%8812.51.53.png"],"links":["https:\/\/steem.io","https:\/\/api.steemit.com"],"app":"steemzzang\/0.1","format":"markdown"}
created2020-02-02 04:55:36
last_update2020-02-02 04:55:36
depth0
children7
net_rshares5,272,907,119,423
last_payout2020-02-09 04:55:36
cashout_time1969-12-31 23:59:59
total_payout_value0.613 SBD
curator_payout_value0.606 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length2,801
author_reputation71,889,699,236,580
root_title"用官方的 steem-python 做一个稳健领取 steem 作者奖励和审查奖励的定时机器人"
beneficiaries[]
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000
author_curate_reward""
vote details (79)
@lvziyun · (edited)
我所有的梯子都挂了.远程能个机器人,倒是可以省事了
!shop
👍  ,
👎  ,
properties (23)
post_id84,038,607
authorlvziyun
permlinkq54sgo
categoryhive-180932
json_metadata{"app":"busy\/2.5.4"}
created2020-02-03 15:02:51
last_update2020-02-03 15:15:06
depth1
children0
net_rshares-22,856,871,001
last_payout2020-02-10 15:02:51
cashout_time1969-12-31 23:59:59
total_payout_value0.000 SBD
curator_payout_value0.000 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length31
author_reputation42,876,785,860,535
root_title"用官方的 steem-python 做一个稳健领取 steem 作者奖励和审查奖励的定时机器人"
beneficiaries[]
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000
author_curate_reward""
vote details (4)
@teamcn-shop · (edited)
你好鸭,dappcoder!

@lvziyun给您叫了一份外卖!

由 @jjprac jjprac 在晴空万里 开着巴士 给您送来
**蔬菜培根卷** <br> ![](https://cdn.steemitimages.com/DQmaaPPNjLFnmdJEsMLZXwodwjxwfD2bKcZmjjRaCB4gKZx/image.png)
吃饱了吗?跟我猜拳吧! **石头,剪刀,布~**

如果您对我的服务满意,请不要吝啬您的点赞~
@onepagex
properties (22)
post_id84,038,623
authorteamcn-shop
permlinkq54sgo
categoryhive-180932
json_metadata"{"app":"teamcn-shop bot\/1.0"}"
created2020-02-03 15:03:03
last_update2020-02-03 15:15:18
depth1
children2
net_rshares0
last_payout2020-02-10 15:03:03
cashout_time1969-12-31 23:59:59
total_payout_value0.000 SBD
curator_payout_value0.000 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length234
author_reputation65,900,527,192,856
root_title"用官方的 steem-python 做一个稳健领取 steem 作者奖励和审查奖励的定时机器人"
beneficiaries[]
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000
@lvziyun ·
$0.04
剪刀
👍  
properties (23)
post_id84,039,097
authorlvziyun
permlinkq54szr
categoryhive-180932
json_metadata{"app":"busy\/2.5.4"}
created2020-02-03 15:14:18
last_update2020-02-03 15:14:18
depth2
children1
net_rshares257,237,832,647
last_payout2020-02-10 15:14:18
cashout_time1969-12-31 23:59:59
total_payout_value0.021 SBD
curator_payout_value0.022 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length2
author_reputation42,876,785,860,535
root_title"用官方的 steem-python 做一个稳健领取 steem 作者奖励和审查奖励的定时机器人"
beneficiaries[]
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000
author_curate_reward""
vote details (1)
@teamcn-shop ·
https://4.bp.blogspot.com/-D1FktV9gZP4/WoGwFdRlKoI/AAAAAAATXJA/UPoM2KOdBokqK-9u-4SUH-MuswtcHG_HQCLcBGAs/s1600/AW785125_16.gif 
 You win!!!! 你赢了!我这新手村猜拳小能手的名号让给你了! 给你1枚SHOP币!
properties (22)
post_id84,039,104
authorteamcn-shop
permlinkq54szr
categoryhive-180932
json_metadata"{"app":"teamcn-shop bot\/1.0"}"
created2020-02-03 15:14:27
last_update2020-02-03 15:14:27
depth3
children0
net_rshares0
last_payout2020-02-10 15:14:27
cashout_time1969-12-31 23:59:59
total_payout_value0.000 SBD
curator_payout_value0.000 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length173
author_reputation65,900,527,192,856
root_title"用官方的 steem-python 做一个稳健领取 steem 作者奖励和审查奖励的定时机器人"
beneficiaries[]
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000
@lvziyun ·
🐂,我也要搞机器人
👍  
👎  
properties (23)
post_id84,040,897
authorlvziyun
permlinkre-dappcoder-202024t02332109z
categoryhive-180932
json_metadata{"tags":["cn","chinese","whalepower","dblog","actnearn","neoxian","palnet","marlians","cn-marlians","mediaofficials","sct","sct-cn","sct-freeboard","upfundme","lassecash","spt","cc","steemleo","liv","vi","cn-stem","steemstem","cn-programming","hive-143316","zzan"],"app":"esteem\/2.2.4-mobile","format":"markdown+html","community":"hive-125125"}
created2020-02-03 16:23:36
last_update2020-02-03 16:23:36
depth1
children0
net_rshares-17,356,370,817
last_payout2020-02-10 16:23:36
cashout_time1969-12-31 23:59:59
total_payout_value0.000 SBD
curator_payout_value0.000 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length9
author_reputation42,876,785,860,535
root_title"用官方的 steem-python 做一个稳健领取 steem 作者奖励和审查奖励的定时机器人"
beneficiaries
0.
accountesteemapp
weight300
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000
author_curate_reward""
vote details (2)
@lvziyun ·
很详细啊,应该能学会
👍  ,
👎  ,
properties (23)
post_id84,040,909
authorlvziyun
permlinkre-dappcoder-202024t02427749z
categoryhive-180932
json_metadata{"tags":["cn","chinese","whalepower","dblog","actnearn","neoxian","palnet","marlians","cn-marlians","mediaofficials","sct","sct-cn","sct-freeboard","upfundme","lassecash","spt","cc","steemleo","liv","vi","cn-stem","steemstem","cn-programming","hive-143316","zzan"],"app":"esteem\/2.2.4-mobile","format":"markdown+html","community":"hive-125125"}
created2020-02-03 16:24:27
last_update2020-02-03 16:24:27
depth1
children0
net_rshares-104,878,659,145
last_payout2020-02-10 16:24:27
cashout_time1969-12-31 23:59:59
total_payout_value0.000 SBD
curator_payout_value0.000 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length10
author_reputation42,876,785,860,535
root_title"用官方的 steem-python 做一个稳健领取 steem 作者奖励和审查奖励的定时机器人"
beneficiaries
0.
accountesteemapp
weight300
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000
author_curate_reward""
vote details (4)
@lvziyun ·
有机器人真好,
👍  
👎  , ,
properties (23)
post_id84,040,973
authorlvziyun
permlinkre-dappcoder-202024t02825798z
categoryhive-180932
json_metadata{"tags":["cn","chinese","whalepower","dblog","actnearn","neoxian","palnet","marlians","cn-marlians","mediaofficials","sct","sct-cn","sct-freeboard","upfundme","lassecash","spt","cc","steemleo","liv","vi","cn-stem","steemstem","cn-programming","hive-143316","zzan"],"app":"esteem\/2.2.4-mobile","format":"markdown+html","community":"hive-125125"}
created2020-02-03 16:28:27
last_update2020-02-03 16:28:27
depth1
children0
net_rshares-89,160,149,138
last_payout2020-02-10 16:28:27
cashout_time1969-12-31 23:59:59
total_payout_value0.000 SBD
curator_payout_value0.000 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length7
author_reputation42,876,785,860,535
root_title"用官方的 steem-python 做一个稳健领取 steem 作者奖励和审查奖励的定时机器人"
beneficiaries
0.
accountesteemapp
weight300
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000
author_curate_reward""
vote details (4)