Create .torrent files
npm install create-torrent[ci-image]: https://github.com/webtorrent/create-torrent/actions/workflows/ci.yml/badge.svg
[ci-url]: https://github.com/webtorrent/create-torrent/actions/workflows/ci.yml
[npm-image]: https://img.shields.io/npm/v/create-torrent.svg
[npm-url]: https://npmjs.org/package/create-torrent
[downloads-image]: https://img.shields.io/npm/dm/create-torrent.svg
[downloads-url]: https://npmjs.org/package/create-torrent
[standard-image]: https://img.shields.io/badge/code_style-standard-brightgreen.svg
[standard-url]: https://standardjs.com
#### Create .torrent files
This module is used by WebTorrent! This module works in node.js and the browser (with browserify).
```
npm install create-torrent
The simplest way to use create-torrent is like this:
`js
import createTorrent from 'create-torrent'
import fs from 'fs'
createTorrent('/path/to/folder', (err, torrent) => {
if (!err) {
// torrent is a Buffer with the contents of the new .torrent file`
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).
#### 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 or drag and drop)File
- W3C FileList object (basically an array of 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.
` jspath
{
name: String, // name of the torrent (default = basename of , or 1st file's name)`
comment: String, // free-form textual comments of the author
createdBy: String, // name and version of program used to create torrent
creationDate: Date // creation time in UNIX epoch format (default = now)
filterJunkFiles: Boolean, // remove hidden and other junk files? (default = true)
private: Boolean, // is this a private .torrent? (default = false)
pieceLength: Number, // force a custom piece length (number of bytes)
maxPieceLength: Number, // force a maximum piece length for auto piece length selection, does not affect pieceLength option (default = 4 MiB)
announceList: [[String]], // custom trackers (array of arrays of strings) (see bep12)
urlList: [String], // web seed urls (see bep19)
info: Object, // add non-standard info dict entries, e.g. info.source, a convention for cross-seeding
onProgress: Function // called with the number of bytes hashed and estimated total size after every piece
}
If announceList is omitted, the following trackers will be included automatically:
- udp://tracker.leechers-paradise.org:6969
- udp://tracker.coppersurfer.tk:6969
- udp://tracker.opentrackr.org:1337
- udp://explodie.org:6969
- udp://tracker.empire-js.us:1337
- wss://tracker.btorrent.xyz
- wss://tracker.openwebtorrent.com
- wss://tracker.webtorrent.dev
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./foo/bar/baz.txt
- Otherwise, the first file that has a name will determine the torrent name. For example,
if the first file is , 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
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:
`js`
const buf = Buffer.from('Some file content')
buf.name = 'Some file name'
`
usage: create-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.
MIT. Copyright (c) Feross Aboukhadijeh and WebTorrent, LLC.