Showing
3 changed files
with
15 additions
and
13 deletions
| ... | @@ -9,13 +9,13 @@ let readline = require('readline'); | ... | @@ -9,13 +9,13 @@ let readline = require('readline'); |
| 9 | let https = require('https'); | 9 | let https = require('https'); |
| 10 | let querystring = require('querystring'); | 10 | let querystring = require('querystring'); |
| 11 | let fs = require('fs'); | 11 | let fs = require('fs'); |
| 12 | +let read = require('read'); | ||
| 12 | const os = require('os'); | 13 | const os = require('os'); |
| 13 | 14 | ||
| 14 | let j = request.jar(); | 15 | let j = request.jar(); |
| 15 | request = request.defaults({jar: j}); | 16 | request = request.defaults({jar: j}); |
| 16 | 17 | ||
| 17 | //TODO JSDoc 다시 정리하기 | 18 | //TODO JSDoc 다시 정리하기 |
| 18 | - | ||
| 19 | /** | 19 | /** |
| 20 | * @author sungjunyoung | 20 | * @author sungjunyoung |
| 21 | * @description klas에 로그인해서 세션을 받습니다. | 21 | * @description klas에 로그인해서 세션을 받습니다. |
| ... | @@ -35,12 +35,12 @@ exports.login = function (id, pw) { | ... | @@ -35,12 +35,12 @@ exports.login = function (id, pw) { |
| 35 | }, function (err, res, body) { | 35 | }, function (err, res, body) { |
| 36 | if (err) { | 36 | if (err) { |
| 37 | if (err.code === 'ESOCKETTIMEDOUT') { | 37 | if (err.code === 'ESOCKETTIMEDOUT') { |
| 38 | - reject('클라스 요청 응답시간이 너무 길어요... ㅠㅠ'); | 38 | + reject(' 클라스 요청 응답시간이 너무 길어요... ㅠㅠ'); |
| 39 | } else { | 39 | } else { |
| 40 | - reject('알수없는 에러가 발생했어요!.'); | 40 | + reject(' 알수없는 에러가 발생했어요!.'); |
| 41 | } | 41 | } |
| 42 | } else if (j.getCookies("https://klas.khu.ac.kr").length === 0) { | 42 | } else if (j.getCookies("https://klas.khu.ac.kr").length === 0) { |
| 43 | - reject('로그인에 실패했습니다!'); | 43 | + reject(' 로그인에 실패했습니다!'); |
| 44 | } else { | 44 | } else { |
| 45 | resolve('success'); | 45 | resolve('success'); |
| 46 | } | 46 | } |
| ... | @@ -63,7 +63,7 @@ exports.getLecture = function () { | ... | @@ -63,7 +63,7 @@ exports.getLecture = function () { |
| 63 | }, function (err, res, body) { | 63 | }, function (err, res, body) { |
| 64 | if (err) { | 64 | if (err) { |
| 65 | console.log(err); | 65 | console.log(err); |
| 66 | - reject('파싱 중 에러가 발생했어요!'); | 66 | + reject(' 파싱 중 에러가 발생했어요!'); |
| 67 | } else { | 67 | } else { |
| 68 | resolve(body); | 68 | resolve(body); |
| 69 | } | 69 | } |
| ... | @@ -170,9 +170,9 @@ exports.getClassPageBody = function (lectureLink) { | ... | @@ -170,9 +170,9 @@ exports.getClassPageBody = function (lectureLink) { |
| 170 | }, function (err, res, body) { | 170 | }, function (err, res, body) { |
| 171 | if (err) { | 171 | if (err) { |
| 172 | if (err.code === 'ESOCKETTIMEDOUT') { | 172 | if (err.code === 'ESOCKETTIMEDOUT') { |
| 173 | - reject('클라스 요청 응답시간이 너무 길어요... ㅠㅠ'); | 173 | + reject(' 클라스 요청 응답시간이 너무 길어요... ㅠㅠ'); |
| 174 | } else { | 174 | } else { |
| 175 | - reject('알수없는 에러가 발생했어요!.'); | 175 | + reject(' 알수없는 에러가 발생했어요!.'); |
| 176 | } | 176 | } |
| 177 | } else { | 177 | } else { |
| 178 | resolve(body); | 178 | resolve(body); |
| ... | @@ -257,9 +257,10 @@ exports.downloadSelectedFiles = function (selectedFiles, downloadPath) { | ... | @@ -257,9 +257,10 @@ exports.downloadSelectedFiles = function (selectedFiles, downloadPath) { |
| 257 | if (!downloadPath) { | 257 | if (!downloadPath) { |
| 258 | downloadPath = os.homedir() + '/Downloads/'; | 258 | downloadPath = os.homedir() + '/Downloads/'; |
| 259 | } else { | 259 | } else { |
| 260 | - downloadPath = require('path').resolve(downloadPath); | 260 | + downloadPath = require('path').resolve(downloadPath) + '/'; |
| 261 | } | 261 | } |
| 262 | 262 | ||
| 263 | + | ||
| 263 | let count = 0; | 264 | let count = 0; |
| 264 | selectedFiles.files.forEach(function (value, index) { | 265 | selectedFiles.files.forEach(function (value, index) { |
| 265 | request = https.get(value.link, function (response) { | 266 | request = https.get(value.link, function (response) { |
| ... | @@ -267,8 +268,8 @@ exports.downloadSelectedFiles = function (selectedFiles, downloadPath) { | ... | @@ -267,8 +268,8 @@ exports.downloadSelectedFiles = function (selectedFiles, downloadPath) { |
| 267 | let file = fs.createWriteStream(downloadPath + value.fileName); | 268 | let file = fs.createWriteStream(downloadPath + value.fileName); |
| 268 | response.pipe(file); | 269 | response.pipe(file); |
| 269 | 270 | ||
| 270 | - if (index === count) { | 271 | + if (selectedFiles.files.length === count) { |
| 271 | - resolve('파일이 ' + downloadPath + ' 에 저장되었어요! 열공 :)'); | 272 | + resolve('\n 파일이 ' + downloadPath + ' 에 저장되었어요! 열공 :)'); |
| 272 | } | 273 | } |
| 273 | 274 | ||
| 274 | }); | 275 | }); | ... | ... |
| ... | @@ -19,10 +19,10 @@ if(require.main === module){ | ... | @@ -19,10 +19,10 @@ if(require.main === module){ |
| 19 | const flags = args.parse(process.argv); | 19 | const flags = args.parse(process.argv); |
| 20 | 20 | ||
| 21 | if (!flags.id) { | 21 | if (!flags.id) { |
| 22 | - console.log('학번(id) 가 필요해요!'); | 22 | + console.log(' 학번(id) 가 필요해요!'); |
| 23 | return; | 23 | return; |
| 24 | } else if (!flags.pw) { | 24 | } else if (!flags.pw) { |
| 25 | - console.log('비밀번호(pw) 가 필요해요!'); | 25 | + console.log(' 비밀번호(pw) 가 필요해요!'); |
| 26 | return; | 26 | return; |
| 27 | } else { | 27 | } else { |
| 28 | functions.login(flags.id, flags.pw) | 28 | functions.login(flags.id, flags.pw) | ... | ... |
| 1 | { | 1 | { |
| 2 | "name": "klas-file-downloader", | 2 | "name": "klas-file-downloader", |
| 3 | - "version": "0.0.4", | 3 | + "version": "0.0.5", |
| 4 | "description": "Project that download lecture reference files from Klas", | 4 | "description": "Project that download lecture reference files from Klas", |
| 5 | "main": "index.js", | 5 | "main": "index.js", |
| 6 | "scripts": { | 6 | "scripts": { |
| ... | @@ -31,6 +31,7 @@ | ... | @@ -31,6 +31,7 @@ |
| 31 | "fs": "0.0.1-security", | 31 | "fs": "0.0.1-security", |
| 32 | "promise": "^7.1.1", | 32 | "promise": "^7.1.1", |
| 33 | "querystring": "^0.2.0", | 33 | "querystring": "^0.2.0", |
| 34 | + "read": "^1.0.7", | ||
| 34 | "request": "^2.81.0" | 35 | "request": "^2.81.0" |
| 35 | } | 36 | } |
| 36 | } | 37 | } | ... | ... |
-
Please register or login to post a comment