pieces

A utility that takes a file and generates a collection of SHA1 hashes suitable for use in BitTorrent files.

npm install pieces
14 downloads in the last week
28 downloads in the last month

pieces

pieces is a utility that takes a file (browser) or file path (node) and a piece length, and generates a collection of SHA1 hashes that can be used when creating BitTorrent files.

Build status

Browser support

Install

npm install pieces

Usage

browser(ify)

var pieces = require('pieces')

var size = Math.pow(2, 14) // 16kb

// Typically you’ll get the File object from
// an input[type=file], but you you could also
// just create your own Blob.

var input = document.createElement('input')
input.type = 'file'
input.onchange = function(e) {
  var file = e.target.files[0]

  pieces(file, size, function(error, array) {
    // Returns a Uint8Array of binary data
    var data = new Blob([array])
    window.open(
      URL.createObjectURL(data)
    )
  })
}

document.body.appendChild(input)

node

var pieces = require('pieces')

var path = '/path/to/file'
var size = Math.pow(2, 18) // 256kb

// You should probably make sure the path
// exists before running pieces

pieces(path, size, function(error, buffer) {
  // Returns a Buffer of binary data
  console.log(buffer.toString())
})

Events

When you start processing larger files, you’ll notice that it takes a while for the callback to be fired (particularly in browsers). To make this more managable, the pieces object emits progress, data, and end events.

Example

Where the implementation differences are denoted with a pipe (ie. browser|server).

var pieces = require('pieces') 
var file|path = … 
var size = … 

pieces(file|path, size)
  .on('progress', function(percentage) {
    // percentage is a Number between 0 and 100
  })
  .on('data', function(bytes) {
    // bytes is a Uint8Array|Buffer containing a SHA1
  })
  .on('end', function() {
    // And we’re done.
  })

License

MIT

npm loves you