这个模块是一个公众号的模块,名字叫“帮你看着”。

原本这个公众号是做股票监控提醒的,我也没炒股。因为接口支持写入任何内容,所以可以有其他的用处。比如做成天气预报定时提醒。

我们去npmjs中看下这个模块的详情。

可以看出,在使用之前,需要先关注一下一个用于接收提醒的公众号,

扫码,然后获得生成的账号和密码,就能使用这个模块了。

直接安装即可,而且使用方式也很简单:

const wxm = require('wxmnode');

let name = "80010120";//公众号生成的账号
let pwd ="888889";//公众号生成的密码
let content ="a";//内容
let type ="b";//类型
let desc ="c";//描述 let result = await wxm.sendMsgToUser(name, pwd, content, type, desc);//一次性方式
//或者
wxm.init(name, pwd );
let result = await wxm.sendMsg( content, type, desc);//绑定后发送

效果如下:

可以看出,要提醒的内容都被发送到了微信中了。

好了,发送到微信的功能找好了,我们在去找找获取天气情况的网站,然后把需要的内容抓取过来实时发送就可以了。

直接百度搜“天气”,这个网站就不错,而且看了下里面的数据量很全。

而且,url中可以直接看所填地区的天气。然后它的数据内容可以直接在源代码的json数据中能找到,这样就更方便解析了。

源代码:

nodejs中引入jquery和jsdom,和loadPage。

const { loadPage } = require("../../utils/utils");
const jQuery = require("jquery");
const jsdom = require("jsdom"); const { JSDOM } = jsdom; /**
* 获取百度天气信息
*/
module.exports = async (area = "西湖区") => {
const content = await loadPage(
`${"https://"}weathernew.pae.baidu.com/weathernew/pc?query=${encodeURIComponent(
area + "天气"
)}&srcid=4982`
);
const { document } = new JSDOM(content).window;
const window = document.defaultView;
const $ = jQuery(window);
const dataStr = $("script")
.eq(0)
.text()
.replace("window.tplData =", "")
.replace(";", "");
return JSON.parse(dataStr) || {};
};

loadPage为获取外部网页的html源码的,可以直接使用http模块来获取。

获取后使用jquery的 $("script").eq(0).text().replace("window.tplData =", "").replace(";", ""); 来拿到需要的部分。

所以,谁说现在没有jquery的使用需求呢,抓取数据不就是它的应用之一吗。只是需求不会很多罢了。

使用JSON.parse(dataStr) 把数据转换成json格式。

之后,导入node-schedule 和 wxmnode,

把需要发送提醒的用户账号密码和地区发送放在数组中。当然灵活一点可以使用数据库进行存放。

遍历每个用户,data为当前用户所在地区的天气预报数据,然后使用await wxm.sendMsg(content, type, desc) 即可发送内容到微信中。微信中就可以收到信息了。

另外可以使用schedule.scheduleJob 设置指定时间来触发发送到微信。把程序跑在云服务器里就可以了。

//定时获取百度天气信息
const scheduleBaiduWeather = async () => {
//天气信息发送到微信
async function weatherToWX() {
//每个用户都发送一次
for (let item of userList) {
const data = await getBaiduWeather(item.area);
const { weather = {} } = data;
const day15 = data["15_day_forecast"].info || []; //未来15天天气 let content = `${item.area}天气:\n\n${weather.weather},${weather.temperature}℃,${weather.wind_direction}${weather.wind_power}\n\n${weather.bodytemp_info},${weather.precipitation_type}`;
let type = "小海提醒";
let desc =
`今天全天:白天(${day15[0].weather_day}),晚上(${day15[0].weather_night}),${day15[0].temperature_night}℃ - ${day15[0].temperature_day}℃\n` +
`明天全天:白天(${day15[1].weather_day}),晚上(${day15[1].weather_night}),${day15[1].temperature_night}℃ - ${day15[1].temperature_day}℃\n` +
`后天全天:白天(${day15[2].weather_day}),晚上(${day15[2].weather_night}),${day15[2].temperature_night}℃ - ${day15[2].temperature_day}℃\n`; wxm.init(item.name, item.pwd); //初始化用户
let ret = await wxm.sendMsg(content, type, desc);
if (ret.code !== "0000") {
console.log("发送天气失败", ret);
}
}
} //每天6点触发
schedule.scheduleJob("0 0 6 * * *", async () => {
weatherToWX();
});
}; scheduleBaiduWeather()

使用nodejs的wxmnode模块,开发一个微信自动监控提醒功能,做个天气预报。的更多相关文章

  1. 如何快速地开发一个微信小程序

    如何快速地开发一个微信小程序呢?我觉得作为初学者,最好能有一个模板,然后改这个模板. 同样作为初学者,刚开始的时候我有下面的几个问题,后来通过问同学,我弄清楚了. 微信小程序可以连接MySQL或者Sq ...

  2. 微控工具xp模块-开发版[微信(wechat)二次开发模块]

    http://repo.xposed.info/module/com.easy.wtool   微控工具xp模块-开发版[微信(wechat)二次开发模块] 基于xposed框架的微信二次开发模块,方 ...

  3. 用Vue开发一个实时性时间转换功能,看这篇文章就够了

    前言 最近有一个说法,如果你看见某个网站的某个功能,你就大概能猜出背后的业务逻辑是怎么样的,以及你能动手开发一个一毛一样的功能,那么你的前端技能算是进阶中高级水平了.比如咱们今天要聊的这个话题:如何用 ...

  4. 开发一个微信小程序项目教程

    一.注册小程序账号 1.进入微信公众平台(https://mp.weixin.qq.com/),注册小程序账号,根据提示填写对应的信息即可.2.注册成功后进入首页,在 小程序发布流程->小程序开 ...

  5. 开发一个微信小程序实例教程

    一.注册小程序账号 1.进入微信公众平台(https://mp.weixin.qq.com/),注册小程序账号,根据提示填写对应的信息即可.2.注册成功后进入首页,在 小程序发布流程->小程序开 ...

  6. 前端工程师如何快速的开发一个微信JSSDK应用

    亲们,订阅号出来已经很久了,作为一个前端工程师或者全栈工程师,你是不是错过了什么?大概许多攻城狮同砚还没有反应过来订阅号怎么回事,就马上要被微信的应用号秀一脸了.在应用号还没有正式出来之前,我们赶紧一 ...

  7. 开发一个微信小程序教程

    一.注册小程序账号 1.进入微信公众平台(https://mp.weixin.qq.com/),注册小程序账号,根据提示填写对应的信息即可. 2.注册成功后进入首页,在 小程序发布流程->小程序 ...

  8. 【Nodejs】326- 从零开发一个node命令行工具

    本文由 IMWeb 社区授权转载自腾讯内部 KM 论坛.点击阅读原文查看 IMWeb 社区更多精彩文章. 什么是命令行工具? 命令行工具(Cmmand Line Interface)简称cli,顾名思 ...

  9. 解决VS Code开发Python3语言自动补全功能不带括号的问题

    Visual Studio Code(以下简称VS Code)用来开发Python3,还是很便利的,本身这个IDE就是轻量级的,才几十兆大小,通过安装插件的方式支持各种语言的开发.界面也美美哒,可以在 ...

随机推荐

  1. 2021年Java后端技术知识体系

    -----2021/1/22

  2. Redis 缓存击穿(失效)、缓存穿透、缓存雪崩怎么解决?

    原始数据存储在 DB 中(如 MySQL.Hbase 等),但 DB 的读写性能低.延迟高. 比如 MySQL 在 4 核 8G 上的 TPS = 5000,QPS = 10000 左右,读写平均耗时 ...

  3. Quartz 使用记录

    Quartz 使用记录 官网 https://www.quartz-scheduler.org/ 参考文档 Quartz 2.3.0 什么是 Quartz? 官方描述: Quartz is a ric ...

  4. 编译实战 | 手摸手教你在Windows环境下运行Redis6.x

    原创:微信公众号 码农参上,欢迎分享,转载请保留出处. 哈喽大家好啊,我是没事就愿意瞎捣鼓的Hydra. 不知道有没有小伙伴像我一样,平常开发中用的是windows操作系统,有时候想装点什么软件,一看 ...

  5. JavaWeb项目端口占用问题

    今天使用springboot编写项目的时候安装了一个插件,重启了idea,但是项目忘记终止连接了,再打开idea启动项目发现端口被占用 控制台输出: ************************* ...

  6. JavaScript学习总结6-apply

    JS中的apply方法可以控制this指向 任何JS支持的类型都可以转化为JSON JS对象是键值对型的,JSON是字符串型的 原型对象:__proto__ JS万物皆对象,ES6开始提供了对后端开发 ...

  7. 最新MATLAB R2021b超详细安装教程(附完整安装文件)

    摘要:本文详细介绍Matlab R2021b的安装步骤,为方便安装这里提供了完整安装文件的百度网盘下载链接供大家使用.从文件下载到证书安装本文都给出了每个步骤的截图,按照图示进行即可轻松完成安装使用. ...

  8. 一行代码让你的项目轻松使用Dapr

    介绍 Dapr简化了云原生开发,让开发可以把焦点放在应用的业务逻辑上,从而让代码简单.可移植,那作为一个.Net开发者,我们也希望项目可以快速用上dapr,那究竟应该如何做呢? Dapr提出了Side ...

  9. Spring 源码(5)BeanFactory使用的准备及自定义属性值解析器

    BeanFactory 使用前的准备 上一篇文章 https://www.cnblogs.com/redwinter/p/16165878.html 介绍了自定义标签的使用,完成了AbstractAp ...

  10. wireshark、tcpdump使用笔记

    最近使用wireshark抓包icmp协议,过滤的命令如下所示: ip.addr eq 192.168.20.54 and ip.addr eq 192.168.50.131 and (icmp) 如 ...