1.0.1 • Published 9 years ago

repeat-down v1.0.1

Weekly downloads
5
License
ISC
Repository
github
Last release
9 years ago

repeat-down

multi-tasking download files and support continue transferring from breakpoint repeattly.

npm install repeat-down

##example

    var path = require('path');
    var RepeatDown = require('repeat-down');
    
    //{maxRun} max tasks in running, {repeatNum} the auto repeat times internally  if a task failed .
    //{timeout} the connection timeout.
    var downloader = new RepeatDown({maxRun: 6, timeout: 5000, repeatNum: 4});
    
    downloader.get({
        url:'http://download.sublimetext.com/Sublime%20Text%20Build%203103%20x64%20Setup.exe',
        dest:path.join(__dirname, 'temp', 'test.zip')
    }).get({
        url:'http://download.sublimetext.com/Sublime%20Text%20Build%203103%20x64%20Setup.exe',
        dest:path.join(__dirname, 'temp', 'test2.zip')
    }).run(function(percent,task){//percent callback {percent: 0-100}
    
        console.log('file:'+task.dest+' : '+percent);
        
    },function(err,task){//single task callback ,maybe completed or have a error.
    
        if(err){
            console.log('download err :'+task.url);
        }else{
            console.log('download complete :'+task.url);
        }
        
    },function(errtasks){//all tasks callback,errtasks are array of err task,
    
        if(errtasks.length > 1){
            console.log('failed tasks :'+errtasks.length);

            //you can call this to continue run the errtasks.
            //downloader.restartErrTasks(errtasks);
        }else{
            console.log('all complete.');
        }
        
    });

#methods

###RepeatDown(option)

    var RepeatDown = require('repeat-down');
    var downloader = new RepeatDown({maxRun: 6, timeout: 5000, repeatNum: 4});

create a downloader. option a obj with some propertys.

timeout number the connection timeout ,default 5000(milliscond). maxRun number the max running tasks ,default 5. repeatNum number max auto repeat times if a task failed ,default 10. delayTime number a increasing time for every repeat ,default 500(milliscond).

###.get(option)

downloader.get({
        url:'http://download.sublimetext.com/Sublime%20Text%20Build%203103%20x64%20Setup.exe',
        dest:path.join(__dirname, 'temp', 'test.zip')
    })

add tasks. option is a obj|array. propertys below.

url string the quest url of a file. dest string the filepath.

###.run(processCallback,doneCallback,doneAllCallback)

    downloader.run(processCallback(percent, task),doneCallback(err, task),doneAllCallback(errtasks));

run the tasks.

processCallback the process callback. percent a percent for every task in range 0 - 100. task is a obj. doneCallback the callback for every task when complete or failed. doneAllCallback the global callback. errtasks is a array of failed tasks. optionly you cal call downloader.restartErrTasks(errtasks) to continue the failed tasks.

###.restartErrTasks(errtasks)

restart the failed tasks. if need you can call many times until all tasks complete.

###Task

task has some propertys below:

start number the start point(byte) in download stream for breakpoint resume. timeout number connection timeout. url string quest url. dest stringfilepath. curChunk obj a chunk obj. _isBreak boolean whether if surpport breakpoint resume for the task. process numbera percent of the process. reclen number current received length. start+reclen is the total received length. totalLen number the total lenght of the file will be received.