송민석

Collect DB data

Showing 1 changed file with 170 additions and 5 deletions
const config =require('./config')
const config = require('./config')
const mongoose = require("mongoose");
const connect = mongoose
.connect(config.url, {
const { range } = require("express/lib/request");
const xlsx = require("xlsx");
const excelFile = xlsx.readFile("./GuideLine/컴퓨터공학과 권장이수 가이드라인.xlsx");
const sheetName = excelFile.SheetNames[0];
const firstSheet = excelFile.Sheets[sheetName];
const jsonData = xlsx.utils.sheet_to_json(firstSheet);
var first_first = [];
var first_second = [];
var second_first = [];
var second_second = [];
var third_first = [];
var third_second = [];
var fourth_first = [];
var fourth_second = [];
var new_list = [];
function jason_to_arry() {
for (var data in jsonData) {
first_first.push(jsonData[data]['1학년 1학기']);
first_second.push(jsonData[data]['1학년 2학기']);
second_first.push(jsonData[data]['2학년 1학기']);
second_second.push(jsonData[data]['2학년 2학기']);
third_first.push(jsonData[data]['3학년 1학기']);
third_second.push(jsonData[data]['3학년 2학기']);
fourth_first.push(jsonData[data]['4학년 1학기']);
fourth_second.push(jsonData[data]['4학년 2학기']);
}
}
// jason -> array로 변경
function remove_null() {
first_first = first_first.filter(function (item) {
return item !== null && item !== undefined && item !== '';
});
first_second = first_second.filter(function (item) {
return item !== null && item !== undefined && item !== '';
});
second_first = second_first.filter(function (item) {
return item !== null && item !== undefined && item !== '';
});
second_second = second_second.filter(function (item) {
return item !== null && item !== undefined && item !== '';
});
third_first = third_first.filter(function (item) {
return item !== null && item !== undefined && item !== '';
});
third_second = third_second.filter(function (item) {
return item !== null && item !== undefined && item !== '';
});
fourth_first = fourth_first.filter(function (item) {
return item !== null && item !== undefined && item !== '';
});
fourth_second = fourth_second.filter(function (item) {
return item !== null && item !== undefined && item !== '';
});
new_list.push(first_first);
new_list.push(first_second)
new_list.push(second_first)
new_list.push(second_second);
new_list.push(third_first)
new_list.push(third_second);
new_list.push(fourth_first);
new_list.push(fourth_second);
}
// null 값 제거
jason_to_arry()
remove_null()
const connect = mongoose.connect(config.url,
{
useNewUrlParser: true,
useUnifiedTopology: true,
})
.then(() => console.log("MongoDB Connected ..."))
.catch((err) => console.log(err));
\ No newline at end of file
.then(() => console.log("DB : Succesfully Connected"))
.catch((err) => console.log(err.message));
var express = require('express');
var major_list = ["A07337", "A10628", "A07308", "A10627"];
const { Subinfo } = require('./models/model');
var request = require('request');
for (i in major_list) {
var options = {
'method': 'GET',
'url': `https://sugang.khu.ac.kr/core?attribute=lectListJson&lang=ko&loginYn=N&menu=1&p_major=${i}&p_year=2022&p_term=10&initYn=Y`,
'headers': {
'Cookie': 'JSESSIONID=aHGSkYnn7ZmXH5Wgx8So3tatw4J7LyR5g98tqYffSUU7qPhC7FFjOaemFCb8UgU5.amV1c19kb21haW4vV0hfU3VnYW5nMQ==; WMONID=R84FN19dbP4'
},
formData: {
'attribute': 'lectListJson',
'lang': 'ko',
'loginYn': 'N',
'menu': '1',
'p_major': 'A07308',
'p_year': '2022',
'p_term': '10',
'initYn': 'Y'
}
};
request(options, async function (error, response) {
if (error) throw new Error(error);
var jason = response.body
var json = JSON.parse(jason)
const data = {}
var x = 0, y = 0;
var z = '필수';
for (var i = 0; i < new_list.length; i++) {
if (i % 2 == 0) {
x++;
}
for (var j = 0; j < new_list[i].length; j++) {
if (new_list[i][j] == '선택') {
z = '선택';
continue;
}
if (i % 2 == 0) {
y = 1;
} else {
y = 2;
}
var subinfo = new Subinfo({
campus: "국제",
college: "소프트웨어융합대학",
department: "컴퓨터공학과",
grade: x + "학년" + y + "학기",
name: new_list[i][j],
choice: z
})
subinfo.save((err, result) => {
if (err) {
return err;
} else {
// console.log(result);
}
})
}
}
for (var i in json["rows"]) {
var obj = {};
obj['time'] = json["rows"][i]["timetable"];
obj['prof'] = json["rows"][i]["teach_na"];
obj['credit'] = json["rows"][i]["unit_num"];
obj['name'] = json["rows"][i]["subjt_name"];
await Subinfo.findOne({ name: obj['name'] }).then((sub) => {
if (sub) {
var body = {
prof: obj['prof'],
time: obj['time']
}
sub.credit = obj['credit']
sub.subject.push(body);
sub.save((err, result) => {
if (err) {
console.log(err)
} else if (result) {
console.log(result);
}
})
}
})
}
});
};
\ No newline at end of file
......