谢谢你关注我呀!!!

谢谢你关注我呀!!!

貌似之前说的寒假好好写专栏的,但是我发现了,我就不是个能静下心来写字的孩纸。好久之前写了一篇就逃跑到九霄云外去了。再加上2月份的时候中间插了个美赛(哎哟说起美赛我要吐槽的也很多!),美赛之后没几天又过年了,So …… you know……

然后这次我来是介绍新写的项目滴,地址在这里:GitHub - 7sDream/qqqfome: Thank-you-follow-me Ha Ha Ha!

名字叫:qqqfome

意思是:3q fo me --> thank you follow me --> 谢谢你关注我呀!!!

这是个我写来准备在 VPS 上长期后台运行的,用来给我的新关注者自动发送一条私信的后台服务。由于 Readme 写的非常赶,基本上就是最简了,可能看上去有点麻烦……于是我来这里写个教程。

首先上结果图:

大概就是这样啦~~当然,消息什么的是可以自定义的!你也可以卖个萌神马的~~

好了接下来写图文版配置过程。


恩,首先,你得有个 VPS。或者你只是想试试的话,用自己的 Linux 系统的电脑也可以啦,每次开机启动一下就好。Windows 的话肯定是没法后台的,前台运行我也没有测试,下次再说吧。

然后,VPS 上得有 Python 3.x 和 pip3。好吧我们开始!

第一步:SSH 到远程主机

第二步,安装 qqqfome:

sudo pip3 install qqqfome

如果结果和上面差不多的话就是安装成功了。

第三步,在你喜欢的地方建立一个工作目录并且进入它:

第四步,我们来检查一下安装是否成功了(可跳过):

which qqqfome

第五步,初始化数据库:

qqqfome -v init

按照提示输入 email 和 password 之后,这里是要我们输入验证码。

此时会在目录下生成一个 captcha.gif,我们需要查看它。如果你是 Desktop 环境的话直接看就好,但是 VPS 没有 GUI 没法看。于是我这里新开一个终端,把文件弄到本地查看(开始的那个别关):

scp <your-vps>:/your/work/path/captcha.gif captcha.gif

然后打开 captcha.gif,把验证码输入进去。

回车之后就需要等待了……取决于你 VPS 访问知乎的网速:

这一步可能要一段时间,如果你是个急性子,想看看获取100个用户的进度,那么在开始执行的时候请把-v替换成-vv

额,什么,你说你没有100个关注者?好吧……是我考虑不周,但是我用脑子跑了一遍代码,感觉就算不够100个应该也不会报错的……如果报错了你私信我 = =

经过一段时间的等待之后,数据库就创建好了,查看一下,那个<your-id>.sqlite3就是啦:

第六步,启动后台服务:

qqqfome -d start <your-id>.sqlite3

如果一切正常的话应该会出现两个文件,一个是日志,一个是进程ID,如上图所示。实际上,这时候程序就已经跑起来啦~

第七步,查看日志:

tail -f <your-id>.sqlite3.log

这样的就是成功跑起来的样子啦,你就可以退出 SSH,让它自己跑着了……

接下来就是等待新关注者的到来了,如果有新关注者的时候你正好在看Log的话,就会是如下的样子:

后台程序会在发送失败时自动重试,并且记录报错信息:

好啦,成功啦:

恩,当然start命令启动的时候还提供了一些命令行参数来精细化控制:

  • 不写 -d 的话会运行在前台
  • -t 参数以秒为单位设定两次轮询的间隔,默认是90秒
  • -m 参数用于自定义发送的消息;-M 参数指定一个包含了消息的文件
  • -p 和 -l 参数用于指定pidfile和log文件,一般来说默认就好

停止的话是这样:

qqqfome stop <your-id>.sqlite3

提示:如果任何时候 pidfile 消失了,那么就是后台错误自己退出了……不用手动stop。这时候就去看看 Log 提 Issue 吧……


程序的一些细节:

快速的关注和取消是没法收到私信滴。

收到了一次私信就会被加入数据库,取关再关注是不会再次收到滴。

关注后大概等个两分钟才能收到私信哟,不过有上面的 -t 参数可以改。


发送的消息里支持四个宏:

  1. {now},发送消息的北京时间
  2. {my_name},自己的知乎昵称
  3. {your_name},对方的知乎昵称
  4. {follower_num},对方在你关注者里的序号

-m 参数有点奇怪,如果要转义符(换行什么的)的话,则需要使用单引号且前面加美元符号:

qqqfome -m $'Line 1\nLine 2' -d start

这样才行。

参考资料:bash - Parsing \ in command line argument


Daemon 使用的是 *nix 的 Double-Fork,但是我参考的代码里说OS X上执行的话会有问题,我还没有测试。


好啦,希望大家发挥想象力玩的开心~~忘了点个 Star 什么的哟~

有什么要求/Bug的话也请去 Issue 里提吧,因为这个鬼东西测试起来非常麻烦,所以估计Bug还是有一堆的(比如经常因为网络问题自动退出什么的)……现在只是属于勉强能跑罢了……

好了你们可以关注我了……就当帮我测试好呗?Thank U。


@知乎小管家,别封我哈!我这程序只有关注我才会发私信哒!没法用来批量发广告的呀!!!



题图是 Public Domain 的,来自:免费照片: 手, 给, 笔, 纸, 谢谢, 信件

编辑于 2016-02-13 14:50