UNPKG

3.63 kBMarkdownView Raw
1# magnet-uri [![travis][travis-image]][travis-url] [![npm][npm-image]][npm-url] [![downloads][downloads-image]][downloads-url]
2
3[travis-image]: https://img.shields.io/travis/feross/magnet-uri/master.svg
4[travis-url]: https://travis-ci.org/feross/magnet-uri
5[npm-image]: https://img.shields.io/npm/v/magnet-uri.svg
6[npm-url]: https://npmjs.org/package/magnet-uri
7[downloads-image]: https://img.shields.io/npm/dm/magnet-uri.svg
8[downloads-url]: https://npmjs.org/package/magnet-uri
9
10### Parse a magnet URI and return an object of keys/values.
11
12[![Sauce Test Status](https://saucelabs.com/browser-matrix/magnet-uri.svg)](https://saucelabs.com/u/magnet-uri)
13
14Also works in the browser with [browserify](http://browserify.org/)! This module is used by [WebTorrent](http://webtorrent.io).
15
16## install
17
18```
19npm install magnet-uri
20```
21
22## usage
23
24### decode
25
26Parse a magnet URI and return an object of keys/values.
27
28```js
29var magnet = require('magnet-uri')
30
31// "Leaves of Grass" by Walt Whitman
32var uri = 'magnet:?xt=urn:btih:d2474e86c95b19b8bcfdb92bc12c9d44667cfa36&dn=Leaves+of+Grass+by+Walt+Whitman.epub&tr=udp%3A%2F%2Ftracker.example4.com%3A80&tr=udp%3A%2F%2Ftracker.example5.com%3A80&tr=udp%3A%2F%2Ftracker.example3.com%3A6969&tr=udp%3A%2F%2Ftracker.example2.com%3A80&tr=udp%3A%2F%2Ftracker.example1.com%3A1337'
33
34var parsed = magnet.decode(uri)
35console.log(parsed.dn) // "Leaves of Grass by Walt Whitman.epub"
36console.log(parsed.infoHash) // "d2474e86c95b19b8bcfdb92bc12c9d44667cfa36"
37
38```
39
40The `parsed` magnet link object looks like this:
41
42```js
43 {
44 "xt": "urn:btih:d2474e86c95b19b8bcfdb92bc12c9d44667cfa36",
45 "dn": "Leaves of Grass by Walt Whitman.epub",
46 "tr": [
47 "udp://tracker.example1.com:1337",
48 "udp://tracker.example2.com:80",
49 "udp://tracker.example3.com:6969",
50 "udp://tracker.example4.com:80",
51 "udp://tracker.example5.com:80"
52 ],
53
54 // added for convenience:
55 "infoHash": "d2474e86c95b19b8bcfdb92bc12c9d44667cfa36",
56 "infoHashBuffer": ...,
57 "name": "Leaves of Grass by Walt Whitman.epub",
58 "announce": [
59 "udp://tracker.example1.com:1337",
60 "udp://tracker.example2.com:80",
61 "udp://tracker.example3.com:6969",
62 "udp://tracker.example4.com:80",
63 "udp://tracker.example5.com:80"
64 ]
65 }
66```
67
68### encode
69
70Convert an object of key/values into a magnet URI string.
71
72```js
73var magnet = require('magnet-uri')
74
75var uri = magnet.encode({
76 xt: [
77 'urn:ed2k:354B15E68FB8F36D7CD88FF94116CDC1',
78 'urn:tree:tiger:7N5OAMRNGMSSEUE3ORHOKWN4WWIQ5X4EBOOTLJY',
79 'urn:btih:QHQXPYWMACKDWKP47RRVIV7VOURXFE5Q'
80 ],
81 xl: '10826029',
82 dn: 'mediawiki-1.15.1.tar.gz',
83 tr: [
84 'udp://tracker.openbittorrent.com:80/announce'
85 ],
86 as: 'http://download.wikimedia.org/mediawiki/1.15/mediawiki-1.15.1.tar.gz',
87 xs: [
88 'http://cache.example.org/XRX2PEFXOOEJFRVUCX6HMZMKS5TWG4K5',
89 'dchub://example.org'
90 ]
91})
92
93console.log(uri) // the magnet uri
94```
95
96The returned magnet uri will be:
97
98```
99magnet:?xt=urn:ed2k:354B15E68FB8F36D7CD88FF94116CDC1&xt=urn:tree:tiger:7N5OAMRNGMSSEUE3ORHOKWN4WWIQ5X4EBOOTLJY&xt=urn:btih:QHQXPYWMACKDWKP47RRVIV7VOURXFE5Q&xl=10826029&dn=mediawiki-1.15.1.tar.gz&tr=udp%3A%2F%2Ftracker.openbittorrent.com%3A80%2Fannounce&as=http%3A%2F%2Fdownload.wikimedia.org%2Fmediawiki%2F1.15%2Fmediawiki-1.15.1.tar.gz&xs=http%3A%2F%2Fcache.example.org%2FXRX2PEFXOOEJFRVUCX6HMZMKS5TWG4K5&xs=dchub%3A%2F%2Fexample.org
100```
101
102You can also use convenience key names like `name` (`dn`), `infoHash` (`xt`),
103`infoHashBuffer` (`xt`), `announce` (`tr`), and `keywords` (`kt`).
104
105## license
106
107MIT. Copyright (c) [Feross Aboukhadijeh](http://feross.org).