유영빈

오류 및 렌더링 수정 후 병합. 필요없는 파일 제거 요망

const express = require("express");
var app = express();
http = require('http').createServer(app);
port = 23023;
app.use(express.static(__dirname + "/views"));
const routes = require("./routes/");
const errorController = require("./routes/errorController")
app.use(routes)
app.use(errorController.pageNotFoundError);
var server = http.listen(port, function(){
console.log(`http://localhost:${port}`);
})
key=RwxSWXH88b2bKOAT6Ot3FHorPZQW9omma0xYIjtJe0JIKe4DC7TjX7Uj6E1ArzYi2AvVETmPrAIYyY8FlL%2BfAA%3D%3D
\ No newline at end of file
let request = require('request');
let cheerio = require('cheerio');
const bus_url = 'http://apis.data.go.kr/6410000/busarrivalservice/getBusArrivalList';
//const stationID = '228000708'; // 사색의광장 들어오는 방향
const gateStationID = '203000125'
require('dotenv').config();
//const BusArrivalUrl = bus_url + '?servicekey=' + process.env.key + '&stationId=' + stationID;// 사색의광장 정류장 버스 도착 정보 조회용
//console.log(BusArrivalUrl);
var routeID = ['200000112', '200000115', '234000016', '200000103'];
var Bus = [];
// request(BusArrivalUrl, (err, res, body) => {
// var $ = cheerio.load(body, {decodeEntities: false});
// $('busArrivalList').each(function(idx){
// let route = $(this).find('routeId').text();
// routeID.push(route);
// })
// //console.log(routeID);
// })
const route_url = 'http://apis.data.go.kr/6410000/busrouteservice/getBusRouteInfoItem';
var index = 0;
function getBusNum(){
var BusRouteUrl = route_url + '?servicekey=' + process.env.key + '&routeId='; // 각 버스 정보 조회용
BusRouteUrl += routeID[index++];
//console.log(BusRouteUrl);
request(BusRouteUrl, (err, res, body) => {
var $ = cheerio.load(body, {decodeEntities: false});
$('busRouteInfoItem').each(function(idx){
var id = $(this).find('routeId').text(); //버스 노선 id
var num = $(this).find('routeName').text(); //버스 번호
var firsttime = $(this).find('upFirstTime').text(); //평일 기점 첫차시간
var lasttime = $(this).find('upLastTime').text(); //평일 기점 막차 시간
var mintime = $(this).find('peekAlloc').text(); //평일 최소 배차시간
var maxtime = $(this).find('nPeekAlloc').text(); //평일 최대 배차시간
//var idx = Bus.findIndex((item, idx) => { return item.routeId = id})
var newBus = new Object();
newBus.routeId = id;
newBus.BusNum = num;
newBus.FirstTime = firsttime;
newBus.LastTime = lasttime;
newBus.MinTime = mintime;
newBus.MaxTime = maxtime;
console.log(newBus);
Bus.push(newBus);
console.log(Bus);
})
})
}
for(var i=0; i<routeID.length; i++){
getBusNum();
}
const GateBusUrl = bus_url + '?servicekey=' + process.env.key + '&stationId=' + gateStationID; //국제캠 정문 정류장
let date = new Date();
let predictTime = ['-1', '-1', '-1', '-1'];
let body = new Object();
function predict(){
console.log(GateBusUrl);
request(GateBusUrl, (err, res, body) => {
var $ = cheerio.load(body, {decodeEntities: false});
$('busArrivalList').each(function(idx){
let route = $(this).find('routeId').text();
var index = Bus.findIndex(function(e, idx){ return e.routeId == route;});
if(index > -1){
//var num = $(this).find('plateNo1').text(); // 버스 차량번호 ex) 70사 1290
var time = $(this).find('predictTime1').text(); // 버스 예상 도착시간
var predictHour1 = date.getHours();
var predictMinute1 = date.getMinutes() + Bus[index].mintime - (3 - (time*1)); // 사색의 광장 -> 경희대학교 3분정도 소요
var predictHour2 = date.getHours();
var predictMinute2 = date.getMinutes() + Bus[index].maxtime - (3 - (time*1)); // time*1 : string to integer 형변환
if(predictMinute1 >= 60){
predictHour1 += 1;
predictMinute1 -= 60;
}
if(predictMinute2 >= 60){
predictHour2 += 1;
predictMinute2 -= 60;
}
Bus[index]["MinPredictTime"] = predictHour1 + ":" + predictMinute1;
Bus[index]["MaxPredictTime"] = predictHour2 + ":" + predictMinute2;
predictTime = [predictHour1 + "", predictMinute1 + "", predictHour2 + "", predictMinute2 + ""]
const dateBusDeparture = new Date(date.getFullYear(), date.getMonth(), date.getDate(), predictTime[0]*1, predictTime[1]*1, 0);
var gapSec = (dateBusDeparture.getTime() - date.getTime())/1000;
var gapHour = Math.floor(gapSec / 60 / 60);
var gapMin = Math.floor((gapSec - gapHour * 3600) / 60);
// var ans = gapHour + "시간" + gapMin + "분 이상";
// var ETD_min_H = predictTime[0];
// var ETD_min_M = predictTime[1];
// var ETD_max_H = predictTime[2];
// var ETD_max_M = predictTime[3];
//controller에 데이터 전송
module.exports.data = {};
module.exports.data.remainTime = gapHour + "시간" + gapMin + "분 이상";
module.exports.data.ETD_min_H = predictTime[0];
module.exports.data.ETD_min_M = predictTime[1];
module.exports.data.ETD_max_H = predictTime[2];
module.exports.data.ETD_max_M = predictTime[3];
}
})
})
}
function start(){
setInterval(predict, 60000);
}
setTimeout(start, 20000);
This diff is collapsed. Click to expand it.
{
"name": "bustime",
"name": "busterm",
"version": "1.0.0",
"description": "",
"main": "BusInfo.js",
"main": "app.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"repository": {
"type": "git",
"url": "http://khuhub.khu.ac.kr/2020105677/BusTime.git"
},
"author": "",
"license": "ISC",
"dependencies": {
"cheerio": "^1.0.0-rc.9",
"require": "^2.4.20"
"dotenv": "^10.0.0",
"ejs": "^3.1.6",
"express": "^4.17.1",
"http-status-codes": "^2.1.4"
}
}
......
var express = require('express');
var app = express();
var fs = require('fs')
var Businfo = require("../models/BusInfo");
app.set('views',__dirname+'/views');
app.set('view engine', 'ejs');
//app.engine('html',require('ejs').renderFile);
app.engine('ejs', require('ejs').renderFile);
exports.mainView = function(req, res) {
res.render("index.ejs")
}//main 화면
exports.timeTable = function(req, res) {
res.render("ejstest.ejs",{busNum:req.query.busNum, remainTime: Businfo.data.remainTime, ETD_min_H: Businfo.data.ETD_min_H,
ETD_min_m: Businfo.data.ETD_max_m, ETD_max_H: Businfo.data.ETD_max_H, ETD_max_m: Businfo.data.ETD_max_m });
} //timeTable 화면 ejs 변수 렌더링
const httpStatus = require('http-status-codes');
exports.pageNotFoundError = (req, res) => {
let errorCode = httpStatus.NOT_FOUND;
res.status(errorCode);
res.send(`<h1>${errorCode}</h1> \n 찾는 페이지가 존재하지 않습니다. `);
}
const router = require("express").Router();
const controller = require("./controller");
router.get("/", controller.mainView); //main 페이지
router.get("/timetable", controller.timeTable); //timetable 페이지
module.exports = router;
\ No newline at end of file
<!doctype html>
<html>
<head>
<title>Time Table</title>
<meta charset="utf-8">
<style type="text/css">
a { text-decoration:none }
</style>
</head>
<body>
<h1><a href="/"><p style="text-align:center;">BTT</p></a></h1>
<br> <div style="padding:0 0 0 20px;">
<h2> <%= busNum %> BUS Time Table</h2>
</div>
<div style="padding:0 0 0 20px;">
<table border="3" width="400">
<th> Index</th>
<th> 출발 예정시간</th>
<th> 남은 시간</th>
<tr align="center">
<td> text입력하기 </td>
<td> <%= ETD_min_H %>:<%= ETD_min_m %> ~ <%= ETD_max_H %>:<%= ETD_max_m %> </td>
<td> <%= remainTime %> </td>
</tr>
</table>
</div>
<br>
<br>
<p> <div style="padding:0 0 0 20px;">
버스의 평균 배차시간을 기준으로 최소 출발시간과 최대 출발시간을 제공합니다.
</div> </p>
<div style="padding:0 0 0 20px;">
<% var date = new Date(); %>
<% var yyyy = date.getFullYear(); %>
<% var mm1 = date.getMonth() + 1; %>
<% var dd = date.getDate(); %>
<% var hh = date.getHours(); %>
<% var mm2 = date.getMinutes(); %>
<% var printDateNotion = yyyy+"년 "+mm1+"월 "+dd+"일 "; %>
<% var printDateNotion2 = hh+"시 "+mm2+"분 기준"; %>
<%= printDateNotion %>
<%= printDateNotion2 %>
</div>
</body>
</html>
\ No newline at end of file
<!doctype html>
<html>
<head>
<title>BUS TT</title>
<meta charset="utf-8">
<style type="text/css">
a { text-decoration:none }
</style>
</head>
<body>
<h1><p style="text-align:center;">BTT</p></h1>
<br>
<link rel='stylesheet' type='text/css' href='/css/style.css' />
<h2 style="padding:0 0 0 20px;"> 사색의 광장 Bus Time Table 조회 서비스에 오신 것을 환영합니다.</h2>
<p style="padding:0 0 0 20px;"> 이곳에는 사색의 광장에서 출발하는 모든 버스의 정보가 있습니다.</p>
<br><br>
<h2 style="padding:0 0 0 20px;"> 버스별 시간표 조회 (click the bus number!)</h2>
<div style="padding:0 0 0 20px;">
<% var date = new Date(); %>
<% var yyyy = date.getFullYear(); %>
<% var mm1 = date.getMonth() + 1; %>
<% var dd = date.getDate(); %>
<% var hh = date.getHours(); %>
<% var mm2 = date.getMinutes(); %>
<% var printDateNotion = yyyy+"년 "+mm1+"월 "+dd+"일 오늘 운행하는 버스들 "; %>
<% var printDateNotion2 = "( "+hh+"시 "+mm2+"분 기준 )"; %>
<%= printDateNotion %>
<%= printDateNotion2 %>
</div>
<ul>
<li><a href="http://localhost:23023/timetable?busNum=9">9</a></li>
<li><a href="http://localhost:23023/timetable?busNum=1112">1112</a></li>
<li><a href="http://localhost:23023/timetable?busNum=5100">5100</a></li>
<li><a href="http://localhost:23023/timetable?busNum=7000">7000</a></li>
</ul>
<p> ejs파일임</p>
</body>
</html
\ No newline at end of file