magnet-uri
    DefinitelyTyped icon, indicating that this package has TypeScript declarations provided by the separate @types/magnet-uri package

    6.2.0 • Public • Published

    magnet-uri ci npm downloads javascript style guide

    Parse a magnet URI and return an object of keys/values.

    Also works in the browser with browserify! This module is used by WebTorrent.

    install

    npm install magnet-uri
    

    usage

    decode

    Parse a magnet URI and return an object of keys/values.

    const magnet = require('magnet-uri')
    
    // "Leaves of Grass" by Walt Whitman
    const 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'
    
    const parsed = magnet.decode(uri)
    console.log(parsed.dn) // "Leaves of Grass by Walt Whitman.epub"
    console.log(parsed.infoHash) // "d2474e86c95b19b8bcfdb92bc12c9d44667cfa36"

    The parsed magnet link object looks like this:

      {
        "xt": "urn:btih:d2474e86c95b19b8bcfdb92bc12c9d44667cfa36",
        "dn": "Leaves of Grass by Walt Whitman.epub",
        "tr": [
          "udp://tracker.example1.com:1337",
          "udp://tracker.example2.com:80",
          "udp://tracker.example3.com:6969",
          "udp://tracker.example4.com:80",
          "udp://tracker.example5.com:80"
        ],
    
        // added for convenience:
        "infoHash": "d2474e86c95b19b8bcfdb92bc12c9d44667cfa36",
        "infoHashBuffer": ...,
        "name": "Leaves of Grass by Walt Whitman.epub",
        "announce": [
          "udp://tracker.example1.com:1337",
          "udp://tracker.example2.com:80",
          "udp://tracker.example3.com:6969",
          "udp://tracker.example4.com:80",
          "udp://tracker.example5.com:80"
        ]
      }

    encode

    Convert an object of key/values into a magnet URI string.

    const magnet = require('magnet-uri')
    
    const uri = magnet.encode({
      xt: [
        'urn:ed2k:354B15E68FB8F36D7CD88FF94116CDC1',
        'urn:tree:tiger:7N5OAMRNGMSSEUE3ORHOKWN4WWIQ5X4EBOOTLJY',
        'urn:btih:QHQXPYWMACKDWKP47RRVIV7VOURXFE5Q'
      ],
      xl: '10826029',
      dn: 'mediawiki-1.15.1.tar.gz',
      tr: [
        'udp://tracker.openbittorrent.com:80/announce'
      ],
      as: 'http://download.wikimedia.org/mediawiki/1.15/mediawiki-1.15.1.tar.gz',
      xs: [
        'http://cache.example.org/XRX2PEFXOOEJFRVUCX6HMZMKS5TWG4K5',
        'dchub://example.org'
      ]
    })
    
    console.log(uri) // the magnet uri

    The returned magnet uri will be:

    magnet:?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
    

    You can also use convenience key names like name (dn), infoHash (xt), infoHashBuffer (xt), publicKey (xs), publicKeyBuffer (xs), announce (tr), and keywords (kt).

    license

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

    Install

    npm i magnet-uri

    DownloadsWeekly Downloads

    32,797

    Version

    6.2.0

    License

    MIT

    Unpacked Size

    11.9 kB

    Total Files

    4

    Last publish

    Collaborators

    • feross
    • mafintosh
    • flet
    • watson
    • diegorbaquero
    • hicom150
    • jhiesey
    • webtorrent-bot