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