今天来说说如何获取和帖子相关的信息,最后完成一个很实用的小程序,可以自动发送指定帐号的当日最新文章汇总到你的邮箱,可以设定为一个Cron job,这样就完全自动了。感觉Steem API越来越好玩了呢。。。
顺便请教一下@oflyhigh和@myfirst 两位大神,我打算测试一下发帖功能,计划把测试的帖子都加上”test”作为主标签,也是唯一标签,如果发个十来条测试帖子,不会被踩吧???
另外,根据@oflyhigh的建议,试了一下Steem官方Python API,感觉基本上和之前用的piston-lib一样,只是个别的类会有点不同。
# 安装官方Python库
pip3 install -U steem
# 读取用户发帖信息
这里主要用到了Blog和Post两个类。详细的方法列表请参考github上的源文件和官方文档。
首先,导入对应的Blog类:
from steem.blog import Blog
blog = Blog("yuxi")
读取最新的两篇文章:
print( blog.take(2) )
读取文章相关的信息,比如:标题,创建时间,文章链接地址,文章分类,标签,获得的upvote数量,获得奖励/预计奖励等等
for p in blog.take(3):
print("created: %s" % p['created'])
print("permlink: %s" % p['permlink'])
print("comments: %s" % str(len(list(p.get_replies()))))
print("url: %s" % p['url'])
print("categories: %s" % str(p['category']))
print("tags: %s" % str(p['tags']))
print("votes: %s" % str(p['net_votes']))
print("reward: %s" % str(p['total_payout_value'] + p['pending_payout_value']))
print()
获取某个用户的评论信息
comments = Blog("yuxi", True)
print (comments.take(2))
自动发送感兴趣用户的当日最新帖子到指定邮箱
其实有了上面的Blog和Post类,玩法就很多了,比如:可以让程序自动搜集指定用户的特定文章,再生成RSS feed放到一个web服务器上,这样就可以在RSS阅读器中阅读了,当然也可以设定一个Cron job,每天自动发送一条感兴趣文章的汇总。更多的玩法欢迎大家大开脑洞,在下面留言。
下面实现一下自动发送感兴趣作者的当日最新文章到指定邮箱,这里只列举了 @myfirst, @oflyhigh, @tumutanzi三位的每日文章。
import smtplib
from email.mime.text import MIMEText
from datetime import datetime
from steem.blog import Blog
users = ["myfirst","oflyhigh",”tumutanzi”]
# 只检查最新3篇文章,再多了我就怀疑文章的质量了,当然也许有大牛能每天创作更多文章
number_of_posts_to_check = 3
host = 'https://steemit.com'
content = ''
for user in users:
content += 'From ' + user + '
'
content += '------------------
'
posts = Blog(user)
for p in posts.take(number_of_posts_to_check):
p_date = p['created']
today = datetime.today().date()
created_today = (p_date.date()==today)
if created_today == True:
content += '' + p['title'] + "
"
content += ' Category: ' + str(p['category']) + "
"
content += ' Tags: ' + str(p['tags']) + "
"
content += ' Votes: ' + str(p['net_votes']) + "
"
content += ' Comments: ' + str(len(list(p.get_replies()))) + "
"
content += ' Rewards: ' + str(p['total_payout_value'] + p['pending_payout_value']) + "
"
content += '
'
content += '
'
fromaddr = '你的Gmail邮箱'
toaddrs = '你的接收邮箱'
subject = 'Daily posts: ' + datetime.today().strftime('%Y-%m-%d')
message = MIMEText(content.encode('utf-8'), _subtype='html', _charset='utf-8')
message['Subject'] = subject
username = 'XXXXXXXX'
password = 'XXXXX'
server = smtplib.SMTP('smtp.gmail.com:587')
server.ehlo()
server.starttls()
server.login(username,password)
server.sendmail(fromaddr, toaddrs, message.as_string())
server.quit()
这是我收到的email:
https://steemit.com 首发。非常感谢阅读,欢迎FOLLOW和Upvote @yuxi 激励我创作更多更好的内容。