Showing
1 changed file
with
170 additions
and
5 deletions
1 | -const config =require('./config') | 1 | +const config = require('./config') |
2 | const mongoose = require("mongoose"); | 2 | const mongoose = require("mongoose"); |
3 | -const connect = mongoose | 3 | +const { range } = require("express/lib/request"); |
4 | - .connect(config.url, { | 4 | +const xlsx = require("xlsx"); |
5 | + | ||
6 | +const excelFile = xlsx.readFile("./GuideLine/컴퓨터공학과 권장이수 가이드라인.xlsx"); | ||
7 | + | ||
8 | +const sheetName = excelFile.SheetNames[0]; | ||
9 | +const firstSheet = excelFile.Sheets[sheetName]; | ||
10 | +const jsonData = xlsx.utils.sheet_to_json(firstSheet); | ||
11 | + | ||
12 | +var first_first = []; | ||
13 | +var first_second = []; | ||
14 | +var second_first = []; | ||
15 | +var second_second = []; | ||
16 | +var third_first = []; | ||
17 | +var third_second = []; | ||
18 | +var fourth_first = []; | ||
19 | +var fourth_second = []; | ||
20 | +var new_list = []; | ||
21 | +function jason_to_arry() { | ||
22 | + for (var data in jsonData) { | ||
23 | + first_first.push(jsonData[data]['1학년 1학기']); | ||
24 | + first_second.push(jsonData[data]['1학년 2학기']); | ||
25 | + second_first.push(jsonData[data]['2학년 1학기']); | ||
26 | + second_second.push(jsonData[data]['2학년 2학기']); | ||
27 | + third_first.push(jsonData[data]['3학년 1학기']); | ||
28 | + third_second.push(jsonData[data]['3학년 2학기']); | ||
29 | + fourth_first.push(jsonData[data]['4학년 1학기']); | ||
30 | + fourth_second.push(jsonData[data]['4학년 2학기']); | ||
31 | + } | ||
32 | +} | ||
33 | +// jason -> array로 변경 | ||
34 | +function remove_null() { | ||
35 | + first_first = first_first.filter(function (item) { | ||
36 | + return item !== null && item !== undefined && item !== ''; | ||
37 | + }); | ||
38 | + first_second = first_second.filter(function (item) { | ||
39 | + return item !== null && item !== undefined && item !== ''; | ||
40 | + }); | ||
41 | + second_first = second_first.filter(function (item) { | ||
42 | + return item !== null && item !== undefined && item !== ''; | ||
43 | + }); | ||
44 | + second_second = second_second.filter(function (item) { | ||
45 | + return item !== null && item !== undefined && item !== ''; | ||
46 | + }); | ||
47 | + third_first = third_first.filter(function (item) { | ||
48 | + return item !== null && item !== undefined && item !== ''; | ||
49 | + }); | ||
50 | + third_second = third_second.filter(function (item) { | ||
51 | + return item !== null && item !== undefined && item !== ''; | ||
52 | + }); | ||
53 | + fourth_first = fourth_first.filter(function (item) { | ||
54 | + return item !== null && item !== undefined && item !== ''; | ||
55 | + }); | ||
56 | + fourth_second = fourth_second.filter(function (item) { | ||
57 | + return item !== null && item !== undefined && item !== ''; | ||
58 | + }); | ||
59 | + new_list.push(first_first); | ||
60 | + new_list.push(first_second) | ||
61 | + new_list.push(second_first) | ||
62 | + new_list.push(second_second); | ||
63 | + new_list.push(third_first) | ||
64 | + new_list.push(third_second); | ||
65 | + new_list.push(fourth_first); | ||
66 | + new_list.push(fourth_second); | ||
67 | +} | ||
68 | +// null 값 제거 | ||
69 | + | ||
70 | +jason_to_arry() | ||
71 | +remove_null() | ||
72 | + | ||
73 | + | ||
74 | +const connect = mongoose.connect(config.url, | ||
75 | + { | ||
5 | useNewUrlParser: true, | 76 | useNewUrlParser: true, |
6 | useUnifiedTopology: true, | 77 | useUnifiedTopology: true, |
7 | }) | 78 | }) |
8 | - .then(() => console.log("MongoDB Connected ...")) | ||
9 | - .catch((err) => console.log(err)); | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
79 | + .then(() => console.log("DB : Succesfully Connected")) | ||
80 | + .catch((err) => console.log(err.message)); | ||
81 | + | ||
82 | + | ||
83 | +var express = require('express'); | ||
84 | + | ||
85 | +var major_list = ["A07337", "A10628", "A07308", "A10627"]; | ||
86 | + | ||
87 | + | ||
88 | +const { Subinfo } = require('./models/model'); | ||
89 | +var request = require('request'); | ||
90 | +for (i in major_list) { | ||
91 | + var options = { | ||
92 | + 'method': 'GET', | ||
93 | + '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`, | ||
94 | + 'headers': { | ||
95 | + 'Cookie': 'JSESSIONID=aHGSkYnn7ZmXH5Wgx8So3tatw4J7LyR5g98tqYffSUU7qPhC7FFjOaemFCb8UgU5.amV1c19kb21haW4vV0hfU3VnYW5nMQ==; WMONID=R84FN19dbP4' | ||
96 | + }, | ||
97 | + formData: { | ||
98 | + 'attribute': 'lectListJson', | ||
99 | + 'lang': 'ko', | ||
100 | + 'loginYn': 'N', | ||
101 | + 'menu': '1', | ||
102 | + 'p_major': 'A07308', | ||
103 | + 'p_year': '2022', | ||
104 | + 'p_term': '10', | ||
105 | + 'initYn': 'Y' | ||
106 | + } | ||
107 | + }; | ||
108 | + request(options, async function (error, response) { | ||
109 | + if (error) throw new Error(error); | ||
110 | + var jason = response.body | ||
111 | + var json = JSON.parse(jason) | ||
112 | + | ||
113 | + const data = {} | ||
114 | + | ||
115 | + | ||
116 | + var x = 0, y = 0; | ||
117 | + var z = '필수'; | ||
118 | + for (var i = 0; i < new_list.length; i++) { | ||
119 | + if (i % 2 == 0) { | ||
120 | + x++; | ||
121 | + } | ||
122 | + for (var j = 0; j < new_list[i].length; j++) { | ||
123 | + if (new_list[i][j] == '선택') { | ||
124 | + z = '선택'; | ||
125 | + continue; | ||
126 | + } | ||
127 | + if (i % 2 == 0) { | ||
128 | + y = 1; | ||
129 | + } else { | ||
130 | + y = 2; | ||
131 | + } | ||
132 | + var subinfo = new Subinfo({ | ||
133 | + campus: "국제", | ||
134 | + college: "소프트웨어융합대학", | ||
135 | + department: "컴퓨터공학과", | ||
136 | + grade: x + "학년" + y + "학기", | ||
137 | + name: new_list[i][j], | ||
138 | + choice: z | ||
139 | + }) | ||
140 | + subinfo.save((err, result) => { | ||
141 | + if (err) { | ||
142 | + return err; | ||
143 | + } else { | ||
144 | + // console.log(result); | ||
145 | + } | ||
146 | + }) | ||
147 | + } | ||
148 | + } | ||
149 | + for (var i in json["rows"]) { | ||
150 | + var obj = {}; | ||
151 | + obj['time'] = json["rows"][i]["timetable"]; | ||
152 | + obj['prof'] = json["rows"][i]["teach_na"]; | ||
153 | + obj['credit'] = json["rows"][i]["unit_num"]; | ||
154 | + obj['name'] = json["rows"][i]["subjt_name"]; | ||
155 | + await Subinfo.findOne({ name: obj['name'] }).then((sub) => { | ||
156 | + if (sub) { | ||
157 | + var body = { | ||
158 | + prof: obj['prof'], | ||
159 | + time: obj['time'] | ||
160 | + } | ||
161 | + sub.credit = obj['credit'] | ||
162 | + sub.subject.push(body); | ||
163 | + sub.save((err, result) => { | ||
164 | + if (err) { | ||
165 | + console.log(err) | ||
166 | + } else if (result) { | ||
167 | + console.log(result); | ||
168 | + } | ||
169 | + }) | ||
170 | + } | ||
171 | + }) | ||
172 | + } | ||
173 | + }); | ||
174 | +}; | ||
... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
-
Please register or login to post a comment