엄민용

Update README.md

Showing 1 changed file with 238 additions and 73 deletions
1 +<!--
2 +*** Thanks for checking out the Best-README-Template. If you have a suggestion
3 +*** that would make this better, please fork the repo and create a pull request
4 +*** or simply open an issue with the tag "enhancement".
5 +*** Thanks again! Now go create something AMAZING! :D
6 +***
7 +***
8 +***
9 +*** To avoid retyping too much info. Do a search and replace for the following:
10 +*** github_username, repo_name, twitter_handle, email, project_title, project_description
11 +-->
1 12
2 13
3 -<img src="QR_Code.png" width="70" height="70" align="right">
4 -
5 -# mother project : LINEBOT
6 -
7 -라인봇 api를 활용하여 사용자에게 적절한 음악을 추천해 줍니다.<br>
8 -
9 -## 설치하기
10 -
11 -```bash
12 -npm install
13 -```
14 -
15 -모든 모듈이 해당 프로젝트 디렉토리에 다운로드됩니다.<br>
16 -
17 -
18 -## 주의사항 1
19 -(작업을 시작하실 때 자신의 로컬 개발폴더를 pull 하여 최신화 시키는 걸 잊지 마세요.)<br>
20 -개발하실 때 서버에 접속하여 각자의 폴더에 맞는 디렉토리에서 작업(풀, 커밋, 푸시 등..)하시길 바랍니다.
21 -커밋하시고 작업이 끝났다면 상위 폴더로 올라가서 pull하여 메인 프로젝트의 최신화를 시켜주신 다음 상시 작동을 위하여 그 pull된 메인 프로젝트를 실행시킨다음 종료해주시길 바랍니다.<br>
22 -
23 -## 주의사항 2
24 -서버는 기본적으로 nodejs가 실행되고 있는 상태이기때문에, 개발을 하고자 실행시키려면 중복실행으로 인해 주소가 겹쳐 오류가 발생할 것입니다. <br>
25 -따라서
26 -```bash
27 -killall node
28 -```
29 -명령어를 실행하여 실행중인 node를 종료시킨 후 개발작업에 들어가시면 됩니다.<br>
30 -
31 -## 참고사항
32 -node_modules가 push 되는 것을 막기 위해, gitignore에 node_modules을 추가하였으니 마음편히 커밋&푸시하시길 바랍니다.<br>
33 -또한 각 DEVELOP 폴더에 개별적으로 각자의 user.name과 user.email을 입력해두었으니 Ubuntu가 commit했다는 기록은 안 나올 것 같습니다.(.git을 지우면 입력해둔게 사라져서 번거로워집니다. 되도록 삭제하지 말고 진행하세요.)
34 -
35 -## 예제1 (현재 진행상황 반영)
36 -봇 친구 추가가 되어있다는 가정하에 기술합니다.<br>
37 -친구 추가를 위한 QR코드는 같이 업로드해두었습니다.<br>
38 -<br>
39 -```bash
40 -노래 추천해줘
41 -```
42 -의 내용을 전송하면,
43 -```bash
44 -아이유의 음악을 추천드립니다.
45 -```
46 -의 내용으로 답장이 옵니다.
47 -<br>
48 -
49 -## 예제2
50 -그 외에는 이해를 못했다는 답장이 옵니다.
51 -```bash
52 -안녕?
53 -```
54 -```bash
55 -무슨 말인지 못알아먹겠습니다
56 -```
57 -
58 -## 해결사항
59 -~~index.js에 channelAccessToken와 channelSecret의 값을 자신의 api에 대한 값으로 변경시킵니다.~~<br>
60 -~~(계정 하나를 정해 통합 예정)~~<br>
61 -<br>
62 -계정을 결정하여 해결됨.
63 -
64 -
65 -~~현재 무료 ngrok를 사용하여 부득이하게 IP주소가 계속 바뀝니다.~~<br>
66 -~~DEBUG CONSOLE에서,~~
67 -
68 -```bash
69 -It seems that BASE_URL is not set. Connecting to ngrok...
70 -listening on https://*************.ngrok.io/callback
71 -```
72 -~~이 출력될때 https://*************.ngrok.io/callback 을 복사하여 라인의 웹훅 URL로 변경하시기 바랍니다.~~<br>
73 -~~(aws를 이용하여 웹훅 URL을 대체할 예정)~~<br>
74 -<br>
75 -aws로 실행시킬 챗봇에 webhook을 통합하여 실행시키는 식으로 웹훅 문제 해결됨.
...\ No newline at end of file ...\ No newline at end of file
14 +
15 +<!-- PROJECT SHIELDS -->
16 +<!--
17 +*** I'm using markdown "reference style" links for readability.
18 +*** Reference links are enclosed in brackets [ ] instead of parentheses ( ).
19 +*** See the bottom of this document for the declaration of the reference variables
20 +*** for contributors-url, forks-url, etc. This is an optional, concise syntax you may use.
21 +*** https://www.markdownguide.org/basic-syntax/#reference-style-links
22 +-->
23 +
24 +<!-- PROJECT LOGO -->
25 +<br />
26 +<p align="center">
27 +
28 + <h3 align="center">LineMusicChatbot</h3>
29 +
30 + <p align="center">
31 + 재생 목록을 출력하거나 검색해주는 등 사용자가 입력한 노래 정보를 제공하는 챗봇
32 + <br />
33 + <br />
34 + <a href="http://khuhub.khu.ac.kr/2016102927/LineMusicChatbot/raw/master/QR_Code.png">View Demo QR Code</a>
35 + </p>
36 +</p>
37 +
38 +
39 +
40 +<!-- TABLE OF CONTENTS -->
41 +<details open="open">
42 + <summary><h2 style="display: inline-block">Table of Contents</h2></summary>
43 + <ol>
44 + <li>
45 + <a href="#about-the-project">About The Project</a>
46 + <ul>
47 + <li><a href="#built-with">Built With</a></li>
48 + </ul>
49 + </li>
50 + <li>
51 + <a href="#getting-started">Getting Started</a>
52 + <ul>
53 + <li><a href="#prerequisites">Prerequisites</a></li>
54 + <li><a href="#installation">Installation</a></li>
55 + <li><a href="#create-info-file">Create Info file</a></li>
56 + <li><a href="#chatbot-qr-code">Chatbot QR Code</a></li>
57 + </ul>
58 + </li>
59 + <li><a href="#usage">Usage</a>
60 + <ul>
61 + <li><a href="#playlist">PlayList</a></li>
62 + <li><a href="#search-in-youtube">Search in YouTube</a></li>
63 + <li><a href="#search-setting">Search Setting</a></li>
64 + </ul>
65 + </li>
66 + <li><a href="#roadmap">Roadmap</a></li>
67 + <li><a href="#contributing">Contributing</a></li>
68 + <li><a href="#license">License</a></li>
69 + <li><a href="#contact">Contact</a></li>
70 + </ol>
71 +</details>
72 +
73 +
74 +
75 +<!-- ABOUT THE PROJECT -->
76 +## About The Project
77 +
78 +![About1](/uploads/cc35689aa8317a34873594d3d9e927a0/About1.PNG)
79 +
80 +음악과 관련한 프로젝트를 선정한 이유는 먼저 우리가 음악을 들을 때 느낄 수 있는 불편한 상황을 생각해 보았고 음악이 듣고는 싶은데 어떤 음악을 들어야할지 망설여지는 상황에서 가수와, 혹은 장르와 관련된 음악을 제공해주는 시스템을 구현하고자 했습니다.
81 +
82 +
83 +유튜브로부터 공식적으로 재생목록 뿐만 아니라 음악에 관해 지원받기 위해서는 유튜브의 유료 음악 스트리밍 서비스 유튜브 뮤직을 이용해야 하고, 이 때문에 유튜브에서 검색만으로 공식 음원을 찾기 쉽지 않습니다.
84 +
85 +
86 +뮤직비디오나 저작권자가 아닌 사람이 올린 영상의 경우 공식 음원에 비해 음질도 떨어지고, 인트로와 아웃트로 때문에 듣기 불편할 수도 있습니다.
87 +
88 +
89 +이러한 문제점을 보완하고자 LineMusicChatbot 프로젝트를 시작하게 되었습니다.
90 +
91 +
92 +LineMusicChatbot은 라인 챗봇 서비스와 YouTube API를 이용하여 만든 음악 추천 및 검색 챗봇입니다.
93 +
94 +
95 +유튜브 API를 통해 재생목록의 정보와 재생목록 내 동영상의 제목, 썸네일, URL을 제공하도록 하여 특정 메시지를 사용자가 챗봇에서 입력하면 이를 분석하여 노래를 추천해주거나, 재생목록을 출력하는 방식으로 구현한 프로젝트입니다.
96 +
97 +
98 +
99 +### Built With
100 +
101 +* [Line Messaging API](https://developers.line.biz/en/services/messaging-api/)
102 +* [YouTube Data](https://developers.google.com/youtube/v3/getting-started?hl=ko)
103 +
104 +
105 +
106 +<!-- GETTING STARTED -->
107 +## Getting Started
108 +
109 +### Prerequisites
110 +* Chatbot Application
111 +* Create info.js
112 +* npm googleapis
113 + ```
114 + npm install
115 + ```
116 +
117 +### Installation
118 +
119 +1. Clone the repo
120 + ```
121 + git clone http://khuhub.khu.ac.kr/2016102927/LineMusicChatbot.git
122 + ```
123 +2. Install NPM packages / googleapis
124 + ```
125 + npm install
126 + npm install googleapis
127 + ```
128 +
129 +### Create Info file
130 +![Info_1](/uploads/c242c735636d44925f8e39f7a76708ee/Info_1.PNG)
131 +
132 +보안을 위해 토큰 값과 API키를 빼놓았습니다.
133 +새 파일 Info.js 을 생성하고
134 +exports.TOKEN = 'Kb1/rQYz4MUhF8XyKQv7z9x0MxVQ5bX/XO8S/yt/1qQEJVAbsEFAaMvXKEOx9Umr7KhivfyDPfZHRRLFPngR0O4ZGWV2VFses8ufPE7uAdvYr4G6keBNAU69nBz5IC71HfbIrUHxXYqD7GfhVwXzpwdB04t89/1O/w1cDnyilFU='
135 +exports.YoutubeKey = 'AIzaSyBInggOtXxPFYIRee0Xs3vb5iZ9YE9_518'
136 +exports.domain='2020105631.oss2021.tk'
137 +을 붙여넣기 해주시기 바랍니다.
138 +
139 +
140 +### Chatbot QR Code
141 +![QR_Code](/uploads/d00b60136d78cb8c790e7d59be1e09e9/QR_Code.png)
142 +
143 +QR 코드를 이용해 챗봇을 등록해주시기 바랍니다.
144 +
145 +
146 +<!-- USAGE EXAMPLES -->
147 +## Usage
148 +
149 +### PlayList
150 +![Usage_1](/uploads/b7c0c6ca97acebf6c40f204017a1cb69/Usage_1.PNG) <img src = "/uploads/37ea1c6e7854d80e35c8095404efb8e4/Usage_2.PNG" width="700"/>
151 +
152 +첫번째 기능은 플레이 리스트를 제공하는 것입니다. 사용자가 입력한 문자열이 플레이리스트에 관한 것일 때, 이것이 저희가 미리 준비해 놓은 플레이리스트라면 그 재생목록 속 노래 10곡의 제목과 URL을 출력하도록 하였습니다.
153 +
154 +
155 +이때, 공식 음원을 찾기 힘들다는 단점을 보완하기 위해 URL을 통해 이동하면 공식 음원으로 이동하는 것을 볼 수 있습니다.
156 +
157 +
158 +지원하는 플레이리스트는 크게 장르, 무드, 가수로 분류하여 제공하는데, 장르의 경우 힙합, 피아노 팝 플레이리스트가 있고, 무드의 경우 슬픈 노래와 신나는 노래에 관한 것이 있으며, 가수의 경우 블랙핑크, 아이유, 트와이스, 레드벨벳의 경우를 지원합니다.
159 +
160 +장르 - 힙합, 피아노, 팝 ex) 힙합 플레이리스트
161 +
162 +무드 - 슬픈, 신나는 ex) 슬픈 플레이리스트
163 +
164 +가수 - 블랙핑크, 아이유, 트와이스 레드벨벳 ex) 블랙핑크 플레이리스트
165 +
166 +### Search in YouTube
167 +![Usage_3](/uploads/e6f48c92d47ac489b2bdac2d6f887aa5/Usage_3.PNG)
168 +두번째 기능은 검색입니다. 사용자가 입력한 정보가 저희가 미처 생각하지 못한 정보라면 해당 문자열을 유튜브에 검색하여 그 검색결과를 출력합니다.
169 +
170 +챗봇은 사용자가 입력한 문자열의 검색결과를 가장 상단에 있는 3개를 출력하고 최상단에 위치한 영상의 썸네일을 출력합니다.
171 +
172 +이에 관하여 사용자가 챗봇이 제공하는 정보가 너무 많거나 너무 적은 등 마음에 들지 않을 경우 이에 대해 설정할 수 있는 기능을 추가하였습니다.
173 +
174 +### Search Setting
175 +<img src = "/uploads/346dec8dcafa1ed5c0cf568e07dc817e/Usage_4.jpg" width = "300"/>
176 +
177 +검색에 대한 구현 설명은 차후 추가
178 +
179 +<!-- ROADMAP -->
180 +## Roadmap
181 +![Roadmap_1](/uploads/4bd9416fabb06084c01720da48158591/Roadmap_1.png)
182 +
183 +YouTube API를 이용하는 과정에서 문제가 있었습니다.
184 +
185 +데이터를 list하는 것 이외에 insert, update, delete 하는 기능은 Oauth 2.0 인증을 필요로 하는데 이 과정이 SSH 챗봇 서버에서 구현이 불가능하다는 문제에 부딪혔습니다.
186 +
187 +때문에 재생목록에 대해 사용자가 원하는 곡을 추가하거나 삭제하는 등의 작업이 구현되지 않아 재생목록에 대한 완전한 기능구현을 하지 못했다는 문제점이 있습니다.
188 +
189 +이에 대한 앞으로의 로드맵은 추가적으로 다른 API를 이용하여 구현하지 못하는 부분을 구현하거나 사용자에게 재생목록 자체의 URL을 제공하여 사용자가 해당 링크를 방문하여 유튜브 내에서 동영상을 추가, 삭제 하도록 하는 방법을 생각하고 있습니다.
190 +
191 +
192 +
193 +<!-- CONTRIBUTING -->
194 +## Contributing
195 +
196 +추가하거나 개선할 기능이 있다면 참고 바랍니다.
197 +
198 +1. Project를 Fork 합니다.
199 +2. 새로운 브랜치를 생성합니다. (`git checkout -b feature/AmazingFeature`)
200 +3. 변경된 사항을 Commit 합니다. (`git commit -m 'Add some AmazingFeature'`)
201 +4. 브랜치에 Push 합니다. (`git push origin feature/AmazingFeature`)
202 +5. Pull Request 합니다.
203 +
204 +
205 +
206 +<!-- LICENSE -->
207 +## License
208 +
209 +MIT License
210 +
211 +
212 +<!-- CONTACT -->
213 +## Contact
214 +
215 +신지원 - Dev.jiwonshin@khu.ac.kr
216 +
217 +엄민용 - dono222@khu.ac.kr
218 +
219 +엄성진 - 7497aaaa@khu.ac.kr
220 +
221 +Project Link: [http://khuhub.khu.ac.kr/2016102927/LineMusicChatbot.git](http://khuhub.khu.ac.kr/2016102927/LineMusicChatbot.git)
222 +
223 +
224 +
225 +
226 +
227 +<!-- MARKDOWN LINKS & IMAGES -->
228 +<!-- https://www.markdownguide.org/basic-syntax/#reference-style-links -->
229 +[contributors-shield]: https://img.shields.io/github/contributors/github_username/repo.svg?style=for-the-badge
230 +[contributors-url]: https://github.com/github_username/repo/graphs/contributors
231 +[forks-shield]: https://img.shields.io/github/forks/github_username/repo.svg?style=for-the-badge
232 +[forks-url]: https://github.com/github_username/repo/network/members
233 +[stars-shield]: https://img.shields.io/github/stars/github_username/repo.svg?style=for-the-badge
234 +[stars-url]: https://github.com/github_username/repo/stargazers
235 +[issues-shield]: https://img.shields.io/github/issues/github_username/repo.svg?style=for-the-badge
236 +[issues-url]: https://github.com/github_username/repo/issues
237 +[license-shield]: https://img.shields.io/github/license/github_username/repo.svg?style=for-the-badge
238 +[license-url]: https://github.com/github_username/repo/blob/master/LICENSE.txt
239 +[linkedin-shield]: https://img.shields.io/badge/-LinkedIn-black.svg?style=for-the-badge&logo=linkedin&colorB=555
240 +[linkedin-url]: https://linkedin.com/in/github_username
......