todo.js
3.28 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
/*
* 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 이용 검색부분
var datas=fs.readFileSync('./API_Key.json',{'encoding':'utf8'});
datas=JSON.parse(datas);
var optionParams = {
q:req.body.contents,
part:"snippet",
key: datas.API,
type:"video",
maxResults: Number(req.body.counts),
regionCode:"KR",
order:"viewCount"
};
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);
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);
});
}
});
});
};
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);
});
});
};