多说将于2017/06/01关闭服务,Disqus仍不可用。今天试了下网易云跟贴,有很喜欢的地方,也有很不满意的地方。
网站建站之初(2014年),那会Disqus已经被墙了,经过细致的比较,最后选择了多说,一用就是两年多,共产生686条评论(包括自己的回复)。
有一段时间,多说黄色广告垃圾评论特别多,加了关键词过滤,没有一点效果。那会萌生了更换评论系统的念头,但实在没找到好的替代品。尽管多说不支持Markdown,偶尔刷不出来(可能是因为在国外的原因),但总体上用着很舒服。
上周收到多说网邮件,说将于2017年6月1日关闭服务(详情见:重要通知: 多说即将关闭)。将多说插件停用,原生态的评论系统丑得不行,不得不找一个替代品。今天试了下网易云跟贴,有很喜欢的地方,也有很不满意的地方。
最后,感谢多说团队提供的便利。截图一张用于怀念。
安装网易云跟贴很简单。安装插件,详情见:网易云跟贴帮助文档 – WordPress插件安装;导出多说评论数据。进入多说管理后台,点击左侧工具,点击导出数据,勾选包含文章数据
和包含评论数据
,导出评论;将评论数据导入网易云跟贴,详情见:网易云跟贴帮助文档 – 导入数据。
用了一下午,说下体验。先说说优点,界面很简洁,评论盖楼嵌套很直观,举例如下:
但是,缺点也很明显:
除此之外,还有一个很严重的问题。在云跟贴留言,前台刷新就看不到留言了(设置的是先发后审),后台要过很久(甚至高达1个小时)才能看到评论。我就想是不是因为开通了站长审核。然而,尽管我关闭了站长审核,提交评论还是显示“跟帖被审核”,进入后台,也看不到这个留言(估计要等很久吧)。这点体验相当不友好,访客会以为自己没成功提交留言,进而多次提交。
哦,对了,修改评论昵称和头像,需要在网易贴吧上改,不在云跟贴的管理后台。
多说和网易云跟贴存储评论的格式都是JSON,处理起来很方便。关于JSON,摘抄Wikipedia如下:
JSON (/ˈdʒeɪsən/) is an open-standard format that uses human-readable text to transmit data objects consisting of attribute–value pairs. It is the most common data format used for asynchronous browser/server communication, largely replacing XML, and is used by AJAX.
JSON is a language-independent data format. It was derived from JavaScript, but as of 2017 many programming languages include code to generate and parse JSON-format data. The official Internet media type for JSON is
application/json
. JSON filenames use the extension.json
.
勾选了包含文章数据
和包含评论数据
,导出的文件export.json
包含threads
和posts
数据,详情见:多说导出的评论文件说明。这里,将其摘抄过来,方便日后分析评论。
threads
文章记录,属性如下:
thread_id 多说文章ID
thread_key 文章在当前站点中的唯一表示符,例如文章ID。
title 文章的标题
url 文章链接
author_key 文章作者在本站的ID
author_id 文章作者的多说ID,如果为空,说明发表文章时没有登陆多说账号
likes 文章被点【赞】的次数
views 文章浏览数
# 一个实例
{ u'thread_key': u'1609',
u'views': 0,
u'url': u'http://sparkandshine.net/wordpress-load-google-open-sans-normally/',
u'created_at': u'-0001-11-30T08:00:00+08:00',
u'title': u'WordPress\u6b63\u5e38\u52a0\u8f7d\u8c37\u6b4c\u5b57\u4f53Google Open Sans',
u'site_id': u'1071326',
u'updated_at': u'2015-12-11T06:45:20+08:00',
u'thread_id': 6226763126134539009,
u'likes': 0,
u'author_id': u'5622282',
u'author_key': u'1'}
posts
是多说的评论,不包括微博、删除评论、垃圾评论;
post_id 多说评论ID
thread_id 这条评论对应的文章记录
message 评论内容
created_at 评论发表时间
author_id 作者在多说的id。空表示匿名用户
author_name 作者显示名。有可能为空
author_email 作者邮箱。有可能为空
author_url 作者填写的URL。有可能为空
ip 作者的IP地址
# 一个实例
{ u'post_key': u'1177935394138750992',
u'thread_key': u'290',
u'thread_id': 1177935394138751065,
u'author_email': u'',
u'ip': u'113.251.219.43',
u'created_at': u'2014-10-31T10:53:42+08:00',
u'site_id': 1071326,
u'updated_at': u'1970-01-01T08:00:00+08:00',
u'author_name': u'\u65e0\u4e3a\u4f55\u81f3',
u'post_id': 1177935394138750992,
u'parents': [],
u'likes': 0,
u'message': u'\u697c\u4e3b\u592a\u597d\u4e86\uff0c\u6574\u7406\u51fa\u8fd9\u4e9b\u6709\u7528\u7684\u4e1c\u897f\uff0c\u65b0\u624b\u521a\u63a5\u89e6\uff0c\u76fc\u671b\u80fd\u8ddf\u697c\u4e3b\u591a\u4ea4\u6d41\u5b66\u4e60\uff01\uff01\uff01',
u'author_key': u'0',
u'author_id': 9493092,
u'author_url': u'http://weibo.com/2560944840'}
有了这些之后,就可以处理评论数据了。比如我想筛选出所有评论者的用户名和邮箱,Python源代码如下:
from __future__ import unicode_literals
import json
with open('export.json') as data_file:
data = json.load(data_file)
# The total number of comments
print(len(data["posts"]))
author_emails = set([(d['author_name'], d['author_email'])
for d in data["posts"] if d['author_email']])
#print(len(emails))
for author_name, author_email in author_emails:
s = '{:<20s}\t{}'.format(author_name, author_email)
print(s)
顺手把网易云跟贴导出的文件也了解下,方便日后分析评论。其格式如下,详情见:网易云跟贴帮助文档 – 数据导出。
[{
"title":"标题",
"url":"网址",
"sourceId":"文章标识",
"ctime":发贴时间,
"comments": //跟贴信息
[{
"cid":"跟贴ID",
"ctime":发贴时间,
"content":"跟贴内容",
"pid":"盖楼父楼层ID",
"ip":"发贴IP",
"port":0,"sc":"web",
"vote":顶数,
"against":踩数,
"anonymous":false,
"user"://用户信息
{ "userId":"用户ID",
"nickname":"用户昵称",
"avatar":"用户头像",
"anonymous":是否匿名
}
}]
}]
# 一个实例
[{ "title":"《圆桌派》片尾曲",
"url":"sparkandshine.net/?p=2320",
"sourceId":"2320",
"ctime":1485895738000,
"comments":[{"cid":"55307728",
"ctime":1487630150000,
"content":"还是自己平台靠谱,视频中画面和音频同步。",
"pid":"0","ip":"79.143.143.146",
"port":0,
"sc":"",
"vote":0,
"against":0,
"anonymous":false,
"user":{"userId":"112120900",
"nickname":"SparkandShin",
"avatar":"http://img5.cache.netease.com/tie/images/yun/photo_default_62.png",
"anonymous":false}}]}, ...
}]
最后一个小问题:跟帖 和 跟贴,哪个是对的,还是都对?