昨天有一个很久没联系的朋友突然戳我
众所周知,由于提供了交友这一功能,「缘分天空」成为了98除「心灵之约」之外流量最大的一个版面。大丈夫不为五斗米折腰,但是可以为板烧鸡腿堡,所以我就帮他写了。
这个功能应该怎么实现呢?其实无非就是隔一段时间查看一下新帖中有没有征人的贴就好了。
在「查看新帖」页面打开开发者工具,可以找到这样一个API:
https://api.cc98.org/topic/new?from=0&size=20
这个API的响应是最近的20个帖子的数据,要注意的是请求头里必须带上authorization
这个参数,这个参数包含在登录请求的响应中。
频繁发送请求是不好的,不仅会加重服务器的负担,还可能被98的反爬虫系统抓住。所以要观察一下98发帖的速度。大部分情况下,30分钟内的新帖个数不会超过20个,也就是说我们每隔30分钟,获取一下最新的帖子列表,然后再根据帖子的boardId
属性判断一下有没有缘分的帖子即可。
我一开始的想法是如果发现有缘分天空的新帖,就用Python的smtplib
模块给他发送一个邮件,让他及时查看。突然想起来之前在Github上一个抢口罩的程序中看到他是用「Server酱」完成消息推送,就尝试了一下。
Server酱原理图示Server酱是什么
「Server酱」,英文名「ServerChan」,是一款「程序员」和「服务器」之间的通信软件。说人话?就是从服务器推报警和日志到手机的工具。开通并使用上它,只需要一分钟:
- 登入:用GitHub账号登入网站,就能获得一个SCKEY(在「发送消息」页面)
- 绑定:点击「微信推送」,扫码关注同时即可完成绑定
- 发消息:往 http://sc.ftqq.com/SCKEY.send 发GET请求,就可以在微信里收到消息啦
使用的时候只需要用Requests模块对这个URL发送一个请求即可
因为支持mardown,我就索性把帖子中的图片由ubb语法转成markdown语法了,实现方法很简单:
md_content = content.replace('\n', '<br>').replace('[img]', '![](').replace('[/img]', ')')
至于任务调度,因为这个任务比较简单,我就用了Python的schedule
模块,这是一个轻量级的任务调度模块。如果有更复杂的需求,可以使用apscheduler
。
然后我做了一个简单的测试:
似乎没有什么问题,加上帖子的内容再测试一下:
弄完了我就愉快的去吃东西了,然而过了一会:
赶紧跑回实验室改bug,果然改完这个bug就没问题了
征到没征到我不知道,反正最近板烧鸡腿堡吃到吐。