Socket
Socket
Sign inDemoInstall

torrent-create-stream

Package Overview
Dependencies
0
Maintainers
1
Versions
12
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    torrent-create-stream

Create a torrent file with a stream-getter interface


Version published
Weekly downloads
12
increased by9.09%
Maintainers
1
Created
Weekly downloads
 

Readme

Source

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.

Keywords

FAQs

Last updated on 02 Apr 2024

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc