Summary
토렌트(Deluge)로 다운로드를 걸어놓고 진행상황을 매번 확인하기 귀찮아서 구현한 코드입니다. 다운로드 디렉토리를 관찰하다가 새로운 파일을 발견하면 files
맵에 파일이름을 키로 저장해 두고 3분을 기다립니다. 3분이 경과하면 files
맵에 저장된 파일 중 실제로 존재하는 파일만 추려서 파일 목록을 만들어내고 이를 G메일로 전송합니다. G메일 전송에는 emailjs
라는 모듈이 사용되었습니다.
Module
$ npm install emailjs
Source
var fs = require('fs');
var path = require('path');
var completeDir = '/data/torrent/complete';
var files = {};
var working = false;
var email = require("emailjs/email");
var server = email.server.connect({
user: "reshout",
password: "xxxxxxxx",
host: "smtp.gmail.com",
ssl: true
});
fs.watch(completeDir, function(action, filename) {
files[filename] = true;
if (!working) {
working = true;
var text = "";
var count = 0;
setTimeout(function() {
for (var prop in files) {
if (files.hasOwnProperty(prop)) {
var apath = path.join(completeDir, prop);
if (fs.existsSync(apath)) {
text += (prop + "\n");
count++;
}
}
}
server.send({
text: text,
from: "reshout <reshout@gmail.com>",
to: "reshout <reshout@gmail.com>",
subject: "[reshout.com] " + count + " files downloaded"
}, function(err, message) {
console.log(err || message);
});
working = false;
files = {};
}, 1000 * 60 * 3);
}
});