最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

用Node.JS打造一個惡劣天氣實時預(yù)警系統(tǒng)

 更新時間:2021年12月12日 16:03:22   作者:海淀碼農(nóng)  
本文將從實戰(zhàn)的角度出發(fā),利用NodeJS以及聚合數(shù)據(jù)的第三方免費(fèi)接口打造一個完整的天氣實時預(yù)警項目系統(tǒng),具有一定的參考價值,感興趣的可以了解一下

序言:

這幾日,無論是打開電視還是短視頻,無不是說河南鄭州遭遇這場無法預(yù)測的大暴雨,尤其是誰又能想到地鐵站被洪水倒灌,被困乘客的情境讓人無法想象。聽到一些親歷者寫的貼子文章,我們聽著他們當(dāng)時死里逃生的情形,可想象,當(dāng)時的他們面對突如其來的災(zāi)難,又無法處理的無助與無奈。

我們所處的鄭州高新區(qū)也經(jīng)歷了斷水?dāng)嚯姷那闆r,直到發(fā)文的現(xiàn)在,廣電帶寬仍未恢復(fù)信號,辦公室同事基本還在連接熱點(diǎn)辦公。

本文將從實戰(zhàn)的角度出發(fā),利用NodeJS以及聚合數(shù)據(jù)的第三方免費(fèi)接口打造一個完整的天氣實時預(yù)警項目系統(tǒng)。本文沒有用到特別高深的技術(shù)棧,目的旨在拋磚引玉。

第一步:找到免費(fèi)天氣預(yù)報接口

網(wǎng)上很多免費(fèi)獲取天氣的API接口,我這里使用的是聚合數(shù)據(jù)的接口,大廠的相對穩(wěn)定。

申請地址:https://www.juhe.cn/docs/api/id/73

申請成功后,會在個人中心生成一個請求key,這個在發(fā)送接口時,要用到。

利用課間10分鐘,打造一個惡劣天氣實時預(yù)警系統(tǒng)

第二步:使用天氣預(yù)報接口并生成程序代碼

根據(jù)聚合數(shù)據(jù)的使用說明,我們可以利用接口調(diào)試工具調(diào)試接口,我們這里利用ApiPost測試。

利用課間10分鐘,打造一個惡劣天氣實時預(yù)警系統(tǒng)

可以看到請求成功后的json格式如下:

{
    "reason": "查詢成功!",
    "result": {
        "city": "鄭州",
        "realtime": {
            "temperature": "24",
            "humidity": "100",
            "info": "小雨",
            "wid": "07",
            "direct": "東北風(fēng)",
            "power": "2級",
            "aqi": "32"
        },
        "future": [
            {
                "date": "2021-07-23",
                "temperature": "23/28℃",
                "weather": "小雨轉(zhuǎn)陰",
                "wid": {
                    "day": "07",
                    "night": "02"
                },
                "direct": "東風(fēng)轉(zhuǎn)北風(fēng)"
            },
            {
                "date": "2021-07-24",
                "temperature": "24/31℃",
                "weather": "小雨轉(zhuǎn)多云",
                "wid": {
                    "day": "07",
                    "night": "01"
                },
                "direct": "東北風(fēng)轉(zhuǎn)東風(fēng)"
            },
            {
                "date": "2021-07-25",
                "temperature": "23/31℃",
                "weather": "多云",
                "wid": {
                    "day": "01",
                    "night": "01"
                },
                "direct": "東風(fēng)轉(zhuǎn)東南風(fēng)"
            },
            {
                "date": "2021-07-26",
                "temperature": "24/31℃",
                "weather": "小雨",
                "wid": {
                    "day": "07",
                    "night": "07"
                },
                "direct": "東北風(fēng)"
            },
            {
                "date": "2021-07-27",
                "temperature": "23/31℃",
                "weather": "小雨轉(zhuǎn)晴",
                "wid": {
                    "day": "07",
                    "night": "00"
                },
                "direct": "東北風(fēng)轉(zhuǎn)南風(fēng)"
            }
        ]
    },
    "error_code": 0
}

到這一步,我們已經(jīng)拿到了未來7天的天氣數(shù)據(jù)。

第三步:利用nodemailer在NodeJS中發(fā)送郵件

nodeJS的nodemailer用于發(fā)送郵件,很好用。通過以下命令安裝即可使用:

npm install nodemailer

以下是我寫的一個發(fā)送郵件的函數(shù),其中郵箱賬號和授權(quán)碼可以在對應(yīng)的郵箱服務(wù)商處獲取。

/**
 * nodeJS 發(fā)送郵件
 *
 * */
function sendEmail(text){
    let nodemailer = require('nodemailer');
 
    let transporter = nodemailer.createTransport({
        service:"126",  //  郵箱
        secure:true,    //  安全的發(fā)送模式
        auth:{
            user:"be***er@126.com", //  發(fā)件人郵箱
            pass:"MLQ***PYU"http://  授權(quán)碼,在郵件服務(wù)商處獲取,126郵箱的獲取地址為:https://help.mail.163.com/faq.do?m=list&categoryID=197
        }
    })
 
    let mailOptions = {
        from:"be***er@126.com", // 發(fā)件人郵箱,同上面的發(fā)件人郵箱保持一致就行
        to:"3257132998@qq.com", // 收件人郵箱,也就是實時接收天氣預(yù)報的郵箱
        subject:"天氣實時監(jiān)控系統(tǒng)", // 郵件主題(標(biāo)題)
        text:text // 郵件征文
    }
 
    transporter.sendMail(mailOptions,(err,data) => {
        if(err){
            console.log(err);
            res.json({status:400,msg:"send fail....."})
        }else{
            console.log(data);
            res.json({status:200,msg:"郵件發(fā)送成功....."})
        }
    })
}
 
// 測試發(fā)郵件
sendEmail('下雨了')

利用課間10分鐘,打造一個惡劣天氣實時預(yù)警系統(tǒng)

新建一個weather.js ,內(nèi)容為以上代碼,通過

node weather.js

即可測試郵件發(fā)送。

利用課間10分鐘,打造一個惡劣天氣實時預(yù)警系統(tǒng)

發(fā)送成功,郵件接收成功。

第四步:在nodeJS中定時獲取天氣并發(fā)送到指定郵箱

點(diǎn)擊ApiPost右上角的生成NodeJS(Request)代碼,即可生成在nodejs中請求聚合天氣接口的程序代碼,我們結(jié)合setInterval即可實現(xiàn)以上需求。

利用課間10分鐘,打造一個惡劣天氣實時預(yù)警系統(tǒng)

全部代碼如下:

/**
 * nodeJS 發(fā)送郵件
 * 
 * */
function sendEmail(text){
    let nodemailer = require('nodemailer');
 
    let transporter = nodemailer.createTransport({
        service:"126",  //  郵箱
        secure:true,    //  安全的發(fā)送模式
        auth:{
            user:"be***er@126.com", //  發(fā)件人郵箱
            pass:"MLQ***PYU"http://  授權(quán)碼,在郵件服務(wù)商處獲取,126郵箱的獲取地址為:https://help.mail.163.com/faq.do?m=list&categoryID=197
        }
    })
 
    let mailOptions = {
        from:"be***er@126.com", // 發(fā)件人郵箱,同上面的發(fā)件人郵箱保持一致就行
        to:"3257132998@qq.com", // 收件人郵箱,也就是實時接收天氣預(yù)報的郵箱
        subject:"天氣實時監(jiān)控系統(tǒng)", // 郵件主題(標(biāo)題)
        text:text // 郵件征文
    }
    transporter.sendMail(mailOptions,(err,data) => {
        if(err){
            console.log(err);
            res.json({status:400,msg:"send fail....."})
        }else{
            console.log(data);
            res.json({status:200,msg:"郵件發(fā)送成功....."})
        }
    })
}
 
setInterval(function(){
    var request = require('request');
 
    var headers = {
        'User-Agent': 'Apipost client Runtime/+https://www.apipost.cn/'
    };
 
    var options = {
        url: 'http://apis.juhe.cn/simpleWeather/query?city=%E9%83%91%E5%B7%9E&key=8763efe2a90b025c03e03fef95621cbc',
        headers: headers
    };
 
    function callback(error, response, body) {
        let json = JSON.parse(body);
        console.log(json.result)
        if (!error && response.statusCode == 200) {
            sendEmail('鄭州未來天氣' + json.result.future[0].weather)
        }
    }
 
    request(options, callback);
 
}, 300000);

至此,系統(tǒng)全部打造完畢。我們只需找個小服務(wù)器執(zhí)行

node weather.js

命令即可每5分鐘向指定郵箱發(fā)一次天氣情況,當(dāng)然,您也可以根據(jù)需要發(fā)送。

注意事項:

由于中文編碼可能會在request中出現(xiàn)問題所以城市名稱最好encode一下(右鍵)。

利用課間10分鐘,打造一個惡劣天氣實時預(yù)警系統(tǒng)

到此這篇關(guān)于用Node.JS打造一個惡劣天氣實時預(yù)警系統(tǒng) 的文章就介紹到這了,更多相關(guān)Node.JS惡劣天氣實時預(yù)警內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 使用nvm進(jìn)行多個nodejs版本的統(tǒng)一管理

    使用nvm進(jìn)行多個nodejs版本的統(tǒng)一管理

    隨著前端項目的越來越多,不同項目使用的nodejs版本可能不一樣,導(dǎo)致在切換不同項目時需要更換不同的nodejs版本,非常麻煩,本次推薦使用nvm進(jìn)行多個nodejs版本的統(tǒng)一管理,文中有詳細(xì)的圖文介紹,需要的朋友可以參考下
    2023-12-12
  • Node.js結(jié)合FFmpeg構(gòu)建自動化腳本實現(xiàn)轉(zhuǎn)碼視頻

    Node.js結(jié)合FFmpeg構(gòu)建自動化腳本實現(xiàn)轉(zhuǎn)碼視頻

    傳統(tǒng)的視頻轉(zhuǎn)碼中,很常用的工具是FFmpeg,本文主要介紹了Node.js結(jié)合FFmpeg構(gòu)建自動化腳本實現(xiàn)轉(zhuǎn)碼視頻,具有一定的參考價值,感興趣的可以了解一下
    2024-04-04
  • 詳解NodeJs開發(fā)微信公眾號

    詳解NodeJs開發(fā)微信公眾號

    本篇文章給大家分享了NodeJs開發(fā)微信公眾號的相關(guān)技術(shù)內(nèi)容,對此有需要的朋友們可以跟著學(xué)習(xí)參考下。
    2018-05-05
  • 使用Meteor配合Node.js編寫實時聊天應(yīng)用的范例

    使用Meteor配合Node.js編寫實時聊天應(yīng)用的范例

    這篇文章主要介紹了使用Meteor配合Node.js編寫實時聊天應(yīng)用的范例,Node.js作為異步框架,其最突出的使用便是用來編寫實時應(yīng)用程序,需要的朋友可以參考下
    2015-06-06
  • NodeJS學(xué)習(xí)筆記之Http模塊

    NodeJS學(xué)習(xí)筆記之Http模塊

    這里只是熟悉nodejs中的http模塊的API,一般在開發(fā)過程中使用的是第三方的框架,比如說Express。其中封裝了更為簡單的構(gòu)建http服務(wù)器的API。
    2015-01-01
  • node+express+jade制作簡單網(wǎng)站指南

    node+express+jade制作簡單網(wǎng)站指南

    上文我們介紹了使用node+express+ejs制作頁面,今天我們來看看使用node+express+jade制作簡單網(wǎng)站,本文記錄了一下整個搭建過程,給需要的小伙伴們參考下吧
    2014-11-11
  • Node輸出日志的正確方法示例

    Node輸出日志的正確方法示例

    這篇文章主要為大家介紹了Node輸出日志的正確方法示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-03-03
  • 詳解如何使用nvm管理Node.js多版本

    詳解如何使用nvm管理Node.js多版本

    這篇文章主要介紹了詳解如何使用nvm管理Node.js多版本,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-05-05
  • Node.js利用debug模塊打印出調(diào)試日志的方法

    Node.js利用debug模塊打印出調(diào)試日志的方法

    debug日志打印模塊主要實現(xiàn)功能是帶命名空間(模塊名)、時間戳、色彩輸出日志;將日志寫入文件;瀏覽器端使用;格式化函數(shù);支持自定義方法。下面這篇文章主要介紹了Node.js利用debug模塊打印出調(diào)試日志的方法,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-04-04
  • node.js中的fs.rmdir方法使用說明

    node.js中的fs.rmdir方法使用說明

    這篇文章主要介紹了node.js中的fs.rmdir方法使用說明,本文介紹了fs.rmdir方法說明、語法、接收參數(shù)、使用實例和實現(xiàn)源碼,需要的朋友可以參考下
    2014-12-12

最新評論

凌云县| 托克托县| 盈江县| 普兰店市| 博湖县| 舟曲县| 梨树县| 襄汾县| 浮梁县| 蒙山县| 缙云县| 晋中市| 大名县| 临猗县| 高阳县| 宜宾市| 炉霍县| 中山市| 双峰县| 永丰县| 西城区| 临澧县| 辉县市| 阿拉尔市| 恭城| 龙陵县| 廉江市| 阜宁县| 南开区| 宿松县| 渭源县| 增城市| 工布江达县| 什邡市| 马鞍山市| 千阳县| 吉林省| 光山县| 夏河县| 育儿| 姜堰市|