todo.js 3.18 KB

/*
 * 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 optionParams = {
		q:req.body.contents,
		part:"snippet",
		key:"AIzaSyCgGa6aM7taXs4bajtYukbc_EQAKTLVTNc",
		type:"video",
		maxResults:5,
		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);
	
	request(url, function(err, res, body){
		
		fs.readFile('./todo_list.json', {
			'encoding': 'utf8'
		}, function (err, data1) {
			data1 = JSON.parse(data1);
			data1.list=[];
			var data=JSON.parse(body).items;
			for(var content in data){
				//youtube downloader에 videoId 넘기면 됨.
				var todo = {	// 기본 ToDo 항목 형식
					'contents': '',
					'videoId':'',
					'complete': false
				};
				console.log(data[content].snippet.title+" : "+data[content].id.videoId);
				todo.contents = data[content].snippet.title;
				todo.videoId = data[content].id.videoId;
				data1.list.push(todo);
			} // 새로운 ToDo 항목 추가
			
			fs.writeFile('./todo_list.json', JSON.stringify(data1), function (err) {
				res1.json(true);
			});
		});
		//json형식을 서버로 부터 받음
		
	});
};

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);
		});
		video.pipe(fs.createWriteStream(data.list[req.body.index].contents+'.mp4'));
		console.log(data.list[req.body.index].contents);
		fs.writeFile('./todo_list.json', JSON.stringify(data), function (err) {
			res.json(true);
		});
	});
};

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);
		});
	});
};