《steem 指南》——12.3.1 点赞机器人开发示例(2)——条件判断和留言库

in #cn5 years ago (edited)

上一节.12.3.1 点赞机器人开发示例(1)

上一节我们学习了简单的写了一个自赞机器人,但是这个机器人太傻了。

运行着运行着网络错误了怎么办?有时候导致重复发留言,重复点赞,导致我VP和RC双双不够了怎么办?

那这个时候就需要加上各种各样的条件了。

条件是什么?就是让这个机器人在满足某些条件后才开始工作,比如我们可以让机器人判断当VP大于98%才开始工作。或者用时间来当判断条件,或者各种各样你需要的判断条件加上也可以。

条件加完了,但是这个机器人的评论太单调了,能像@cnbuddy那样随机给一些丰富多彩的留言吗?当然是可以的,只要建立留言库就可以。甚至你可以分析文本意思给予智能回答。

我们还是一步步来吧,首先在上一节的基础上继续画一下我们的程序逻辑图,我们加上判断VP的程序。

获得VP有很多办法,使用python-steem库是一种办法。

from steem.account import Account
account = Account('weicomenew')
print(account

使用@justyy提供的api也是一种非常快捷的办法。
https://uploadbeta.com/api/steemit/account/vp/?cached&id=weicomenew

使用get的方式就可以获取用户的vp

r = requests.get("https://uploadbeta.com/api/steemit/account/vp/?cached&id=weicomenew")
vp = r.text
vp=float(vp)

获取了VP,我们只要写一个简单的IF语句即可:
当VP大于98,我们执行程序。当VP小于98,我们等待恢复到98.要等待多久呢?
我们可以数学计算一下,一个小时恢复0.83333333%vp
那就是需要等待(98 - n) * 0.8333 * 60 * 60)秒。

if vp < 98:
    times = int((98 - vp) * 0.8333 * 60 * 60)
    time.sleep(times)
else:

一个简单的条件查询和判断就写完了,接下来我们来丰富一下留言库。

最简单的留言库可以这样写:

import random
s1 = "test1"
s2 ="test2"
s3 ="test3"
s4 = "test4"
s5 = "test5"

rand = [s1, s1, s2, s3, s4,s5]
slice = random.sample(rand, 1)

这是一个简单的获取随机数的评论库。当然如果数据太多的话,用数据库的方式来建立更为合适。

首先你要建立自己的数据库,把数据都打好。用什么数据库随意,我使用的是sqlite3,因为python调用这个不用安装其他东西,简单方便。

我这里建了一个primas.db的数据库,里面建了一个叫pl的表,里面输入了一些评论数据。

数据库的语法大概是这样的:http://www.w3school.com.cn/sql/index.asp
不同数据库都差不多一样的用法.

import sqlite3
import random
con = sqlite3.connect('E:\\primas.db')  #读取数据库
cur = con.cursor()   #创建游标
pl_id = random.randint(1, 41)   #从1-41条中随意抽取一条
pl_base = "select * from pl where id=%s"  #打开数据
pl_sql = pl_base % pl_id
cur.execute(pl_sql)
ping = cur.fetchone()   #抽取数据

这样我们就成功从数据库中随机抽了一条评论了.

这节课就这样结束了,我们学习了一下加条件,和用http get的方式调用api,还有留言库的建立。

下面继续放完整的程序代码:

#!/usr/bin/python
# -*- coding: utf-8 -*-
from steem import Steem
from steem.post import Post
import json
import time
import datetime
import requests
import random

s1 = "test1"
s2 ="test2"
s3 ="test3"
s4 = "test4"
s5 = "test5"

rand = [s1, s1, s2, s3, s4,s5]
slice = random.sample(rand, 1)

now_time = datetime.datetime.now()

nodes = [
    'https://api.steemit.com',
    'https://steemd.pevo.science',
]
s = Steem(
    nodes,
    keys=["5HySYk", "5JKoh"]
)

id="weicomenew"  #发帖的人的id
post="test2"     #发帖的文章title
id_add_post="%s/%s" %(id,post)

get_vp_base_url = 'https://uploadbeta.com/api/steemit/account/vp/?cached&id=%s'
get_vp_url = get_vp_base_url % id
r = requests.get(get_vp_url)
vp = r.text
vp=float(vp)

if vp < 98:
    times = int((98 - vp) * 0.8333 * 60 * 60)
    time.sleep(times)
else:
    i = 1
    while i == 1:
        s.commit.post(
            None,
            slice,
            id,
             reply_identifier=id_add_post
            )

        print("评论发送成功")
        time.sleep(100)

        relies=s.get_content_replies(id, post)
        comment = relies[-1]["permlink"]
        print(comment)

        time.sleep(800)

        idaddcomment="%s/%s" % (id,comment)
        print(idaddcomment)

        s.commit.vote(
            idaddcomment,
            +10,
            account="weicomenew",
        )
        print("完成!")
        time.sleep(7740)


Sort:  

写得挺详细的!

机器人大军的崛起

YOU JUST GOT UPVOTED

Congratulations,
you just received a 14.14% upvote from @steemhq - Community Bot!

Wanna join and receive free upvotes yourself?
Vote for steemhq.witness on Steemit or directly on SteemConnect and join the Community Witness.

This service was brought to you by SteemHQ.com

Hi @maiyude!

Your post was upvoted by @steem-ua, new Steem dApp, using UserAuthority for algorithmic post curation!
Your UA account score is currently 3.467 which ranks you at #6462 across all Steem accounts.
Your rank has improved 335 places in the last three days (old rank 6797).

In our last Algorithmic Curation Round, consisting of 516 contributions, your post is ranked at #219.

Evaluation of your UA score:
  • You're on the right track, try to gather more followers.
  • The readers like your work!
  • You have already shown user engagement, try to improve it further.

Feel free to join our @steem-ua Discord server

Coin Marketplace

STEEM 0.35
TRX 0.12
JST 0.040
BTC 70734.57
ETH 3561.52
USDT 1.00
SBD 4.75