create-torrent
Create .torrent files
This module is used by WebTorrent! This module works in node.js and the browser (with browserify).
install
npm install create-torrent
usage
The simplest way to use create-torrent
is like this:
import createTorrent from 'create-torrent'
import fs from 'fs'
createTorrent('/path/to/folder', (err, torrent) => {
if (!err) {
fs.writeFile('my.torrent', torrent)
}
})
A reasonable piece length (approx. 1024 pieces) will automatically be selected
for the .torrent file, or you can override it if you want a different size (See
API docs below).
api
createTorrent(input, [opts], function callback (err, torrent) {})
Create a new .torrent
file.
input
can be any of the following:
- path to the file or folder on filesystem (string)
- W3C File object (from an
<input>
or drag and drop) - W3C FileList object (basically an array of
File
objects) - Node Buffer object
- Node stream.Readable object
Or, an array of string
, File
, Buffer
, or stream.Readable
objects.
opts
is optional and allows you to set special settings on the produced .torrent file.
{
name: String,
comment: String,
createdBy: String,
creationDate: Date
filterJunkFiles: Boolean,
private: Boolean,
pieceLength: Number,
announceList: [[String]],
urlList: [String],
info: Object,
onProgress: Function
}
If announceList
is omitted, the following trackers will be included automatically:
- udp://tracker.openbittorrent.com:80
- udp://tracker.internetwarriors.net:1337
- udp://tracker.leechers-paradise.org:6969
- udp://tracker.coppersurfer.tk:6969
- udp://exodus.desync.com:6969
- wss://tracker.btorrent.xyz
- wss://tracker.openwebtorrent.com
- wss://tracker.fastcast.nz
Trackers that start with wss://
are for WebRTC peers. See
WebTorrent to learn more.
callback
is called with an error and a Buffer of the torrent data. It is up to you to
save it to a file if that's what you want to do.
Note: Every torrent is required to have a name. If one is not explicitly provided
through opts.name
, one will be determined automatically using the following logic:
- If all files share a common path prefix, that will be used. For example, if all file
paths start with
/imgs/
the torrent name will be imgs
. - Otherwise, the first file that has a name will determine the torrent name. For example,
if the first file is
/foo/bar/baz.txt
, the torrent name will be baz.txt
. - If no files have names (say that all files are Buffer or Stream objects), then a name
like "Unnamed Torrent " will be generated.
Note: Every file is required to have a name. For filesystem paths or W3C File objects,
the name is included in the object. For Buffer or Readable stream types, a name
property
can be set on the object, like this:
const buf = Buffer.from('Some file content')
buf.name = 'Some file name'
command line
usage: create-torrent <directory OR file> {-o outfile.torrent}
Create a torrent file from a directory or file.
If an output file isn\'t specified with `-o`, the torrent file will be
written to stdout.
license
MIT. Copyright (c) Feross Aboukhadijeh and WebTorrent, LLC.