push.js
5.4 KB
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
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
const request = require('request');
const TARGET_URL = 'https://api.line.me/v2/bot/message/push'
const MULTI_TARGET_URL = 'https://api.line.me/v2/bot/message/multicast'
const BROAD_TARGET_URL = 'https://api.line.me/v2/bot/message/broadcast'
const TOKEN = '채널 토큰으로 교체'
const USER_ID = '사용자의 ID, 메세지 수신 시에 확인할 수 있음'
var client_id = 'naver client_id';
var client_secret = 'naver client_secret';
var headline_max = '';
var headline_min = '';
// Broadcast -> 채널 전체 유저에게
const PushFunc_max = function() {
var api_url = 'https://openapi.naver.com/v1/search/news?query=' + encodeURI('상한가 주식'); // json 결과
var options = {
url: api_url,
headers: {'X-Naver-Client-Id':client_id, 'X-Naver-Client-Secret': client_secret}
};
request.get(options, function (error, response, body) {
const obj = JSON.parse(body);
const str = JSON.stringify(obj.items[0]);
const obj2 = JSON.parse(str);
if(headline_max == '' || headline_max != JSON.stringify(obj2.title).replace(/<[^>]*>?/g, '')) {
if (!error && response.statusCode == 200) {
headline_max = JSON.stringify(obj2.title).replace(/<[^>]*>?/g, '')
request.post(
{
url: BROAD_TARGET_URL,
headers: {
'Authorization': `Bearer ${TOKEN}`
},
json: {
"messages": [
{
"type" :"text",
"text": "[상한가 소식]"
},
{
"type":"text",
"text": "<<<헤드라인>>>\n" + JSON.stringify(obj2.title).replace(/<[^>]*>?/g, '')
},
{
"type":"text",
"text": "<<<주요문단>>>\n" + JSON.stringify(obj2.description).replace(/<[^>]*>?/g, '')
},
{
"type":"text",
"text": "뉴스 바로가기\n" + JSON.stringify(obj2.link)
}
]
}
},(error, response, body) => {
console.log(body)
}
)
} else {
res.status(response.statusCode).end();
console.log('error = ' + response.statusCode);
}
} else {
console.log('새로운 소식 없음_max')
}
});
};
const PushFunc_min = function() {
var api_url = 'https://openapi.naver.com/v1/search/news?query=' + encodeURI('하한가 주식'); // json 결과
var options = {
url: api_url,
headers: {'X-Naver-Client-Id':client_id, 'X-Naver-Client-Secret': client_secret}
};
request.get(options, function (error, response, body) {
const obj = JSON.parse(body);
const str = JSON.stringify(obj.items[0]);
const obj2 = JSON.parse(str);
if(headline_min == '' || headline_min != JSON.stringify(obj2.title).replace(/<[^>]*>?/g, '')) {
if (!error && response.statusCode == 200) {
headline_min = JSON.stringify(obj2.title).replace(/<[^>]*>?/g, '')
request.post(
{
url: BROAD_TARGET_URL,
headers: {
'Authorization': `Bearer ${TOKEN}`
},
json: {
"messages": [
{
"type" :"text",
"text": "[하한가 소식]"
},
{
"type":"text",
"text": "<<<헤드라인>>>\n" + JSON.stringify(obj2.title).replace(/<[^>]*>?/g, '')
},
{
"type":"text",
"text": "<<<주요문단>>>\n" + JSON.stringify(obj2.description).replace(/<[^>]*>?/g, '')
},
{
"type":"text",
"text": "뉴스 바로가기\n" + JSON.stringify(obj2.link)
}
]
}
},(error, response, body) => {
console.log(body)
}
)
} else {
res.status(response.statusCode).end();
console.log('error = ' + response.statusCode);
}
} else {
console.log('새로운 소식 없음_min')
}
});
};
const intervalId_max = setInterval(PushFunc_max, 60000);
const intervalId_min = setInterval(PushFunc_min, 60000);