Skip to content

isolomak/dot-torrent

Repository files navigation

Dot-Torrent

ci Coverage Status NPM Downloads NPM License

Library for parsing and creating torrent files

Fast and easy to use
Written in TypeScript
Fully tested with 100% code coverage


Installation

npm install --save dot-torrent

Getting Started

Parse torrent file

import dotTorrent from 'dot-torrent';

// parse from the buffer or the string
const torrent = dotTorrent.parse( fs.readFileSync('path/to/the/file.torrent') );
// parse from file sync
const torrent = dotTorrent.parseFromFileSync('path/to/the/file.torrent');
// parse from file async
const torrent = await dotTorrent.parseFromFileAsync('path/to/the/file.torrent');

// torrent
{
  announce: 'https://test-tracker-1.net/testtopic.php?t=1111111',
  announceList: [
    'https://test-tracker-1.net/testtopic.php?t=1111111',
    'https://test-tracker-2.net/testtopic.php?t=2222222',
    'https://test-tracker-3.net/testtopic.php?t=3333333'
  ],
  comment: 'Amazing torrent',
  createdBy: 'https://www.npmjs.com/package/dot-torrent',
  createdAt: 1586292962,
  encoding: 'UTF-8',
  files: [ {
    length: 100500,
    path: 'awesome_torrent.txt'
  } ],
  infoHash: '600ccd1b71569232d01d110bc63e906beab04d8c',
  name: 'awesome_torrent.txt',
  private: false,
  publisher: 'isolomak',
  publisherUrl: 'https://www.npmjs.com/package/dot-torrent',
  totalLength: 100500,
  pieceLength: 32768,
  pieces: <Buffer 4d 92 fb 38 ... fe 74 59 b4 67 56 05>
}

Create torrent file

import dotTorrent from 'dot-torrent';

const parameters = {
  announceList: [
    'https://testtracker-1.net/testtopic.php?t=1111111'
  ],
  source: './path/to/the/folder/or/a/file',
  comment: 'Amazing torrent', // optional
  name: 'awesome_torrent.txt', // optional
  private: false, // optional (false by default)
  publisher: 'isolomak', // optional
  publisherUrl: 'https://www.npmjs.com/package/dot-torrent' // optional
};

const outputPath = './torrents/awesome.torrent';

await dotTorrent.create(parameters, outputPath);

Tests

  npm test

License

This project is licensed under the MIT License - see the LICENSE file for details.