Showing
4 changed files
with
67 additions
and
18 deletions
... | @@ -100,13 +100,14 @@ exports.rhyme_kr = function(sg, raw) | ... | @@ -100,13 +100,14 @@ exports.rhyme_kr = function(sg, raw) |
100 | r_lst.push(dictData[i][1]); | 100 | r_lst.push(dictData[i][1]); |
101 | } | 101 | } |
102 | } | 102 | } |
103 | - return (r_lst) | 103 | + const foo = new Set(r_lst); |
104 | + return (foo); | ||
104 | }; | 105 | }; |
105 | 106 | ||
106 | /* | 107 | /* |
107 | line = refine.refine_String_Last(line); | 108 | line = refine.refine_String_Last(line); |
108 | line = refine.refine_String(line); | 109 | line = refine.refine_String(line); |
109 | -//console.log(line); | 110 | +console.log(line); |
110 | 111 | ||
111 | console.log(rhyme_kr("무지개",line)); | 112 | console.log(rhyme_kr("무지개",line)); |
112 | */ | 113 | */ | ... | ... |
... | @@ -2,8 +2,20 @@ var express = require('express'); | ... | @@ -2,8 +2,20 @@ var express = require('express'); |
2 | var app = express(); | 2 | var app = express(); |
3 | const line = require('@line/bot-sdk'); | 3 | const line = require('@line/bot-sdk'); |
4 | const dotenv = require('dotenv'); | 4 | const dotenv = require('dotenv'); |
5 | +var rhyme_kr = require('./Rhyme_Kr') | ||
6 | +var refine_string = require('./Refine_String') | ||
5 | dotenv.config(); | 7 | dotenv.config(); |
6 | 8 | ||
9 | +// txt 읽어오기 | ||
10 | +const fs = require('fs'); | ||
11 | +fs.readFile('./songdata/all.txt','utf8',function(err,data) | ||
12 | +{ | ||
13 | + data = refine_string.refine_String_Last(data); | ||
14 | + lyric_data = refine_string.refine_String(data); | ||
15 | +}); | ||
16 | + | ||
17 | + | ||
18 | + | ||
7 | //papago api | 19 | //papago api |
8 | var request = require('request'); | 20 | var request = require('request'); |
9 | 21 | ||
... | @@ -17,7 +29,8 @@ var languagedetect_api_url = 'https://openapi.naver.com/v1/papago/detectLangs' | ... | @@ -17,7 +29,8 @@ var languagedetect_api_url = 'https://openapi.naver.com/v1/papago/detectLangs' |
17 | //새로 발급받은 naver papago api id, pw 입력 | 29 | //새로 발급받은 naver papago api id, pw 입력 |
18 | var client_id = process.env.client_id; | 30 | var client_id = process.env.client_id; |
19 | var client_secret = process.env.client_secret; | 31 | var client_secret = process.env.client_secret; |
20 | -const config = { | 32 | +const config = |
33 | +{ | ||
21 | channelAccessToken: process.env.channelAccessToken, | 34 | channelAccessToken: process.env.channelAccessToken, |
22 | channelSecret: process.env.channelSecret, | 35 | channelSecret: process.env.channelSecret, |
23 | }; | 36 | }; |
... | @@ -31,32 +44,39 @@ const client = new line.Client(config); | ... | @@ -31,32 +44,39 @@ const client = new line.Client(config); |
31 | 44 | ||
32 | // register a webhook handler with middleware | 45 | // register a webhook handler with middleware |
33 | // about the middleware, please refer to doc | 46 | // about the middleware, please refer to doc |
34 | -app.post('/webhook', line.middleware(config), (req, res) => { | 47 | +app.post('/webhook', line.middleware(config), (req, res) => |
48 | +{ | ||
35 | Promise | 49 | Promise |
36 | .all(req.body.events.map(handleEvent)) | 50 | .all(req.body.events.map(handleEvent)) |
37 | .then((result) => res.json(result)) | 51 | .then((result) => res.json(result)) |
38 | - .catch((err) => { | 52 | + .catch((err) => |
53 | + { | ||
39 | console.error(err); | 54 | console.error(err); |
40 | res.status(200).end(); | 55 | res.status(200).end(); |
41 | }); | 56 | }); |
42 | }); | 57 | }); |
43 | 58 | ||
44 | // event handler | 59 | // event handler |
45 | -function handleEvent(event) { | 60 | +function handleEvent(event) |
46 | - if (event.type !== 'message' || event.message.type !== 'text') { | 61 | +{ |
62 | + if (event.type !== 'message' || event.message.type !== 'text') | ||
63 | + { | ||
47 | // ignore non-text-message event | 64 | // ignore non-text-message event |
48 | return Promise.resolve(null); | 65 | return Promise.resolve(null); |
49 | } | 66 | } |
50 | - return new Promise(function(resolve, reject) { | 67 | + return new Promise(function(resolve, reject) |
68 | + { | ||
51 | //언어 감지 option | 69 | //언어 감지 option |
52 | - var detect_options = { | 70 | + var detect_options = |
71 | + { | ||
53 | url : languagedetect_api_url, | 72 | url : languagedetect_api_url, |
54 | form : {'query': event.message.text}, | 73 | form : {'query': event.message.text}, |
55 | headers: {'X-Naver-Client-Id': client_id, 'X-Naver-Client-Secret': client_secret} | 74 | headers: {'X-Naver-Client-Id': client_id, 'X-Naver-Client-Secret': client_secret} |
56 | }; | 75 | }; |
57 | 76 | ||
58 | //papago 언어 감지 | 77 | //papago 언어 감지 |
59 | - request.post(detect_options,function(error,response,body){ | 78 | + request.post(detect_options,function(error,response,body) |
79 | + { | ||
60 | console.log(response.statusCode); | 80 | console.log(response.statusCode); |
61 | if(!error && response.statusCode == 200){ | 81 | if(!error && response.statusCode == 200){ |
62 | var detect_body = JSON.parse(response.body); | 82 | var detect_body = JSON.parse(response.body); |
... | @@ -69,11 +89,13 @@ function handleEvent(event) { | ... | @@ -69,11 +89,13 @@ function handleEvent(event) { |
69 | 89 | ||
70 | 90 | ||
71 | //번역은 한국어->영어 / 영어->한국어만 지원 | 91 | //번역은 한국어->영어 / 영어->한국어만 지원 |
72 | - if(detect_body.langCode == 'ko'||detect_body.langCode == 'en'){ | 92 | + if(detect_body.langCode == 'ko'||detect_body.langCode == 'en') |
93 | + { | ||
73 | source = detect_body.langCode == 'ko' ? 'ko':'en'; | 94 | source = detect_body.langCode == 'ko' ? 'ko':'en'; |
74 | target = source == 'ko' ? 'en':'ko'; | 95 | target = source == 'ko' ? 'en':'ko'; |
75 | //papago 번역 option | 96 | //papago 번역 option |
76 | - var options = { | 97 | + var options = |
98 | + { | ||
77 | url: translate_api_url, | 99 | url: translate_api_url, |
78 | // 한국어(source : ko), 영어(target: en), 카톡에서 받는 메시지(text) | 100 | // 한국어(source : ko), 영어(target: en), 카톡에서 받는 메시지(text) |
79 | form: {'source':source, 'target':target, 'text':event.message.text}, | 101 | form: {'source':source, 'target':target, 'text':event.message.text}, |
... | @@ -81,30 +103,41 @@ function handleEvent(event) { | ... | @@ -81,30 +103,41 @@ function handleEvent(event) { |
81 | }; | 103 | }; |
82 | 104 | ||
83 | // Naver Post API | 105 | // Naver Post API |
84 | - request.post(options, function(error, response, body){ | 106 | + request.post(options, function(error, response, body) |
107 | + { | ||
85 | // Translate API Sucess | 108 | // Translate API Sucess |
86 | - if(!error && response.statusCode == 200){ | 109 | + if(!error && response.statusCode == 200) |
110 | + { | ||
87 | // JSON | 111 | // JSON |
88 | var objBody = JSON.parse(response.body); | 112 | var objBody = JSON.parse(response.body); |
89 | // Message 잘 찍히는지 확인 | 113 | // Message 잘 찍히는지 확인 |
90 | 114 | ||
115 | + /* | ||
91 | result.text = objBody.message.result.translatedText; | 116 | result.text = objBody.message.result.translatedText; |
92 | console.log(result.text); | 117 | console.log(result.text); |
93 | //번역된 문장 보내기 | 118 | //번역된 문장 보내기 |
94 | client.replyMessage(event.replyToken,result).then(resolve).catch(reject); | 119 | client.replyMessage(event.replyToken,result).then(resolve).catch(reject); |
120 | + */ | ||
121 | + | ||
122 | + var rhyme_result = rhyme_kr.rhyme_kr(event.message.text,lyric_data); | ||
123 | + rhyme_result = [...rhyme_result]; | ||
124 | + var string_result = ""; | ||
125 | + for(var i = 0 ; i < rhyme_result.length - 1;i++) // '이'가 결과값에 포함되는 것을 방지. 이건 임시 방편. 원인 찾아서 해결 필요. | ||
126 | + string_result = string_result + rhyme_result[i] + " "; | ||
127 | + result.text = string_result; | ||
128 | + console.log(result.text); | ||
129 | + client.replyMessage(event.replyToken,result).then(resolve).catch(reject); | ||
95 | } | 130 | } |
96 | }); | 131 | }); |
97 | } | 132 | } |
98 | // 메시지의 언어가 영어 또는 한국어가 아닐 경우 | 133 | // 메시지의 언어가 영어 또는 한국어가 아닐 경우 |
99 | - else{ | 134 | + else |
135 | + { | ||
100 | result.text = '언어를 감지할 수 없습니다. \n 번역 언어는 한글 또는 영어만 가능합니다.'; | 136 | result.text = '언어를 감지할 수 없습니다. \n 번역 언어는 한글 또는 영어만 가능합니다.'; |
101 | client.replyMessage(event.replyToken,result).then(resolve).catch(reject); | 137 | client.replyMessage(event.replyToken,result).then(resolve).catch(reject); |
102 | } | 138 | } |
103 | - | ||
104 | } | 139 | } |
105 | - | ||
106 | }); | 140 | }); |
107 | - | ||
108 | }); | 141 | }); |
109 | } | 142 | } |
110 | 143 | ... | ... |
... | @@ -522,6 +522,15 @@ | ... | @@ -522,6 +522,15 @@ |
522 | "sshpk": "^1.7.0" | 522 | "sshpk": "^1.7.0" |
523 | } | 523 | } |
524 | }, | 524 | }, |
525 | + "iconv": { | ||
526 | + "version": "2.3.5", | ||
527 | + "resolved": "https://registry.npmjs.org/iconv/-/iconv-2.3.5.tgz", | ||
528 | + "integrity": "sha512-U5ajDbtDfadp7pvUMC0F2XbkP5vQn9Xrwa6UptePl+cK8EILxapAt3sXers9B3Gxagk+zVjL2ELKuzQvyqOwug==", | ||
529 | + "requires": { | ||
530 | + "nan": "^2.14.0", | ||
531 | + "safer-buffer": "^2.1.2" | ||
532 | + } | ||
533 | + }, | ||
525 | "iconv-lite": { | 534 | "iconv-lite": { |
526 | "version": "0.4.24", | 535 | "version": "0.4.24", |
527 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", | 536 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", |
... | @@ -629,6 +638,11 @@ | ... | @@ -629,6 +638,11 @@ |
629 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", | 638 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", |
630 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" | 639 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" |
631 | }, | 640 | }, |
641 | + "nan": { | ||
642 | + "version": "2.14.0", | ||
643 | + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", | ||
644 | + "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==" | ||
645 | + }, | ||
632 | "negotiator": { | 646 | "negotiator": { |
633 | "version": "0.6.2", | 647 | "version": "0.6.2", |
634 | "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", | 648 | "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", | ... | ... |
... | @@ -13,6 +13,7 @@ | ... | @@ -13,6 +13,7 @@ |
13 | "@line/bot-sdk": "^6.8.3", | 13 | "@line/bot-sdk": "^6.8.3", |
14 | "dotenv": "^8.2.0", | 14 | "dotenv": "^8.2.0", |
15 | "express": "^4.17.1", | 15 | "express": "^4.17.1", |
16 | + "iconv": "^2.3.5", | ||
16 | "request": "^2.88.0", | 17 | "request": "^2.88.0", |
17 | "request-promise-native": "^1.0.8" | 18 | "request-promise-native": "^1.0.8" |
18 | } | 19 | } | ... | ... |
-
Please register or login to post a comment