torrent2magnet-js
v1.1.5
Published
[![npm Package](https://img.shields.io/npm/v/torrent2magnet-js.svg)](https://www.npmjs.org/package/torrent2magnet-js) [![License](https://img.shields.io/npm/l/torrent2magnet-js.svg)](https://github.com/tukideng/torrent2magnet-js/blob/master/LICENSE) [![do
Downloads
6
Readme
torrent2magnet-js
Takes a buffer of torrent file and returns it's xt, dn, magneturi and more details.
Install
Install via
npm install torrent2magnet-js
Demo
Usage
Use a torrent file buffer as input, and return an object with the following properties:
| Name | Description | Example | | ------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | success | Whether the result was parsed successfully | true/false | | infohash | Calculated over the contents of the info dictionary in bencode form | 9ECD4676FD0F0474151A4B74A5958F42639CEBDF | | magnet_uri | It consists of a set of parameters, the most commonly used parameter is xt, which is usually a URN formed by the content hash function value of a specific file | magnet:?xt=urn:btih:9ECD4676FD0F0474151A4B74A5958F42639CEBDF&dn=ubuntu-23.10.1-desktop-amd64.iso&xl=5173995520&tr=https://torrent.ubuntu.com/announce&tr=https://ipv6.torrent.ubuntu.com/announce | | dn | The name or folder name of the resource | ubuntu-23.10.1-desktop-amd64.iso | | xl | The size of the file in bytes | 5173995520 | | main_tracker | main tracker. The first element of tracker_list | 'https://torrent.ubuntu.com/announce' | | tracker_list | A list of tracker url | ['https://torrent.ubuntu.com/announce', 'https://ipv6.torrent.ubuntu.com/announce'] | | is_private | If the torrent file is private | true/false | | files | If the torrent file contains multiple files, this parameter returns the path and file size information of all files. | [{path: 'my-torrent', length: 124945}] |
Use in node
import torrent2magnet from "torrent2magnet-js";
import fs from "fs";
const torrent_file = fs.readFileSync("./ubuntu.torrent");
const torrent_file_buffer = new Uint8Array(torrent_file); // Buffer.from(torrent_file);
const { success, infohash, magnet_uri, dn, xl, main_tracker, tracker_list, is_private, files } = torrent2magnet(torrent_file_buffer);
// success is a boolean value, if success is true, then the following values are valid
if (success) {
//...
}
Use in Angular
<input type="file" accept=".torrent" (change)="uploadTorrent($event)" />
import torrent2magnet from "torrent2magnet-js";
uploadTorrent(event: any) {
const file = event.target.files[0];
const reader = new FileReader();
// bencode.decode need ArrayBuffer as input, so we need to use readAsArrayBuffer
reader.readAsArrayBuffer(file);
reader.onload = (file: any) => {
const buffer_content = new Uint8Array(file.target.result);
const { success, infohash, magnet_uri, dn, xl, main_tracker, tracker_list, is_private, files } = torrent2magnet(buffer_content);
if (success) {
//...
}
};
};
License
MIT