Showing
2 changed files
with
81 additions
and
8 deletions
| ... | @@ -158,14 +158,86 @@ function handleEvent(event) | ... | @@ -158,14 +158,86 @@ function handleEvent(event) |
| 158 | }); | 158 | }); |
| 159 | }); | 159 | }); |
| 160 | } | 160 | } |
| 161 | - else if(event.message.text.substring(0, 7)=='가사 검색 1') | 161 | + else if(event.message.text.substring(0, 5)=='가사 검색') |
| 162 | { | 162 | { |
| 163 | - return new Promise(function(resolve, reject) | 163 | + var userNum=event.message.text[6] |
| 164 | + var newUrl=songList[userNum].url; | ||
| 165 | + var lyric=''; | ||
| 166 | + | ||
| 167 | + request(newUrl, function(error, response, html) | ||
| 164 | { | 168 | { |
| 165 | - var result = { type: 'text', text:''}; | 169 | + var $ = cheerio.load(html); |
| 166 | - result.text=songList[1].url; | ||
| 167 | 170 | ||
| 168 | - client.replyMessage(event.replyToken, result).then(resolve).catch(reject); | 171 | + lyric=$('#pLyrics > p').text(); |
| 172 | + lyric=lyric.substring(0, 150); | ||
| 173 | + | ||
| 174 | + console.log(songList[userNum].song); | ||
| 175 | + console.log(lyric); | ||
| 176 | + }); | ||
| 177 | + | ||
| 178 | + return new Promise(function(resolve, reject) | ||
| 179 | + { | ||
| 180 | + //언어 감지 option | ||
| 181 | + var detect_options = | ||
| 182 | + { | ||
| 183 | + url : languagedetect_api_url, | ||
| 184 | + form : {'query': lyric}, | ||
| 185 | + headers: {'X-Naver-Client-Id': client_id, 'X-Naver-Client-Secret': client_secret} | ||
| 186 | + }; | ||
| 187 | + | ||
| 188 | + //papago 언어 감지 | ||
| 189 | + request.post(detect_options, (error,response,body)=> | ||
| 190 | + { | ||
| 191 | + if(!error && response.statusCode == 200) | ||
| 192 | + { | ||
| 193 | + var detect_body = JSON.parse(response.body); | ||
| 194 | + var source = ''; | ||
| 195 | + var target = ''; | ||
| 196 | + var result = { type: 'text', text:''}; | ||
| 197 | + | ||
| 198 | + //언어 감지가 제대로 됐는지 확인 | ||
| 199 | + console.log(detect_body.langCode); | ||
| 200 | + | ||
| 201 | + //번역은 한국어->영어 / 영어->한국어만 지원 | ||
| 202 | + if(detect_body.langCode == 'ko'||detect_body.langCode == 'en') | ||
| 203 | + { | ||
| 204 | + source = detect_body.langCode == 'ko' ? 'ko':'en'; | ||
| 205 | + target = source == 'ko' ? 'en':'ko'; | ||
| 206 | + //papago 번역 option | ||
| 207 | + var options = { | ||
| 208 | + url: translate_api_url, | ||
| 209 | + // 한국어(source : ko), 영어(target: en), 카톡에서 받는 메시지(text) | ||
| 210 | + form: {'source':source, 'target':target, 'text': lyric}, | ||
| 211 | + headers: {'X-Naver-Client-Id': client_id, 'X-Naver-Client-Secret': client_secret} | ||
| 212 | + }; | ||
| 213 | + | ||
| 214 | + // Naver Post API | ||
| 215 | + request.post(options, function(error, response, body){ | ||
| 216 | + // Translate API Sucess | ||
| 217 | + if(!error && response.statusCode == 200){ | ||
| 218 | + // JSON | ||
| 219 | + var objBody = JSON.parse(response.body); | ||
| 220 | + // Message 잘 찍히는지 확인 | ||
| 221 | + | ||
| 222 | + result.text = objBody.message.result.translatedText; | ||
| 223 | + console.log("result: "+result.text); | ||
| 224 | + //번역된 문장 보내기 | ||
| 225 | + client.replyMessage(event.replyToken,result).then(resolve).catch(reject); | ||
| 226 | + } | ||
| 227 | + }); | ||
| 228 | + } | ||
| 229 | + // 메시지의 언어가 영어 또는 한국어가 아닐 경우 | ||
| 230 | + else | ||
| 231 | + { | ||
| 232 | + result.text = '언어를 감지할 수 없습니다. \n 번역 언어는 한글 또는 영어만 가능합니다.'; | ||
| 233 | + client.replyMessage(event.replyToken, result).then(resolve).catch(reject); | ||
| 234 | + } | ||
| 235 | + } | ||
| 236 | + else | ||
| 237 | + { | ||
| 238 | + console.log("status code is not 200"); | ||
| 239 | + } | ||
| 240 | + }); | ||
| 169 | }); | 241 | }); |
| 170 | } | 242 | } |
| 171 | else | 243 | else | ... | ... |
| ... | @@ -35,7 +35,7 @@ request(url, function(error, response, html) | ... | @@ -35,7 +35,7 @@ request(url, function(error, response, html) |
| 35 | //console.log(i+1 + ". "+ songList[i].singer+" - "+songList[i].song); | 35 | //console.log(i+1 + ". "+ songList[i].singer+" - "+songList[i].song); |
| 36 | } | 36 | } |
| 37 | 37 | ||
| 38 | - console.log(result); | 38 | + //console.log(result); |
| 39 | var randnum=function getRandomInt(min, max) | 39 | var randnum=function getRandomInt(min, max) |
| 40 | { | 40 | { |
| 41 | min = Math.ceil(min); | 41 | min = Math.ceil(min); |
| ... | @@ -49,11 +49,12 @@ request(url, function(error, response, html) | ... | @@ -49,11 +49,12 @@ request(url, function(error, response, html) |
| 49 | request(newUrl, function(error, response, html) | 49 | request(newUrl, function(error, response, html) |
| 50 | { | 50 | { |
| 51 | var $ = cheerio.load(html); | 51 | var $ = cheerio.load(html); |
| 52 | + | ||
| 52 | 53 | ||
| 53 | var lyric=$('#pLyrics > p').text(); | 54 | var lyric=$('#pLyrics > p').text(); |
| 54 | - var result=lyric.substring(0, 150); | 55 | + lyric=lyric.substring(0, 150); |
| 55 | 56 | ||
| 56 | console.log(songList[randnum].song); | 57 | console.log(songList[randnum].song); |
| 57 | - console.log(result); | 58 | + console.log(lyric); |
| 58 | }); | 59 | }); |
| 59 | }) | 60 | }) |
| ... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
-
Please register or login to post a comment