Visiting a web page daily for COVID-19 data is a tedious task especially if you are a lazy programmer like meπ. In order to solve this problem, I have created a notification system that sends me data about worldwide Coronavirus cases daily at a specified time.
In this tutorial, I'm going to show this how you can make your own system like this one.
In order to send a message, you need Twilio credentials. Go to Twilio console and get the Twilio number which we will use to send SMS using API.
From your dashboard, you need your ACCOUNT SID
, AUTH TOKEN
, and TRIAL NUMBER
, copy them and save them in a .env
file in your project's root directory. It should look something like below
ACC_SID='your-account-sid'
AUTH_TOKEN='your-auth-token'
FROM='your-twilio-number'
# Also add your number here (recommended)
TO='your-number'
Now we need to install Twilio package for node.js
npm install twilio
Now let's test our credentials by sending a message.
const accountSid = process.env.ACC_SID;
const authToken = process.env.AUTH_TOKEN;
const twilio = require("twilio");
const client = new twilio(accountSid, authToken);
client.messages
.create({
body: "Hello World!",
to: process.env.TO,
from: process.env.FROM
})
.then(message => console.log(message.sid));
Now run the file using
node index
If all goes well you'll receive an SMS with the text "Hello World!"π
We will use this API to get the latest data about COVID-19.
To get the data in Node.js we will use the request
library since I found it quite user-friendly.
npm install request
To send data in the SMS
request(
"https://covidapi.info/api/v1/global",
{ json: true },
(err, res, body) => {
if (err) {
return console.log(err);
}
var result = body.result;
// Format message
var msg = `\n Coronavirus Stats (IND):
\nConfirmed: ${result.confirmed}
\nDeaths: ${result.deaths}
\nRecovered: ${result.recovered}
`;
sendNotification(msg);
}
);
// Send message
function sendNotification(msg) {
client.messages
.create({
body: msg,
to: process.env.TO,
from: process.env.FROM
})
.then(message => console.log(message.sid));
}
in order to set up a cronjob in Node.js, we can use a library called node-cron
npm install node-cron
Now we have to run the above code every day at 8:00 AM (say). Wrap the above code to send SMS every day at 8 AM with the latest data.
cron.schedule("0 8 * * *", () => {
request(
"https://covidapi.info/api/v1/global",
{ json: true },
...
...
});
Let's also add a reminder to wash our hands every two hours. We can add another cronjob to send SMS
// Cron job to send message every 2 hour from 8-23 daily
cron.schedule("0 9-23/2 * * *", () => {
sendNotification("Its time to wash your hands π");
});
Here is the GitHub repository where you can find all the code. Also, give it a starβ if you like.π€