mafintosh / torrent-stream

The low level streaming torrent engine that peerflix uses
MIT License
1.94k stars 228 forks source link

Downloading Whole Torrent. #111

Closed arch-linux closed 9 years ago

arch-linux commented 9 years ago

Hello, This module seems to be the best fit, but i can't seem to get it to function properly at all. For the record, I am trying to use this as a torrent downloader, so it will write the torrent to a file..

var torrentStream = require('torrent-stream');

var engine = torrentStream('magnent here');

engine.on('ready', function() { engine.files.forEach(function(file) { if(file.name == "filename here.") { var stream = file.createReadStream(); } }); });

How can i make this code download all of the files in the torrent, and save them to the disk?

Thank you!

asapach commented 9 years ago

You should call select() on each file instead of createReadStream(). When all the files are downloaded, the engine will emit an 'uninterested' event.

mafintosh commented 9 years ago

Here is a full snippet showing what @asapach is talking about:

var engine = torrentStream(someTorrent, {
  path: 'the-folder-you-want-to-store-the-files-in'
})

engine.on('ready', function () {
  engine.files.forEach(function (file) {
    file.select()
  })
  engine.on('idle', function () {
    console.log('all files downloaded!')
  })
})
asapach commented 9 years ago

@mafintosh, which reminds me, there should be a dedicated event for when the download is complete. That would allow us to fix #109 and #48.

mafintosh commented 9 years ago

@asapach should we call it engine.on('downloaded', fn) or do you have a better idea?

asapach commented 9 years ago

@mafintosh, 'downloaded' or 'complete' work for me.

arch-linux commented 9 years ago

I appreciate it you guys. I was able to get it to work!

asapach commented 9 years ago

see #113