使用Node.JS下载Torrent

时间:2015-10-07 19:27:42

标签: javascript node.js rss bittorrent

我想知道是否有人有如何使用NodeJS下载torrent的示例?基本上,我有一个种子的RSS Feed,我迭代并获取torrent文件URL,然后想在服务器上启动该torrent的下载。

我已经解析并在RSS中循环了,但是我已经尝试了几个npm包但它们要么已经崩溃,要么只是不稳定。如果有人有任何建议,例子,任何东西......我将非常感激。感谢。

router.get('/', function(req, res) {
  var options = {};
  parser.parseURL('rss feed here', options, function(err, articles) {
    var i = 0;
    var torrent;
    for (var title in articles.items) {
      console.log(articles.items[i]['url']);
      //download torrent here
      i++;
    }
  });
});

2 个答案:

答案 0 :(得分:8)

您可以使用node-torrent

然后,下载一个torrent:

var Client = require('node-torrent');
var client = new Client({logLevel: 'DEBUG'});
var torrent = client.addTorrent('a.torrent');

// when the torrent completes, move it's files to another area
torrent.on('complete', function() {
    console.log('complete!');
    torrent.files.forEach(function(file) {
        var newPath = '/new/path/' + file.path;
        fs.rename(file.path, newPath);
        // while still seeding need to make sure file.path points to the right place
        file.path = newPath;
    });
});

或者,为了获得更多控制,您可以使用transmission-dæmon并通过其xml-rpc协议对其进行控制。有一个名为transmission的节点模块可以完成这项工作!例:

var Transmission = require('./')

var transmission = new Transmission({
    port : 9091,
    host : '127.0.0.1'
});

transmission.addUrl('my.torrent', {
    "download-dir" : "/home/torrents"
}, function(err, result) {
    if (err) {
        return console.log(err);
    }
    var id = result.id;
    console.log('Just added a new torrent.');
    console.log('Torrent ID: ' + id);
    getTorrent(id);
});

答案 1 :(得分:1)

如果您正在使用视频种子,您可能会对Torrent Stream Server感兴趣。它是同时下载和流式传输视频的服务器,因此您无需完全下载即可观看视频。它基于torrent-stream库。

另一个有趣的项目是webtorrent。这是一个很好的torrent库,可在NodeJs和浏览器中同时使用,并具有流支持。根据我的经验,它在浏览器中没有很好的支持,但是应该可以在NodeJS中完全运行。