Python Steem API介绍系列#2 - 帖子读取篇
今天来说说如何获取和帖子相关的信息,最后完成一个很实用的小程序,可以自动发送指定帐号的当日最新文章汇总到你的邮箱,可以设定为一个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 + '<br/>'
content += '------------------<br/>'
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 += '<a href="' + host+p['url']+'">' + p['title'] + "</a><br/>"
content += ' Category: ' + str(p['category']) + "<br/>"
content += ' Tags: ' + str(p['tags']) + "<br/>"
content += ' Votes: ' + str(p['net_votes']) + "<br/>"
content += ' Comments: ' + str(len(list(p.get_replies()))) + "<br/>"
content += ' Rewards: ' + str(p['total_payout_value'] + p['pending_payout_value']) + "<br/>"
content += '<br/>'
content += '<br/>'
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 激励我创作更多更好的内容。
发测试贴加test 唯一标签
一般不会有人踩
你的标签处,cn显示重复了 😄
想着cn-programming可能针对更专的人群,就加了。。。
误会,我说你的程序
看你的贴图,文章tags
API返回的就是这样,我想第一个cn是主标签吧,第二个往后的是其他标签。我也就没多做处理。
大哥居然对我感兴趣了……
喜欢你的文章,想不对你感兴趣都做不到啊。。。
脸红到脖子根了,哈哈,谢谢了啦。