Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/webtorrent/parse-torrent
Parse a torrent identifier (magnet uri, .torrent file, info hash)
https://github.com/webtorrent/parse-torrent
bittorrent browser javascript magnet-uri nodejs parse torrent webtorrent
Last synced: 4 days ago
JSON representation
Parse a torrent identifier (magnet uri, .torrent file, info hash)
- Host: GitHub
- URL: https://github.com/webtorrent/parse-torrent
- Owner: webtorrent
- License: mit
- Created: 2014-02-24T06:59:10.000Z (almost 11 years ago)
- Default Branch: master
- Last Pushed: 2024-10-26T19:21:06.000Z (3 months ago)
- Last Synced: 2024-10-31T09:13:53.968Z (3 months ago)
- Topics: bittorrent, browser, javascript, magnet-uri, nodejs, parse, torrent, webtorrent
- Language: JavaScript
- Homepage: https://webtorrent.io
- Size: 271 KB
- Stars: 440
- Watchers: 14
- Forks: 82
- Open Issues: 17
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
- awesome-peer-to-peer - parse-torrent
- awesome-pt - parse-torrent
README
# parse-torrent [![ci][ci-image]][ci-url] [![npm][npm-image]][npm-url] [![downloads][downloads-image]][downloads-url] [![javascript style guide][standard-image]][standard-url]
[ci-image]: https://img.shields.io/github/actions/workflow/status/webtorrent/parse-torrent/ci.yml
[ci-url]: https://github.com/webtorrent/parse-torrent/actions
[npm-image]: https://img.shields.io/npm/v/parse-torrent.svg
[npm-url]: https://npmjs.org/package/parse-torrent
[downloads-image]: https://img.shields.io/npm/dm/parse-torrent.svg
[downloads-url]: https://npmjs.org/package/parse-torrent
[standard-image]: https://img.shields.io/badge/code_style-standard-brightgreen.svg
[standard-url]: https://standardjs.com### Parse a torrent identifier (magnet uri, .torrent file, info hash)
Works in node and the browser (with [browserify](http://browserify.org/)). This module is used by [WebTorrent](http://webtorrent.io)!
## 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`.```js
import parseTorrent from 'parse-torrent'
import fs from '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: ,
// 'piece length': 16384,
// pieces: },
// infoBuffer: ,
// 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`.```js
import { toMagnetURI, toTorrentFile } from 'parse-torrent'const uri = toMagnetURI({
infoHash: 'd2474e86c95b19b8bcfdb92bc12c9d44667cfa36'
})
console.log(uri) // 'magnet:?xt=urn:btih:d2474e86c95b19b8bcfdb92bc12c9d44667cfa36'const buf = 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:```js
import { remote } from 'parse-torrent'
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:```js
import { remote } from 'parse-torrent'
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](https://feross.org) and [WebTorrent, LLC](https://webtorrent.io).