-
Notifications
You must be signed in to change notification settings - Fork 3
/
utils.js
92 lines (85 loc) · 2.82 KB
/
utils.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
const axios = require('axios');
const {MessageMedia} = require('whatsapp-web.js');
const config = require('./config');
var oldTime = null;
async function getRawNews(category) {
let axiosConfig = {
method: 'get',
url: `https://inshortsapi.vercel.app/news?category=${category}`
};
return axios(axiosConfig)
.then(async function (response) {
var data = response.data.data;
if (Object.keys(data).length > 0) {
return data;
} else {
return new Object();
}
})
.catch(function (error) {
console.log(error);
return new Object();
});
}
async function getNews(category) {
var news = await getRawNews(category);
if (news.length > 0) {
var newsData = [];
for (var i = 0; i < news.length; i++) {
var data = news[i];
var date = data.date.split(",", 1)[0];
newsData.push([
getUnixTime(date, data.time),
data.title,
data.content,
data.readMoreUrl,
data.imageUrl,
data.time + " " + data.date
]);
}
newsData.sort(function(a, b) {
return a[0] - b[0];
});
var newsSorted = {}
newsData.forEach(function(item){
newsSorted[item[0]] = {
title: item[1],
content: item[2],
url: item[3],
imageUrl: item[4],
datetime: item[5]
}
})
return newsSorted;
} else {
return new Object();
}
}
async function sendNews(client, category) {
var news = await getNews(category);
var keys = Object.keys(news);
if (keys.length > 0) {
if (oldTime == null) {
oldTime = keys[keys.length-1];
} else {
for (i=0; i<=keys.length; i++) {
if (oldTime < keys[i]) {
var text = `*${news[keys[i]].title}*\n\n${news[keys[i]].content}\n\n`;
if (news[keys[i]].url != null )
text += `*Read More:* ${news[keys[i]].url}\n\n`;
text += `*${news[keys[i]].datetime}*`;
let respoimage = await axios.get(news[keys[i]].imageUrl, { responseType: 'arraybuffer' }).catch(function(error) {
return "error";
});
await client.sendMessage(config.chat_id, new MessageMedia("image/jpg", Buffer.from(respoimage.data).toString('base64'), "newsInshort"), { caption: text });
oldTime = keys[i];
}
}
}
}
}
function getUnixTime(date, time) {
let timeString = date + " " + time;
return (Date.parse(timeString))/1000;
}
module.exports = {sendNews};