缘起
进到 Steemit 是被 推荐的, 注册成功的当天就发了封邮件, 想加入他建的微信群. 印象里他有提过要做一个微信群好友名录, 正好旅游前这几天事情不多, 花了点时间用 Python 折腾了一个名单发了过去.
发完名单就突然想到了上一篇文章里面用来处理排行榜的代码, 想想如果给群里好友来个排行呢? 上一篇文章碍于篇幅就没输出全部中文区的排名, 而真正尝试者又寥寥无几(这里要赞一下 的行动力). 光说不练假把式, 实战演习一下好了, 给群友做点福利.
思路
有了昨天的代码基础, 其实只要搞到要计算的排名名单就好了, 把它作为 authorObjects 变量传到代码里, 其他逻辑基本不用动.
怎么样搞到群排名名单呢? Github 找了找, 发现 nodejs 有 Itchat, python 有 wxpy, 都是还不错的项目. 看了下代码实现, 都还比较容易, 这次决定试试 python.
准备
使用 python 的时候要注意 python 是有两个大分支的, 2.x 和 3.x, 十分精分, 背后有个狗血的撕逼故事, 感兴趣的可以去了解一下, 不在本文的讨论范围. 因为我是蛮早以前就用 python2 的, 所以这次选择 2.7.10, 如果你的本机 python 环境不一样, 请注意 pip 等命令的不同, 这里不做赘述, 有问题请回复.
> python
Python 2.7.10 (default, Feb 7 2017, 00:08:15)
[GCC 4.2.1 Compatible Apple LLVM 8.0.0 (clang-800.0.34)] on darwin
如果环境下没有 pip, 需要自行安装一下, 在 mac 上很容易, 直接命令行解决
sudo easy_install pip
由于要使用到 wxpy 库, 所以在你的项目目录下, 先安装一下做准备
pip install wxpy
新建一个 app.py 文件, 作为主项目文件, 备用. 准备要昨天文章里的项目代码. 至此, 准备工作结束, 开始编码.
代码
app.py
#!/usr/bin/python
# -*- coding: utf-8 -*-
from __future__ import print_function
from wxpy import *
bot = Bot()
group = bot.groups().search(unicode('Steemit好友微信群', 'utf-8'))[0]
print("[", end='')
for member in group:
print("'" + member.name.lower() + "'", end=', ')
print("]")
print('==== End ====')
app-wechat.js
...
var authorObjects = [’cnjinbo', 'tumutanzi', ...]; // copy from app.py return value
...
说明
为了让 print 方法在 2.x 下面也支持 end 参数, 要在文件头部加上这句声明
from __future__ import print_function
由于群文件是中文, 我强制转了一下 utf-8, 你也可以试一下不转的结果
group = bot.groups().search(unicode('Steemit好友微信群', 'utf-8'))[0]
最后, 无论 wxpy 也好, Itchat 也好, 都是 hack 的微信的协议, 所以在测试时, 有一定概率会引起微信不适, 请自行拿捏. 我个人试下来还好.
结果
数据来源: https://steemdata.com/
用户范围: Steemit好友微信群
财富榜 (sorted by Estimated Account Value)
信誉榜 (sorted by Reputation score)
最后
"Steemit好友微信群"汇聚了中文区很多大牛和众多热心 Steem 人, 欢迎大家联系 加入, 这里不负责任的做波小推广.
以及, 是我老婆, 之前这个帐号下的游记都是由她撰写的, 最近她自己的账号终于通过了, 恳请大家关注她, 谢谢!