“青柠日报”小程序
一个可以每日发送昨天热搜数据的小程序。
最初的想法主要是想解决自己不喜欢刷微博却又不想错过一些当前热门事件的需求。最终,写了一个一两百行代码的程序和一个邮件模板 Html 文件解决了这个的需求。本文主要记录解决这个问题的流程及思考。
实现这个 idea,前提是能搞到微博等平台的热搜数据。这个其实早就已经解决了,在我的服务器上每天都有程序在会采集微博、抖音和头条的热搜榜单数据。所以,本文并不讲述如何爬取热搜数据。(这可是我这个应用唯一有门槛的部分了)
设计 Logo
当数据准备妥当后,开始着手设计 Logo。没有艺术细胞的我,只得走极简路线。鼓捣半天,做出来一个头图。
设计邮件模版
同样是极简风格的路线。
编写词云程序
虽然有现成的库可以生成词云,但是为了样式美观,还是测试了好几种字体以及词云样式。最终决定用微软雅黑字体和词云的默认配置。词云内容来自微博、抖音和头条的热搜关键词。
生成图片后,需要考虑将图片存储到七牛云还是存到自己服务器上的对象存储服务。最终,经过决定将图片编码为 Base64 格式放到模板里。在这个场景中,这种方式最为稳定可靠。
测试邮箱
申请邮箱,编写邮件发送模块。经过测试,邮件模板正常显示。
选择模版引擎
之前使用 Django 时,都是使用框架自带的模板引擎。经过调研发现有两款模版渲染引擎比较靠谱,一个是 mako ,另一个就是 Jinja2。对比后,感觉Jinja2更好用一些。 然后,以 Jinja2 支持的语法来编辑邮件模板。
编写主程序
经过上述准备,开始编写主程序。最初只打算写自己用的小程序,但是一向乐于分享的我考虑到可能有和我有同样需求的同学,所以在设计上对于以后扩展留有余地。单独准备了一张用户表用户存储用户的一些个性化配置数据,前端界面开发的进度视用户数量情况而定。
效果展示
订阅方式
目前仅支持使用【接收邮箱】发送【昵称】、【微博热搜数据数量】(非必填,默认25条)到 i@qingning99.cn ,取消订阅也需要发送邮件告知管理员。
原文链接:https://www.changxuan.top/?p=1032
- 数据库中间件 Sharding-JDBC 源码分析 —— SQL 解析(一)之语法解析
- phalcon-入门篇4(log日志和session缓存)
- zephir-(5)类型
- zephir-(10)内置函数
- zephir-(9)类和对象2
- 深度学习中的动手实践:在CIFAR-10上进行图像分类
- 数据库中间件 MyCAT源码分析 —— XA分布式事务
- [喵咪Golang(1)]Go语言开篇
- phalcon-进阶篇2(拦截器)
- 【死磕Java并发】—–深入分析synchronized的实现原理
- phalcon-进阶篇1(过滤与清理)
- phalcon-入门篇9(view层基础使用)
- PhalApi视频教程
- 【学术】一文搞懂自编码器及其用途(含代码示例)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- MQ 系列之初识消息中间件
- Leetcode 第23场双周赛C 5361. 圆和矩形是否有重叠 (计算几何 初中数学)
- vue-cli 4 快速构建一个 Vue 项目
- SpringDataJPA 系列之快速入门
- Leetcode 第23场双周赛B 5362. 构造 K 个回文字符串(map,思维)
- Java 水题系列(1)数字金字塔
- Leetcode 836. 矩形重叠
- 详解 Vue 目录及配置文件之 config 目录
- Nginx 搭建静态资源服务
- vue 使用自定义字体
- vue 跨域问题
- Shell 递归查找文件
- element-ui 实现嵌套表格
- Leetcode 第23场双周赛A 5360. 统计最大组的数目 (手速题,map)
- Java 水题系列(4)数组合并