Showing
4 changed files
with
132 additions
and
0 deletions
line_chatbot_code/covid_respond/app.js
0 → 100644
1 | + | ||
2 | +// // 1. child-process모듈의 spawn 취득 | ||
3 | +// const spawn = require('child_process').spawn; | ||
4 | + | ||
5 | +// // 2. spawn을 통해 "python 파이썬파일.py" 명령어 실행 | ||
6 | +// const result = spawn('python', ['covid_crawling.py']); | ||
7 | + | ||
8 | +// // 3. stdout의 'data'이벤트리스너로 실행결과를 받는다. | ||
9 | +// result.stdout.on('data', function(data) | ||
10 | +// { console.log(data.toString()); }); | ||
11 | + | ||
12 | +// // 4. 에러 발생 시, stderr의 'data'이벤트리스너로 실행결과를 받는다. | ||
13 | +// result.stderr.on('data', function(data) { console.log(data.toString()); }); | ||
14 | + | ||
15 | +// //- 단, 파이썬 파일에 __name__ == '__main__' 인 경우, 함수를 호출하도록 설정되어 있어야 한다. | ||
16 | + | ||
17 | + | ||
18 | + | ||
19 | +var express = require('express'); | ||
20 | + var router = express.Router(); | ||
21 | + let {PythonShell} = require('python-shell') | ||
22 | + let options = { | ||
23 | + mode: 'text', | ||
24 | + pythonPath: '/Library/Frameworks/Python.framework/Versions/3.7/bin/python3', | ||
25 | + pythonOptions: ['-u'], // get print results in real-time | ||
26 | + scriptPath: './folder1/dm-portal' | ||
27 | + }; | ||
28 | + | ||
29 | +PythonShell.run('covid_crawling.py', options, function (err, results) { | ||
30 | + | ||
31 | + if (err) throw err; | ||
32 | + | ||
33 | + | ||
34 | + console.log('results: %j', results); | ||
35 | + | ||
36 | +}); |
1 | +import telegram | ||
2 | +from telegram.ext import Updater | ||
3 | +from telegram.ext import MessageHandler, Filters | ||
4 | +from bs4 import BeautifulSoup | ||
5 | +from selenium import webdriver | ||
6 | +import urllib.request as req | ||
7 | +import os | ||
8 | +from selenium.webdriver.support.ui import WebDriverWait | ||
9 | +from selenium.webdriver.support import expected_conditions as EC | ||
10 | +from selenium.webdriver.common.by import By | ||
11 | + | ||
12 | + | ||
13 | +#크롤링 관련 함수 | ||
14 | +def covid_num_crawling(): | ||
15 | + code = req.urlopen("https://search.naver.com/search.naver?where=nexearch&sm=top_hty&fbm=0&ie=utf8&query=%ED%99%95%EC%A7%84%EC%9E%90") | ||
16 | + soup = BeautifulSoup(code, "html.parser") | ||
17 | + info_num = soup.select("div.status_today em") | ||
18 | + result = int(info_num[0].string) + int(info_num[1].string) | ||
19 | + return result | ||
20 | + | ||
21 | +def covid_news_crawling(): | ||
22 | + code = req.urlopen("https://search.naver.com/search.naver?where=news&sm=tab_jum&query=%EC%BD%94%EB%A1%9C%EB%82%98") | ||
23 | + soup = BeautifulSoup(code, "html.parser") | ||
24 | + title_list = soup.select("a.news_tit") | ||
25 | + output_result = "" | ||
26 | + for i in title_list: | ||
27 | + title = i.text | ||
28 | + news_url = i.attrs["href"] | ||
29 | + output_result += title + "\n" + news_url + "\n\n" | ||
30 | + if title_list.index(i) == 2: | ||
31 | + break | ||
32 | + return output_result | ||
33 | + | ||
34 | + | ||
35 | +#텔레그램 관련 코드 | ||
36 | +token = "1721885449:AAHDGMbjSJfhXxML6nfSCpfiU7SghpL_vOE" | ||
37 | +id = "1657858421" | ||
38 | +bot = telegram.Bot(token) | ||
39 | + | ||
40 | +info_message = '''진세 진세, 오늘 코로나 확진자 수 몇명인지 알아?? 완전 무섭다,,, (#몇명인데?)''' | ||
41 | +bot.sendMessage(chat_id=id, text=info_message) | ||
42 | + | ||
43 | + | ||
44 | +news_message = '''관련 뉴스도 엄청 많이 보도되고 있더라,,, (#뉴스)''' | ||
45 | + | ||
46 | +worried_message = '''진세도 꼭 마스크 끼고 손 씻고 주의해!! (#웅웅 너도)''' | ||
47 | + | ||
48 | +react01_message = '''오키 ㅎㅎ''' | ||
49 | + | ||
50 | + | ||
51 | + | ||
52 | + | ||
53 | +updater = Updater(token=token, use_context=True) | ||
54 | +dispatcher = updater.dispatcher | ||
55 | +updater.start_polling() | ||
56 | + | ||
57 | + | ||
58 | +# 챗봇 응답 | ||
59 | +def handler(update, context): | ||
60 | + user_text = update.message.text # 사용자가 보낸 메세지를 user_text 변수에 저장합니다. | ||
61 | + | ||
62 | + # 오늘 확진자 수 답장 | ||
63 | + if (user_text == "몇명인데?"): | ||
64 | + covid_num = covid_num_crawling() | ||
65 | + bot.send_message(chat_id=id, text="오늘 확진자 수 : {} 명".format(covid_num)) | ||
66 | + bot.sendMessage(chat_id=id, text=news_message) | ||
67 | + | ||
68 | + # 코로나 관련 뉴스 답장 | ||
69 | + elif (user_text == "뉴스"): | ||
70 | + covid_news = covid_news_crawling() | ||
71 | + bot.send_message(chat_id=id, text=covid_news) | ||
72 | + bot.sendMessage(chat_id=id, text=worried_message) | ||
73 | + | ||
74 | + elif (user_text == "웅웅 너도"): | ||
75 | + bot.sendMessage(chat_id=id, text=react01_message) | ||
76 | + | ||
77 | +echo_handler = MessageHandler(Filters.text, handler) | ||
78 | +dispatcher.add_handler(echo_handler) | ||
79 | + | ||
80 | + |
This diff is collapsed. Click to expand it.
line_chatbot_code/covid_respond/package.json
0 → 100644
1 | +{ | ||
2 | + "name": "reply", | ||
3 | + "version": "1.0.0", | ||
4 | + "description": "", | ||
5 | + "main": "app.js", | ||
6 | + "scripts": { | ||
7 | + "test": "echo \"Error: no test specified\" && exit 1" | ||
8 | + }, | ||
9 | + "author": "", | ||
10 | + "license": "ISC", | ||
11 | + "dependencies": { | ||
12 | + "body-parser": "^1.19.0", | ||
13 | + "express": "^4.17.1", | ||
14 | + "request": "^2.88.2" | ||
15 | + } | ||
16 | +} |
-
Please register or login to post a comment