Fix memory problems

This commit is contained in:
the1812 2019-04-22 21:35:06 +08:00
parent 6b67dd59fe
commit 01496b3ac4
3 changed files with 30 additions and 16 deletions

View File

@ -1,7 +1,20 @@
const commandLineArgs = require("command-line-args"); //@ts-check
const fs = require("fs");
const optionDefinitions = [ const title = "【2019·东方华灯宴】 - 九天共开怀";
{ name: 'info', alias: 'i', defaultOption: true, type: String, defaultValue: undefined }, const dest = title + ".flv";
{ name: 'parts', alias: 'p', type: Number, defaultValue: undefined },
]; const files = fs.readdirSync(".");
console.log(commandLineArgs(optionDefinitions)); const parts = files.filter(it => it.includes(title + ".part"));
const partRegex = /.*\.part([\d]+)/;
parts.sort((a, b) =>
{
const partA = parseInt(a.replace(partRegex, "$1"));
const partB = parseInt(b.replace(partRegex, "$1"));
return partA - partB;
}).forEach(file =>
{
const buffer = fs.readFileSync(file);
fs.appendFileSync(dest, buffer);
});
console.log("end");

View File

@ -91,14 +91,14 @@ class Downloader {
const files = fs.readdirSync("."); const files = fs.readdirSync(".");
const parts = files.filter(it => it.includes(title + ".part")); const parts = files.filter(it => it.includes(title + ".part"));
const partRegex = /.*\.part([\d]+)/; const partRegex = /.*\.part([\d]+)/;
const data = parts.sort((a, b) => { parts.sort((a, b) => {
const partA = parseInt(a.replace(partRegex, "$1")); const partA = parseInt(a.replace(partRegex, "$1"));
const partB = parseInt(b.replace(partRegex, "$1")); const partB = parseInt(b.replace(partRegex, "$1"));
return partA - partB; return partA - partB;
}).map(file => fs.readFileSync(file)); }).forEach(file => {
const stream = fs.createWriteStream(dest); const buffer = fs.readFileSync(file);
data.forEach(it => stream.write(it)); fs.appendFileSync(dest, buffer);
stream.close(); });
parts.forEach(file => fs.unlinkSync(file)); parts.forEach(file => fs.unlinkSync(file));
} }
return dest; return dest;

View File

@ -121,15 +121,16 @@ class Downloader
const files = fs.readdirSync("."); const files = fs.readdirSync(".");
const parts = files.filter(it => it.includes(title + ".part")); const parts = files.filter(it => it.includes(title + ".part"));
const partRegex = /.*\.part([\d]+)/; const partRegex = /.*\.part([\d]+)/;
const data = parts.sort((a, b) => parts.sort((a, b) =>
{ {
const partA = parseInt(a.replace(partRegex, "$1")); const partA = parseInt(a.replace(partRegex, "$1"));
const partB = parseInt(b.replace(partRegex, "$1")); const partB = parseInt(b.replace(partRegex, "$1"));
return partA - partB; return partA - partB;
}).map(file => fs.readFileSync(file)); }).forEach(file =>
const stream = fs.createWriteStream(dest); {
data.forEach(it => stream.write(it)); const buffer = fs.readFileSync(file);
stream.close(); fs.appendFileSync(dest, buffer);
});
parts.forEach(file => fs.unlinkSync(file)); parts.forEach(file => fs.unlinkSync(file));
} }
return dest; return dest;