1.1.1 • Published 30 days ago

torrent-create-stream v1.1.1

Weekly downloads
-
License
MIT
Repository
github
Last release
30 days ago

torrent-create-stream

npm

This package is an alternative package to create torrent files. It has two main advantages over the torrent-create package:

  • This package allows to create torrent files from dynamically generated streams. This is useful if you want to create a torrent file from a stream that is not a file on the disk but rather a large file that is generated in memory or from a database which you don't want to load completely into memory.

  • This package writes to an output stream instead of a file.

Install

npm install torrent-create-stream

Usage

import createTorrent from 'torrent-create-stream'
import fs from 'fs'

await createTorrent({
    files: [
        {
            name: "file_from_memory.txt",
            length: 100,
            getStream: (startAt, endAt) => {
                return new Readable({
                    read() {
                        for (let i = startAt; i < endAt; i++) {
                            this.push("a")
                        }
                        this.push(null)
                    }
                })
            }
        },
        {
            name: "file_from_os.txt",
            length: fs.statSync("./file_from_os.txt").size,
            getStream: (startAt, endAt) => {
                return fs.createReadStream("./file_from_os.txt", {
                    start: startAt,
                    end: endAt
                })
            }
        }
    ],
    announce: [
        ['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']
    ],
    isPrivate: true,
    name: "Test Torrent"
}, fs.createWriteStream("./test.torrent"))

Benchmark

for reference or if you want to run the benchmark yourself, see benchmark.js

10MB File Torrent Creation

packagespeedavg time
torrent-create41 ops/sec24ms
node-torrent-stream42 ops/sec23ms
torrent-create-stream (this package)53 ops/sec18ms

2GB File Torrent Creation

packageavg time
torrent-create4s
node-torrent-stream5s
torrent-create-stream (this package)2s

Contributing

Feel free to contribute to this project. Fork and make a Pull Request, or create an Issue if you see any problem.

1.1.1

30 days ago

1.1.0

4 months ago

1.0.9

4 months ago

1.0.8

4 months ago

1.0.7

4 months ago

1.0.6

4 months ago

1.0.5

4 months ago

1.0.2

4 months ago

1.0.4

4 months ago

1.0.3

4 months ago

1.0.1

4 months ago

1.0.0

4 months ago