magnet2torrent-js
Convert magnet to torrent (independent of third-party services)
Last updated 6 months ago by tsuk1ko .
MIT · Repository · Bugs · Original npm · Tarball · package.json
$ cnpm install magnet2torrent-js 
SYNC missed versions from official npm registry.

magnet2torrent

This module uses torrent-stream to download metadata of magnet links only, without creating any temp file.

Install

npm i magnet2torrent-js

API

constructor Magnet2torrent(options?: object): Magnet2torrent

Optional options are:

{
    trackers: [],                  // {Array<string>} Trackers to use, default is []
    addTrackersToTorrent: false,   // {boolean} Default is false
    timeout: 0                     // {number} Timeout seconds, set to 0 will disable it, default is 0
}

Magnet2torrent.getTorrent(magnet: string): Promise<Torrent>

magnet can be a full BTIH magnet link or its hash only.

Both sha-1 hash and base32 encoded hash are supported.

This method will return an instance of parse-torrent, with 2 extra functions:

  • toTorrentFile() - alias of ParseTorrent.toTorrentFile(torrent)
  • toMagnetURI() - alias of ParseTorrent.toMagnetURI(torrent)

Magnet2torrent.getTorrentBuffer(magnet: string): Promise<Buffer>

This method will return a buffer of torrent.

It is equal to getTorrent(magnet).then(torrent => torrent.toTorrentFile()).

Example

Download torrent file simply

const { writeFileSync } = require('fs');
const Magnet2torrent = require('magnet2torrent-js');

// ubuntu-16.04.1-server-amd64.iso
const magnet = 'magnet:?xt=urn:btih:90289fd34dfc1cf8f316a268add8354c85334458';

const m2t = new Magnet2torrent({ timeout: 60 });

m2t.getTorrent(magnet).then(torrent => {
    console.log(torrent.infoHash);
    writeFileSync(`${torrent.name}.torrent`, torrent.toTorrentFile());
}).catch(e => {
    // Timeout or error occured
    console.error(e);
});

Use custom trackers and write them to torrent file

const { writeFileSync } = require('fs');
const Magnet2torrent = require('magnet2torrent-js');

// https://github.com/ngosang/trackerslist
const trackers = [
    'udp://tracker.coppersurfer.tk:6969/announce',
    'udp://tracker.open-internet.nl:6969/announce',
    'udp://tracker.leechers-paradise.org:6969/announce',
    // ...
];

// ubuntu-16.04.1-server-amd64.iso
const magnet = 'magnet:?xt=urn:btih:90289fd34dfc1cf8f316a268add8354c85334458';

const m2t = new Magnet2torrent({
    trackers,
    addTrackersToTorrent: true
});

m2t.getTorrent(magnet).then(torrent => {
    console.log('These trackers have been added:', torrent.announce);
    writeFileSync(`${torrent.name}.torrent`, torrent.toTorrentFile());
}).catch(e => {
    // Timeout or error occured
    console.error(e);
});

Current Tags

  • 1.4.0                                ...           latest (6 months ago)

9 Versions

  • 1.4.0                                ...           6 months ago
  • 1.3.1                                ...           8 months ago
  • 1.3.0                                ...           2 years ago
  • 1.2.2                                ...           2 years ago
  • 1.2.1                                ...           2 years ago
  • 1.2.0                                ...           2 years ago
  • 1.1.1                                ...           2 years ago
  • 1.1.0                                ...           2 years ago
  • 1.0.0                                ...           2 years ago
Maintainers (1)
Downloads
Today 0
This Week 0
This Month 0
Last Day 0
Last Week 0
Last Month 2
Dependencies (6)
Dev Dependencies (0)
None
Dependents (1)

Copyright 2014 - 2016 © taobao.org |