使用 Node.JS 下载 Torrent
Downloading Torrent with Node.JS
我想知道是否有人有使用 NodeJS 下载 torrent 的示例?本质上,我有一个种子的 RSS 源,我循环访问并获取种子文件 url,然后想在服务器上启动该种子的下载。
我已经很好地解析并遍历了 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++;
}
});
});
您可以为此使用 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 and control it via its xml-rpc protocol. There's a node module called 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);
});
如果您正在处理视频种子,您可能会对 Torrent Stream Server. It a server that downloads and streams video at the same time, so you can watch the video without fully downloading it. It's based on torrent-stream 库感兴趣。
另一个有趣的项目是 webtorrent。这是一个很好的 torrent 库,可在以下两种情况下使用:NodeJs 和浏览器,并具有流媒体支持。根据我的经验,它在浏览器中的支持不是很好,但在 NodeJS 中应该可以正常工作。
我想知道是否有人有使用 NodeJS 下载 torrent 的示例?本质上,我有一个种子的 RSS 源,我循环访问并获取种子文件 url,然后想在服务器上启动该种子的下载。
我已经很好地解析并遍历了 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++;
}
});
});
您可以为此使用 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 and control it via its xml-rpc protocol. There's a node module called 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);
});
如果您正在处理视频种子,您可能会对 Torrent Stream Server. It a server that downloads and streams video at the same time, so you can watch the video without fully downloading it. It's based on torrent-stream 库感兴趣。
另一个有趣的项目是 webtorrent。这是一个很好的 torrent 库,可在以下两种情况下使用:NodeJs 和浏览器,并具有流媒体支持。根据我的经验,它在浏览器中的支持不是很好,但在 NodeJS 中应该可以正常工作。