|
|
@ -4,30 +4,8 @@ |
|
|
var express = require('express'); |
|
|
var express = require('express'); |
|
|
var fs = require("fs"); |
|
|
var fs = require("fs"); |
|
|
var path = require("path"); |
|
|
var path = require("path"); |
|
|
var queue = require('queue'); |
|
|
|
|
|
var wget = require('wget-improved'); |
|
|
|
|
|
|
|
|
|
|
|
var downloadUrl = function(url, dest) { |
|
|
|
|
|
return function(cb) { |
|
|
|
|
|
try { |
|
|
|
|
|
// you can also change the mapping url to file here by changing the function
|
|
|
|
|
|
var download = wget.download(url, dest, {}); |
|
|
|
|
|
download.on('end', function() { |
|
|
|
|
|
() => console.log("done downloading") |
|
|
|
|
|
}); |
|
|
|
|
|
} catch (e) { |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
}; |
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
var q = queue(); |
|
|
|
|
|
//change this one as needed.
|
|
|
|
|
|
q.concurrency = 2; |
|
|
|
|
|
|
|
|
|
|
|
//q.start();
|
|
|
|
|
|
|
|
|
|
|
|
const { exec } = require('child_process'); |
|
|
|
|
|
|
|
|
const { exec, execSync} = require('child_process'); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const bodyParser= require('body-parser') |
|
|
const bodyParser= require('body-parser') |
|
|
@ -214,7 +192,7 @@ app.get('/killffmpeg', function (req, res) { |
|
|
res.end(cmd) |
|
|
res.end(cmd) |
|
|
}) |
|
|
}) |
|
|
|
|
|
|
|
|
app.get('/webdl', function (req, res) { |
|
|
|
|
|
|
|
|
app.get('/webdl1', function (req, res) { |
|
|
var p = req.query.url |
|
|
var p = req.query.url |
|
|
var n = "/srv/samba/ren/webdl/" + req.query.name |
|
|
var n = "/srv/samba/ren/webdl/" + req.query.name |
|
|
|
|
|
|
|
|
@ -270,20 +248,6 @@ app.get('/webdl', function (req, res) { |
|
|
res.send(p) |
|
|
res.send(p) |
|
|
}) |
|
|
}) |
|
|
|
|
|
|
|
|
app.get('/pushdl', function (req, res) { |
|
|
|
|
|
var p = req.query.url |
|
|
|
|
|
var n = "/srv/samba/ren/webdl/" + req.query.name |
|
|
|
|
|
|
|
|
|
|
|
q.push(downloadUrl(p,n)); |
|
|
|
|
|
console.log("all urls pushed"); |
|
|
|
|
|
|
|
|
|
|
|
// q.start()
|
|
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
|
|
app.get('/queuelen', function (req, res) { |
|
|
|
|
|
res.end("Len" + q.length) |
|
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
|
|
app.get('/deleteThumb/*', function (req, res) { |
|
|
app.get('/deleteThumb/*', function (req, res) { |
|
|
if (req.path.startsWith("/deleteThumb/srv/samba/ren/thumb/")) { |
|
|
if (req.path.startsWith("/deleteThumb/srv/samba/ren/thumb/")) { |
|
|
var p = req.path.substr(12) |
|
|
var p = req.path.substr(12) |
|
|
@ -323,6 +287,95 @@ app.post('/upload', upload.any() , (req, res, next) => { |
|
|
res.send("ok") |
|
|
res.send("ok") |
|
|
}) |
|
|
}) |
|
|
|
|
|
|
|
|
|
|
|
var running = [] |
|
|
|
|
|
|
|
|
|
|
|
function countWget() { |
|
|
|
|
|
var cmd = 'ps -fA | grep wget | wc -l' |
|
|
|
|
|
console.log(cmd) |
|
|
|
|
|
|
|
|
|
|
|
const execSync = require('child_process').execSync; |
|
|
|
|
|
var code = execSync(cmd); |
|
|
|
|
|
|
|
|
|
|
|
return parseInt("" + code) - 2 |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
var downloadUrl = async function(job) { |
|
|
|
|
|
console.log("download " + job.url) |
|
|
|
|
|
await new Promise(resolve => setTimeout(resolve, 5000)); |
|
|
|
|
|
console.log("downloaded " + job.url) |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
function downloadWget(job) { |
|
|
|
|
|
running.push(job) |
|
|
|
|
|
|
|
|
|
|
|
var joburl = job.url |
|
|
|
|
|
|
|
|
|
|
|
var cmd = 'wget -b -O "'+job.folder+'" ' |
|
|
|
|
|
cmd = cmd + '--header="Cookie: ' + job.cookie + '" ' |
|
|
|
|
|
cmd = cmd + '"'+joburl+'"' |
|
|
|
|
|
|
|
|
|
|
|
console.log(cmd) |
|
|
|
|
|
exec(cmd, (err, stdout, stderr) => { |
|
|
|
|
|
running = running.filter(function(el) { return el.url != joburl; }); |
|
|
|
|
|
if (err) { |
|
|
|
|
|
console.log(err) |
|
|
|
|
|
// node couldn't execute the command
|
|
|
|
|
|
return; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// the *entire* stdout and stderr (buffered)
|
|
|
|
|
|
console.log(`stdout: ${stdout}`); |
|
|
|
|
|
console.log(`stderr: ${stderr}`); |
|
|
|
|
|
}); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
var q = []; |
|
|
|
|
|
|
|
|
|
|
|
app.get('/webdl', function (req, res) { |
|
|
|
|
|
var p = req.query.url |
|
|
|
|
|
var n = "/srv/samba/ren/webdl/" + req.query.name |
|
|
|
|
|
var c = req.query.cookies |
|
|
|
|
|
|
|
|
|
|
|
if (fs.existsSync(n)) { |
|
|
|
|
|
res.send("exists") |
|
|
|
|
|
return |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
q.push({url: p, folder: n, cookie: c}); |
|
|
|
|
|
console.log("all urls pushed"); |
|
|
|
|
|
|
|
|
|
|
|
res.end("ok") |
|
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
|
|
app.get('/queuelen', function (req, res) { |
|
|
|
|
|
for (var job of running) { |
|
|
|
|
|
res.write(job.url+"\n") |
|
|
|
|
|
} |
|
|
|
|
|
res.write("---\n") |
|
|
|
|
|
for (var job of q) { |
|
|
|
|
|
res.write(job.url+"\n") |
|
|
|
|
|
} |
|
|
|
|
|
res.end("Len " + q.length) |
|
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
|
|
function mainloop() { |
|
|
|
|
|
var cnt = countWget() |
|
|
|
|
|
|
|
|
|
|
|
if (cnt < 2 && q.length > 0) { |
|
|
|
|
|
var job = q.shift() |
|
|
|
|
|
downloadWget(job) |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
setTimeout(function () { |
|
|
|
|
|
// Do Something Here
|
|
|
|
|
|
// Then recall the parent function to
|
|
|
|
|
|
// create a recursive loop.
|
|
|
|
|
|
mainloop(); |
|
|
|
|
|
}, 1000); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
mainloop() |
|
|
|
|
|
|
|
|
var server = app.listen(8081, function () { |
|
|
var server = app.listen(8081, function () { |
|
|
var host = server.address().address |
|
|
var host = server.address().address |
|
|
var port = server.address().port |
|
|
var port = server.address().port |
|
|
|