All Projects → webtorrent → Parse Torrent

webtorrent / Parse Torrent

Licence: mit
Parse a torrent identifier (magnet uri, .torrent file, info hash)

Programming Languages

javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to Parse Torrent

Magnet Uri
Parse a magnet URI and return an object of keys/values
Stars: ✭ 183 (-43.69%)
Mutual labels:  parse, torrent, bittorrent, webtorrent, browser
Webtorrent Hybrid
WebTorrent (with WebRTC support in Node.js)
Stars: ✭ 422 (+29.85%)
Mutual labels:  torrent, bittorrent, webtorrent, browser
Webtorrent
⚡️ Streaming torrent client for the web
Stars: ✭ 25,554 (+7762.77%)
Mutual labels:  torrent, bittorrent, webtorrent, browser
parse-torrent-file
DEPRECATED: Parse a .torrent file and return an object of keys/values
Stars: ✭ 62 (-80.92%)
Mutual labels:  torrent, parse, bittorrent, webtorrent
Torrent Discovery
Discover BitTorrent and WebTorrent peers
Stars: ✭ 177 (-45.54%)
Mutual labels:  torrent, bittorrent, webtorrent, browser
Bittorrent Tracker
🌊 Simple, robust, BitTorrent tracker (client & server) implementation
Stars: ✭ 1,184 (+264.31%)
Mutual labels:  torrent, bittorrent, webtorrent, browser
Bittorrent Protocol
Simple, robust, BitTorrent peer wire protocol implementation
Stars: ✭ 279 (-14.15%)
Mutual labels:  torrent, bittorrent, webtorrent, browser
Create Torrent
Create .torrent files
Stars: ✭ 264 (-18.77%)
Mutual labels:  torrent, bittorrent, webtorrent, browser
CheckWebPeer
Check WebRTC peers of torrents.
Stars: ✭ 19 (-94.15%)
Mutual labels:  torrent, bittorrent, webtorrent
Bittorrent Dht
🕸 Simple, robust, BitTorrent DHT implementation
Stars: ✭ 1,004 (+208.92%)
Mutual labels:  torrent, bittorrent, webtorrent
Bittorrent Peerid
Map a BitTorrent peer ID to a human-readable client name and version
Stars: ✭ 47 (-85.54%)
Mutual labels:  torrent, bittorrent, webtorrent
Wt Tracker
High-performance WebTorrent tracker
Stars: ✭ 144 (-55.69%)
Mutual labels:  torrent, bittorrent, webtorrent
Ut metadata
BitTorrent Extension for Peers to Send Metadata Files (BEP 9)
Stars: ✭ 98 (-69.85%)
Mutual labels:  bittorrent, webtorrent, browser
Diffy
🎞️💓🍿 Love streaming - It's always best to watch a movie together ! 🤗
Stars: ✭ 37 (-88.62%)
Mutual labels:  torrent, bittorrent, webtorrent
Torrentpier
Main project repository
Stars: ✭ 166 (-48.92%)
Mutual labels:  torrent, bittorrent, webtorrent
ut pex
Implementation of ut_pex bittorrent protocol (PEX) for webtorrent
Stars: ✭ 54 (-83.38%)
Mutual labels:  torrent, bittorrent, webtorrent
webtorrent-health
💚 Get health info about a webtorrent file or magnet link
Stars: ✭ 27 (-91.69%)
Mutual labels:  torrent, webtorrent
live-torrent-backend
The backend server for the live-torrent project
Stars: ✭ 38 (-88.31%)
Mutual labels:  torrent, webtorrent
ocelot
Alternative compiled announcer (ocelot)
Stars: ✭ 14 (-95.69%)
Mutual labels:  torrent, bittorrent
uWebTorrentTracker
🔆 Simple, robust, WebTorrent tracker server implementation
Stars: ✭ 58 (-82.15%)
Mutual labels:  bittorrent, webtorrent

parse-torrent ci npm downloads javascript style guide

Parse a torrent identifier (magnet uri, .torrent file, info hash)

Works in node and the browser (with browserify). This module is used by WebTorrent!

install

npm install parse-torrent

usage

parse

The return value of parseTorrent will contain as much info as possible about the torrent. The only property that is guaranteed to be present is infoHash.

const parseTorrent = require('parse-torrent')
const fs = require('fs')

// info hash (as a hex string)
parseTorrent('d2474e86c95b19b8bcfdb92bc12c9d44667cfa36')
// { infoHash: 'd2474e86c95b19b8bcfdb92bc12c9d44667cfa36' }

// info hash (as a Buffer)
parseTorrent(new Buffer('d2474e86c95b19b8bcfdb92bc12c9d44667cfa36', 'hex'))
// { infoHash: 'd2474e86c95b19b8bcfdb92bc12c9d44667cfa36' }

// magnet uri (as a utf8 string)
parseTorrent('magnet:?xt=urn:btih:d2474e86c95b19b8bcfdb92bc12c9d44667cfa36')
// { xt: 'urn:btih:d2474e86c95b19b8bcfdb92bc12c9d44667cfa36',
//   infoHash: 'd2474e86c95b19b8bcfdb92bc12c9d44667cfa36' }

// magnet uri with torrent name
parseTorrent('magnet:?xt=urn:btih:d2474e86c95b19b8bcfdb92bc12c9d44667cfa36&dn=Leaves%20of%20Grass%20by%20Walt%20Whitman.epub')
// { xt: 'urn:btih:d2474e86c95b19b8bcfdb92bc12c9d44667cfa36',
//   dn: 'Leaves of Grass by Walt Whitman.epub',
//   infoHash: 'd2474e86c95b19b8bcfdb92bc12c9d44667cfa36',
//   name: 'Leaves of Grass by Walt Whitman.epub' }

// magnet uri with trackers
parseTorrent('magnet:?xt=urn:btih:d2474e86c95b19b8bcfdb92bc12c9d44667cfa36&tr=http%3A%2F%2Ftracker.example.com%2Fannounce')
// { xt: 'urn:btih:d2474e86c95b19b8bcfdb92bc12c9d44667cfa36',
//   tr: 'http://tracker.example.com/announce',
//   infoHash: 'd2474e86c95b19b8bcfdb92bc12c9d44667cfa36',
//   announce: [ 'http://tracker.example.com/announce' ] }

// .torrent file (as a Buffer)
parseTorrent(fs.readFileSync(__dirname + '/torrents/leaves.torrent'))
// { info:
//    { length: 362017,
//      name: <Buffer 4c 65 61 76 65 73 20 6f 66 20 47 72 61 73 73 20 62 79 20 57 61 6c 74 20 57 68 69 74 6d 61 6e 2e 65 70 75 62>,
//      'piece length': 16384,
//      pieces: <Buffer 1f 9c 3f 59 be ec 07 97 15 ec 53 32 4b de 85 69 e4 a0 b4 eb ec 42 30 7d 4c e5 55 7b 5d 39 64 c5 ef 55 d3 54 cf 4a 6e cc 7b f1 bc af 79 d1 1f a5 e0 be 06 ...> },
//   infoBuffer: <Buffer 64 36 3a 6c 65 6e 67 74 68 69 33 36 32 30 31 37 65 34 3a 6e 61 6d 65 33 36 3a 4c 65 61 76 65 73 20 6f 66 20 47 72 61 73 73 20 62 79 20 57 61 6c 74 20 57 ...>,
//   infoHash: 'd2474e86c95b19b8bcfdb92bc12c9d44667cfa36',
//   name: 'Leaves of Grass by Walt Whitman.epub',
//   private: false,
//   created: Thu Aug 01 2013 06:27:46 GMT-0700 (PDT),
//   comment: 'Downloaded from http://TheTorrent.org',
//   announce:
//    [ 'http://tracker.example.com/announce' ],
//   urlList: [],
//   files:
//    [ { path: 'Leaves of Grass by Walt Whitman.epub',
//        name: 'Leaves of Grass by Walt Whitman.epub',
//        length: 362017,
//        offset: 0 } ],
//   length: 362017,
//   pieceLength: 16384,
//   lastPieceLength: 1569,
//   pieces:
//    [ '1f9c3f59beec079715ec53324bde8569e4a0b4eb',
//      'ec42307d4ce5557b5d3964c5ef55d354cf4a6ecc',
//      '7bf1bcaf79d11fa5e0be06593c8faafc0c2ba2cf',
//      '76d71c5b01526b23007f9e9929beafc5151e6511',
//      '0931a1b44c21bf1e68b9138f90495e690dbc55f5',
//      '72e4c2944cbacf26e6b3ae8a7229d88aafa05f61',
//      'eaae6abf3f07cb6db9677cc6aded4dd3985e4586',
//      '27567fa7639f065f71b18954304aca6366729e0b',
//      '4773d77ae80caa96a524804dfe4b9bd3deaef999',
//      'c9dd51027467519d5eb2561ae2cc01467de5f643',
//      '0a60bcba24797692efa8770d23df0a830d91cb35',
//      'b3407a88baa0590dc8c9aa6a120f274367dcd867',
//      'e88e8338c572a06e3c801b29f519df532b3e76f6',
//      '70cf6aee53107f3d39378483f69cf80fa568b1ea',
//      'c53b506159e988d8bc16922d125d77d803d652c3',
//      'ca3070c16eed9172ab506d20e522ea3f1ab674b3',
//      'f923d76fe8f44ff32e372c3b376564c6fb5f0dbe',
//      '52164f03629fd1322636babb2c014b7dae582da4',
//      '1363965261e6ce12b43701f0a8c9ed1520a70eba',
//      '004400a267765f6d3dd5c7beb5bd3c75f3df2a54',
//      '560a61801147fa4ec7cf568e703acb04e5610a4d',
//      '56dcc242d03293e9446cf5e457d8eb3d9588fd90',
//      'c698de9b0dad92980906c026d8c1408fa08fe4ec' ] }

encode

The reverse works too. To convert an object of keys/value to a magnet uri or .torrent file buffer, use toMagnetURI and toTorrentFile.

const parseTorrent = require('parse-torrent')

const uri = parseTorrent.toMagnetURI({
  infoHash: 'd2474e86c95b19b8bcfdb92bc12c9d44667cfa36'
})
console.log(uri) // 'magnet:?xt=urn:btih:d2474e86c95b19b8bcfdb92bc12c9d44667cfa36'

const buf = parseTorrent.toTorrentFile({
  info: {
    /* ... */
  }
})
console.log(buf)

remote torrents

To support remote torrent identifiers (i.e. http/https links to .torrent files, or filesystem paths), as well as Blobs use the parseTorrent.remote function. It takes a callback since these torrent types require async operations:

parseTorrent.remote(torrentId, (err, parsedTorrent) => {
  if (err) throw err
  console.log(parsedTorrent)
})

If the torrentId is an http/https link to the .torrent file, then the request to the file can be modified by passing simple-get params. For example:

parseTorrent.remote(torrentId, { timeout: 60 * 1000 }, (err, parsedTorrent) => {
  if (err) throw err
  console.log(parsedTorrent)
})

command line program

This package also includes a command line program.

Usage: parse-torrent /path/to/torrent
       parse-torrent magnet_uri
       parse-torrent --stdin

To install it, run:

npm install parse-torrent -g

license

MIT. Copyright (c) Feross Aboukhadijeh and WebTorrent, LLC.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].