一个可以每日发送昨天热搜数据的小程序。
最初的想法主要是想解决自己不喜欢刷微博却又不想错过一些当前热门事件的需求。最终,写了一个一两百行代码的程序和一个邮件模板 Html 文件解决了这个的需求。本文主要记录解决这个问题的流程及思考。
实现这个 idea,前提是能搞到微博等平台的热搜数据。这个其实早就已经解决了,在我的服务器上每天都有程序在采集微博、抖音和头条的热搜榜单数据。所以,本文并不讲述如何爬取热搜数据。(这可是我这个应用唯一有门槛的部分了)
设计 Logo
当数据准备妥当后,开始着手设计 Logo。没有艺术细胞的我,只得走极简路线。鼓捣半天,做出来一个头图。
设计邮件模版
同样是极简风格的路线。
编写词云程序
虽然有现成的库可以生成词云,但是为了样式美观,还是测试了好几种字体以及词云样式。最终决定用微软雅黑字体和词云的默认配置。词云内容来自微博、抖音和头条的热搜关键词。
生成图片后,需要考虑将图片存储到七牛云还是存到自己服务器上的对象存储服务。最终,经过决定将图片编码为 Base64 格式放到模板里。在这个场景中,这种方式最为稳定可靠。
测试邮箱
申请邮箱,编写邮件发送模块。经过测试,邮件模板正常显示。
选择模版引擎
之前使用 Django 时,都是使用框架自带的模板引擎。经过调研发现有两款模版渲染引擎比较靠谱,一个是 mako ,另一个就是 Jinja2。对比后,感觉Jinja2更好用一些。 然后,以 Jinja2 支持的语法来编辑邮件模板。
编写主程序
经过上述准备,开始编写主程序。最初只打算写自己用的小程序,但是一向乐于分享的我考虑到可能有和我有同样需求的同学,所以在设计上对于以后扩展留有余地。单独准备了一张用户表用户存储用户的一些个性化配置数据,前端界面开发的进度视用户数量情况而定。
效果展示
订阅方式
目前仅支持使用【接收邮箱】发送【昵称】、【微博热搜数据数量】(非必填,默认25条)到 [email protected] ,取消订阅也需要发送邮件告知管理员。