Skip to content
完善多说评论的评论邮件提醒功能
Python
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.gitignore
README.md
_config.conf
comment_notifier.py

README.md

介绍

如果你的博客使用了多说评论,那么很不幸,你的博客有了新留言你收不到提醒。多说评论系统设定的是只有别人回复了你的留言才会邮件通知你。虽然刚开始写博客的时候,给我们留言的人很少,或者也许以后也没有多少留言(此处应该有一个笑哭的表情,此刻看看窗外,那只猫也在嘲笑我),不过如果有人给我们留言了,那我们及时回复他也是一种尊重他的表现,所以用 python 编写了一个脚本解决多说评论的不完美提醒。

Requirement

  • python 2.7 以及 python 3 都可运行;
  • 此脚本只用到 requests 这一个第三方库,请安装:
$ pip install requests

实现原理

这是获取 多说评论后台操作日志 的官方说明。通过 requests 获取博客的评论日志,判断是否产生了新的日志,然后进一步判断是否是别人的评论或者回复(因为你自己回复别人也会产生操作日志),如果条件成立,则发送邮件;否则,等待下一次 check。另外,如果在脚本运行过程中出现问题,脚本会将错误信息以邮件的形式发送给我们,以便我们及时处理。

注意事项

请确保你开启了多说评论的通知提醒(在“个人资料”选项中填写邮箱地址),并且选择每条新回复都提醒我。因为只有这样设置,你在其他人的博客中留了言,然后别人回复了你,或者在你自己的博客中,别人回复了你,才能收到多说官方的邮件提醒。 而我编写的这个脚本,也是用于你自己博客中留言的邮件提醒。在你自己的博客中,如果别人回复了你(注意区分概念,是回复了你的某一条评论),多说评论官方会发送邮件提醒,此时,脚本就应该判断这条回复的父评论的作者是否是自己,如果是脚本就不发送提醒邮件,以免重复提醒。 设置多说

结果展示

  1. 如果新评论数 <= 20,那么显示详细的评论信息,并将文章题目设置为超链接,可以点击访问该文章,效果如下: 效果展示1

  2. 如果新评论数 > 20,就只是提示功能(显示过多反而不好),如下: 效果展示2

  3. 正如下面图片中展示的一样,脚本运行发生错误,邮件提示我“获取多说评论后台日志失败”,果然我检测多说网,那天晚上真的宕机了,不过第二天又恢复正常了~.~ 效果展示3


配置文件 (_config.conf)

[duoshuo_account]
short_name = 你在多说评论站点注册的多说二级域名
secret = 站点密钥
myself_author_id = 你的多说id,用于剔除自己给别人的回复提醒(这个id不好找,希望你能找到)
myself_author_url = 你的个人主页

[email_info]
email_host = smtp.xxx.com	# 请确保你的邮箱开启了SMTP服务
from_address = 发生邮件的邮箱地址
email_password = 邮箱密码
to_address = 接收邮件的邮箱地址

请认真仔细填写配置文件。

使用方法

第一步

$ git clone https://github.com/LooEv/duoshuo-comment-notifier.git ~/duoshuo-comment-notifier

$ chmod +x ~/duoshuo-comment-notifier/comment_notifier.py	#这一步很重要!

第二步,编辑 _config.conf 文件,将自己的配置信息填写完整。

第三步,设置定时运行脚本: 在 Linux中,运行下面的命令:

$ crontab -e	# 编辑当前用户的crontab文件

添加下面的内容:

0,30 8-23 * * * /usr/bin/env python ~/duoshuo-comment-notifier/comment_notifier.py >/dev/null 2>&1
# 每天8点到23点之间每隔30分钟执行脚本

* 8-23/1 * * * /usr/bin/env python ~/duoshuo-comment-notifier/comment_notifier.py >/dev/null 2>&1
# 或者每天8点到23点之间每隔1小时执行脚本

* 8-23/5 * * * /usr/bin/env python ~/duoshuo-comment-notifier/comment_notifier.py >/dev/null 2>&1
# 或者每天8点到23点之间每隔5小时执行脚本

视自己的情况而定,选择适当的间隔周期执行脚本。 >/dev/null 2>&1 表示将脚本的标准输出流和标准错误流都不显示(不用担心,脚本设置的日志文件依然会产生,以便我们发现问题所在),防止 crontab 产生的日志文件过大。 注意:如果你正在使用多个版本的 python,请自行修改上面代码中的 /usr/bin/env python,尽量将执行这个脚本的python的路径定死,并确保该python版本环境下安装了所需的第三方库。 恩,那什么,如果你没有 vps,使用的是 Windows 系统,可以使用创建计划任务的方式运行脚本,这里就不涉及相关教程了,如有需要请自行 google。

让脚本更加友好

为了让脚本的功能更加人性化,我设置了如下的特性:

  • 如果新评论数大于20条,就不显示评论的详细信息,只提示评论数,并提示你登录多说网查看详情,因为如果信息过多的话也不方便在邮件里面阅读。
  • 如果脚本运行失败的时候又正好有新的评论,需要将 last_counter 重新写入 action_counter_file 中,以免错过新评论。
  • 当脚本由于某些原因运行失败,比如无法获取多说网的数据,如果连续运行失败的次数 <= 2,就发送提醒邮件,提醒你检查原因;如果连续运行失败的次数 > 2,就不再发送邮件,因为如果我们暂时不方便修复脚本,提醒邮件就会一直发,让人心烦,所以需要设置这个判断功能。
  • 如果脚本连续运行失败的次数过多,而只会发送两封提醒邮件,如果你太忙很容易忘记这件事儿。为了不让你忘记检查原因,就每隔一定时间重新发送提醒邮件给你,发送邮件的周期请自行修改,因为这个周期需要根据你设置的执行脚本的间隔周期调整,才能起到既提醒了你又不扰人的效果。
  • 如果脚本运行的日志文件过大,会发送邮件提醒你删除日志(这种情况应该很少会出现,不过以防万一)。
You can’t perform that action at this time.