-
Notifications
You must be signed in to change notification settings - Fork 0
/
DataParse.js
70 lines (59 loc) · 1.65 KB
/
DataParse.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
const xmlConverter = require("xml-js");
const keywords = [
{
code: "ai",
name: "AI",
url: "https://www.google.co.kr/alerts/feeds/13265101432195258979/14394231679378804535",
},
{
code: "developer",
name: "개발자",
url: "https://www.google.co.kr/alerts/feeds/13265101432195258979/7104111078997508033",
},
{
code: "hire",
name: "IT 채용",
url: "https://www.google.co.kr/alerts/feeds/13265101432195258979/16223367668120911101",
},
];
const getData = async () => {
return await Promise.all(
keywords.map(async (e) => {
const dataFromGoogle = await getDataFromGoogle(e);
return dataFromGoogle;
})
);
};
const getDataFromGoogle = (keyword) => {
return new Promise(async (resolve, reject) => {
const res = await fetch(keyword.url);
const data = JSON.parse(xmlConverter.xml2json(await res.text()));
data.elements.forEach((e1) => {
const entrys = e1.elements.filter((e) => e.name === "entry");
const datas = entrys.map((e2) => {
const strFilter1 = /<.*?>/g;
const strFilter2 = /&.*;/g;
const entry = e2.elements;
const title = entry[1].elements[0].text
.replace(strFilter1, "")
.replace(strFilter2, "");
const link = entry[2].attributes.href;
const createdAt = entry[3].elements[0].text;
const content = entry[5].elements[0].text
.replace(strFilter1, "")
.replace(strFilter2, "");
return {
...keyword,
title,
link,
createdAt,
content,
};
});
resolve(datas);
});
});
};
module.exports = {
getData,
};