todo.js
3.65 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
/*
* GET todo
*/
var fs = require('fs'); // 파일 시스템 모듈
var request = require('request');
exports.list = function(req, res){ // ToDo 목록 가져오기
fs.exists('./todo_list.json', function (exists) { // ToDo 목록 존재 확인
if(exists) {
fs.readFile('./todo_list.json', {
'encoding': 'utf8'
}, function (err, list) { // todo_list.json 파일 읽기
res.json(list);
});
} else {
var list = { // 기본 ToDo 목록 형식
'list': []
};
fs.writeFile('./todo_list.json', JSON.stringify(list), function (err) { // todo_list.json 파일 쓰기
res.json(list);
});
}
});
};
exports.add = function(req, res1){ // 새로운 ToDo 항목 추가하기
//유튜브 api 이용 검색부분
console.log(req.body);
var optionParams = {
q:req.body.contents,
part:"snippet",
key:"AIzaSyCTR9nHa9PheDMJO9O91Oj8HRJcu81bP_M",
type:"video",
maxResults: Number(req.body.counts),
regionCode:"KR",
order:"viewCount"
};
console.log("'");
console.log("`");
optionParams.q = encodeURI(optionParams.q);
var url="https://www.googleapis.com/youtube/v3/search?";
for(var option in optionParams){
url+=option+"="+optionParams[option]+"&";
}
//url의마지막에 붙어있는 & 정리
url=url.substr(0, url.length-1);
var data;
request(url, function(err, res, body){
// console.log(body)
//json형식을 서버로 부터 받음
data2=JSON.parse(body).items;
fs.readFile('./todo_list.json',{
'encoding':'utf8'
},function(err,data){
data= JSON.parse(data);
data.list=[];
for (var content in data2){
var todo = { // 기본 ToDo 항목 형식
'contents': '',
'videoId':'',
'complete': false
};
var a=data2[content].snippet.title;
console.log(a+" : "+data2[content].id.videoId);
todo.contents = a;
todo.videoId = data2[content].id.videoId;
data.list.push(todo);
fs.writeFile('./todo_list.json',JSON.stringify(data),function(err){
res1.json(true);
});
}
});
});
//todo.contents = req.body.contents;
/*
fs.readFile('./todo_list.json', {
'encoding': 'utf8'
}, function (err, data) {
data = JSON.parse(data);
for (var i=0;i<5;i++)
{
data.list.push(VideoIds[i]);
}
// 새로운 ToDo 항목 추가
fs.writeFile('./todo_list.json', JSON.stringify(data), function (err) {
res.json(true);
});
});*/
};
exports.complete = function(req, res){ // 선택한 ToDo 항목 완료하기
fs.readFile('./todo_list.json', {
'encoding': 'utf8'
}, function (err, data) {
data = JSON.parse(data);
data.list[req.body.index].complete = true;
var fs = require('fs');
var youtubedl = require('youtube-dl');
var video = youtubedl('http://www.youtube.com/watch?v='+data.list[req.body.index].videoId);
video.on('info',function(info)
{
console.log('Download started');
console.log('filename : '+ info.filename);
console.log('size : '+info.size);
});
var a= data.list[req.body.index].contents
var regExp = /[\{\}\[\]\/?.,;:|\)*~`!^\-_+<>@\#$%&\\\=\(\'\"]/gi;
a=a.replace(regExp,"");
video.pipe(fs.createWriteStream(a+'.mp4'));
console.log(data.list[req.body.index].contents);
fs.writeFile('./todo_list.json', JSON.stringify(data), function (err) {
res.json(true);
});
return;
});
};
exports.del = function(req, res){ // 선택한 ToDo 항목 삭제하기
fs.readFile('./todo_list.json', {
'encoding': 'utf8'
}, function (err, data) {
data = JSON.parse(data);
data.list[req.body.index] = null; // 선택한 ToDo 항목 삭제
data.list = data.list.filter(Boolean); // 유효한 값 추려내기
fs.writeFile('./todo_list.json', JSON.stringify(data), function (err) {
res.json(true);
});
});
};