Python Steem API介绍系列#2 - 帖子读取篇

今天来说说如何获取和帖子相关的信息,最后完成一个很实用的小程序,可以自动发送指定帐号的当日最新文章汇总到你的邮箱,可以设定为一个Cron job,这样就完全自动了。感觉Steem API越来越好玩了呢。。。

顺便请教一下@oflyhigh@myfirst 两位大神,我打算测试一下发帖功能,计划把测试的帖子都加上”test”作为主标签,也是唯一标签,如果发个十来条测试帖子,不会被踩吧???

另外,根据@oflyhigh的建议,试了一下Steem官方Python API,感觉基本上和之前用的piston-lib一样,只是个别的类会有点不同。

# 安装官方Python库

pip3 install -U steem

# 读取用户发帖信息

这里主要用到了BlogPost两个类。详细的方法列表请参考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 激励我创作更多更好的内容。

H2
H3
H4
3 columns
2 columns
1 column
7 Comments