[learning]steem区块链机器人开发学习活动(4)-基础点赞机器人
目录:
steem api,官方帮助文档:https://developers.steem.io/apidefinitions/
前面学习了一些基础知识,下面我们以开发一个点赞机器人作为例子,学习学习。
我们首先简单的设计一个机器人:
假设手头有个列表,这个列表手动更新,名单里的人点赞最新文章。每10分钟检测一次是否需要点赞。
设定一个点赞列表
name_list=[{"name":"maiyude","percent":100},{"name":"justyy","percent":100}]
简单这样写个字典就好,第一个参数是名字,第二个参数是点赞多少%。这里我们设定点赞maiyude和justyy两个人,点赞100%。
使用get_blog API获取最新文章信息
然后就是获取名单里最新文章的链接,这里可以使用get_blog API获取。一个示例:
import requests
nodes="https://api.justyy.com"
data={"jsonrpc":"2.0", "method":"condenser_api.get_blog", "params":["maiyude",0,3], "id":1}
r=requests.post(nodes,json=data)
result=r.json()["result"]
author=result[0]["comment"]["author"]#文章作者
permlink = result[0]["comment"]["permlink"] # 文章链接
title = result[0]["comment"]["title"] # 文章标题
print(author,permlink,title)
输出结果:
maiyude learning-steem-3-steem-api-op [learning]steem区块链机器人开发学习活动(3)-熟悉steem的API以及构建一个OP
现在我们获得了maiyude的最新文章链接,我们可以点赞了。
构建一个点赞OP
我们使用上节课学习过的知识,给上面获取的链接点赞。
from beem.steem import Steem
from beembase import operations
from beem.transactionbuilder import TransactionBuilder
import requests
nodes="https://api.justyy.com"
player="nutbox.awesome"
keys="5KYF68tH7"
name_list=[{"name":"maiyude","percent":100},{"name":"justyy","percent":100}]
author="maiyude"
permlink="learning-steem-3-steem-api-op"
s = Steem(keys=[keys],node=nodes)
weight=name_list[0]["percent"]*100
print(weight)
op=operations.Vote(**
{
'voter': player,
'author': author,
'permlink': permlink,
'weight': weight
}
)
tx = TransactionBuilder(steem_instance=s)
tx.appendOps(op)
#把签名添加
tx.appendSigner(player, "posting")
tx.sign()
broadcast=tx.broadcast()
print(broadcast)
我们可以看到在区块浏览器上点赞成功,接下来我们把这几个步骤组合起来,按照我们的前面写的需求,写一个简单的点赞机器人。
按照需求写点赞机器人
from beem.steem import Steem
from beembase import operations
from beem.transactionbuilder import TransactionBuilder
import requests
import time
nodes="https://api.justyy.com"
player="nutbox.awesome"
keys="5KYFnp68tH7"
name_list=[{"name":"maiyude","percent":100},{"name":"justyy","percent":100}]
while True:
for i in name_list:
name=i["name"]#名字
weight=i["percent"]*100#点赞比例
data={"jsonrpc":"2.0", "method":"condenser_api.get_blog", "params":[name,0,3], "id":1}
r=requests.post(nodes,json=data)
result=r.json()["result"]
author=result[0]["comment"]["author"]#文章作者
permlink = result[0]["comment"]["permlink"] # 文章链接
title = result[0]["comment"]["title"] # 文章标题
print("点赞:",name,"文章:",title,permlink)
s = Steem(keys=[keys],node=nodes)
op=operations.Vote(**
{
'voter': player,
'author': author,
'permlink': permlink,
'weight': weight
}
)
tx = TransactionBuilder(steem_instance=s)
tx.appendOps(op)
#把签名添加
tx.appendSigner(player, "posting")
tx.sign()
broadcast=tx.broadcast()
print(broadcast)
print("名单点赞完成,休息10分钟")
time.sleep(60*10)
显示点赞程序运行良好,我们看看区块上的信息如何
区块上也显示成功。
课后思考
胆大心思的你,按照这个程序运行,肯定会马上发现很多问题,比如重复点赞报错了怎么办?RC不够怎么办?他一天发N篇文章,我不想重复点怎么办?
这些问题我们未来几节课后一一解决,现在留作课后思考题,仔细思考一下。
课后作业
按照教程,尝试一下
上节课的课后作业答案:
https://github.com/maiyude2018/steem-leanrning/blob/main/3%E8%AF%BE%E5%90%8E%E9%A2%98%E7%AD%94%E6%A1%88.py
!shop
[WhereIn Android] (http://www.wherein.io)
你好鸭,maiyude!
@boylikegirl给您叫了一份外卖!
南瓜糕点
吃饱了吗?跟我猜拳吧! 石头,剪刀,布~
如果您对我的服务满意,请不要吝啬您的点赞~
石头
[WhereIn Android] (http://www.wherein.io)
It’s a tie! 平局!再来!下回我再出拳头!
布
[WhereIn Android] (http://www.wherein.io)
You lose! 你输了!乖乖的给我点赞吧!
厉害了👍
[WhereIn Android] (http://www.wherein.io)