如果你的博客使用了多说评论,那么很不幸,你的博客有了新留言你收不到提醒。多说评论系统设定的是只有别人回复了你的留言才会邮件通知你。虽然刚开始写博客的时候,给我们留言的人很少,或者也许以后也没有多少留言(此处应该有一个笑哭的表情,此刻看看窗外,那只猫也在嘲笑我),不过如果有人给我们留言了,那我们及时回复他也是一种尊重他的表现,所以用 python 编写了一个脚本解决多说评论的不完美提醒。
- python 2.7 以及 python 3 都可运行;
- 此脚本只用到
requests
这一个第三方库,请安装:
$ pip install requests
这是获取 多说评论后台操作日志 的官方说明。通过 requests
获取博客的评论日志,判断是否产生了新的日志,然后进一步判断是否是别人的评论或者回复(因为你自己回复别人也会产生操作日志),如果条件成立,则发送邮件;否则,等待下一次 check。另外,如果在脚本运行过程中出现问题,脚本会将错误信息以邮件的形式发送给我们,以便我们及时处理。
请确保你开启了多说评论的通知提醒(在“个人资料”选项中填写邮箱地址),并且选择每条新回复都提醒我。因为只有这样设置,你在其他人的博客中留了言,然后别人回复了你,或者在你自己的博客中,别人回复了你,才能收到多说官方的邮件提醒。 而我编写的这个脚本,也是用于你自己博客中留言的邮件提醒。在你自己的博客中,如果别人回复了你(注意区分概念,是回复了你的某一条评论),多说评论官方会发送邮件提醒,此时,脚本就应该判断这条回复的父评论的作者是否是自己,如果是脚本就不发送提醒邮件,以免重复提醒。
[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,就不再发送邮件,因为如果我们暂时不方便修复脚本,提醒邮件就会一直发,让人心烦,所以需要设置这个判断功能。
- 如果脚本连续运行失败的次数过多,而只会发送两封提醒邮件,如果你太忙很容易忘记这件事儿。为了不让你忘记检查原因,就每隔一定时间重新发送提醒邮件给你,发送邮件的周期请自行修改,因为这个周期需要根据你设置的执行脚本的间隔周期调整,才能起到既提醒了你又不扰人的效果。
- 如果脚本运行的日志文件过大,会发送邮件提醒你删除日志(这种情况应该很少会出现,不过以防万一)。