Lesen, Machen und Hash -Torrents mit Node.js!
const nt = require ( 'nt' ) ;
nt . read ( 'path/to/file.torrent' , ( err , torrent ) => {
if ( err ) throw err ;
console . log ( 'Info hash:' , torrent . infoHash ( ) ) ;
} ) ;
let rs = nt . make ( 'http://myannounce.net/url' , __dirname + '/files' ) ;
rs . pipe ( fs . createWriteStream ( 'mytorrent.torrent' ) ) ;
// callback style
nt . makeWrite ( 'outputfile' , 'http://announce.me' , __dirname + '/files' ,
[ 'somefile.ext' , 'another.one' , 'inside/afolder.mkv' , 'afolder' ] ,
( err , torrent ) => {
if ( err ) throw err ;
console . log ( 'Finished writing torrent!' ) ;
} ) ;
let hasher = torrent . hashCheck ( file ) ;
let p ;
hasher . on ( 'match' , ( i , hash , percent ) => {
p = percent ;
} ) ;
hasher . on ( 'end' , ( ) => {
console . log ( 'Hash Check:' , p + '%' , 'matched' ) ;
} ) ;
Liest eine lokale Datei oder einen lesbaren Stream. Gibt einen lesbaren Stream zurück.
Ein Fehler kann zurückgegeben werden, wenn der Torrent falsch formatiert ist. Überprüft nicht, ob die Dictonaries alphabetisch aufgeführt sind. Weitere Informationen zu Torrent Metainfo finden Sie in der BitTorrent -Spezifikation.
Macht einen neuen Strom. dir
ist das Wurzelverzeichnis des Stroms. Das files
-Array wird von dort relativ Dateien lesen. Wenn Dateien weggelassen werden, fügt sie implizit alle Dateien in dir
zum Torrent hinzu, einschließlich derer in Unterverzeichnissen. options
können Folgendes haben:
announceList
- eine Reihe von Arrays zusätzlicher Ankündigungs -URLs.comment
name
- kann nur im Multi -Datei -Modus verwendet werden. Wenn nicht gegeben, standardmäßig zum Namen des Verzeichnisses.pieceLength
- wie man die Stücke zerfällt. Muss eine ganze n
sein, die sagt, dass die Stücklänge 2^n
sein wird. Der Standardwert beträgt 256 KB oder 2^18.private
- setzen Sie, wenn dies ein privater Strom ist.moreInfo
- Diese gehen in das info
-Wörterbuch des Torrents. Nützlich, wenn Sie einen Torrent einen einzigartigen Info -Hash von einem bestimmten Tracker haben möchten.maxFiles
- Max -Dateien zum Öffnen während des Piece Hashing. Standardeinstellung auf 250. callback
wird mit einem möglichen Error
aufgerufen, und ein Torrent
-Objekt, wenn Hashing fertig ist.
make
zu einem Hasher -Objekt, das rohe Benencoded data
abgibt.
Eine Verknüpfung, die den zurückgegebenen lesbaren Stream von make
in einen beschreibbaren Stream pumpt, der auf die output
verweist. Gibt ein Hasher -Objekt zurück.
Die read
und Funktionen make
ihren Rückruf mit einem Torrent -Objekt.
Enthält Metadaten des Stroms. Beispiel:
{
announce : 'udp://tracker.publicbt.com:80' ,
'announce-list' : [
[ 'udp://tracker.publicbt.com:80' ] ,
[ 'udp://tracker.ccc.de:80' ] ,
[ 'udp://tracker.openbittorrent.com:80' ] ,
[ 'http://tracker.thepiratebay.org/announce' ]
] ,
comment : 'Torrent downloaded from http://thepiratebay.org' ,
'creation date' : 1303979726 ,
info : { length : 718583808 ,
name : 'ubuntu-11.04-desktop-i386.iso' ,
'piece length' : 524288 ,
pieces : < Buffer e5 7 a . . . >
}
}
Holen Sie sich einen Torrent -Info -Hash.
Erstellt einen readableStrem, der für diesen Strom rohe Benencoded -Daten abgibt. Gibt den lesbaren Stream zurück.
Verknüpfung, die den Stream von Torrent#createReadStream()
zu einem beschreibbaren Dateistrom verleiht. Gibt den beschreibbaren Stream zurück.
Hash überprüft Torrent gegen Dateien in dir
. Gibt ein Hasher -Objekt zurück. options
Hash können maxFiles
während des Hashings öffnen lassen. Standardeinstellung auf 250
. Gibt ein Hasher -Objekt zurück.
Ein Hasher -Objekt wird zurückgegeben, wenn ein Torrent mit make
erstellt wird und wenn Torrent#hashCheck
aufgerufen wird. Es erbt von readablestream.
Pause Hash -Überprüfung.
Fördert die Hash -Überprüfung.
Fährt weiterhin Hashing, wenn sie innehalten oder pausiert, wenn nicht.
Stoppt Hashing vollständig. Schließt Dateideskriptoren und emittiert keine weiteren Ereignisse.
Abschluss der Prüfung von Dateien, die gehasht werden und bereit sind, ihren Inhalt zu starten.
Buffer
- Daten Emittiert raw benencodierte Torrent -Daten nur dann, wenn Hasher aus der make
-Funktion zurückgegeben wird.
number
- Prozentnumber
- Geschwindigkeitnumber
- Avgspeed Emittiert den Fortschritt, der durch die Anzahl der aus den Dateien gelesenen Bytes berechnet wird. speed
und avgSpeed
sind in Bytes.
number
- Indexstring
- Hashstring
- Dateinumber
- Positionnumber
- LängeEmittiert, wenn ein Stück zusammen mit Hash -Position und Quelle gehasht wird.
number
- Indexstring
- Hashnumber
- prozentualmatchedstring
- Dateinumber
- Positionnumber
- Länge Emission, wenn ein Stück mit seinem index
, dem Stück und dem Prozentsatz der bisher übereinstimmenden Teile übereinstimmt.
number
- Indexstring
- Dateinumber
- Positionnumber
- LängeEmittiert, wenn ein Stück nicht übereinstimmt.
Error
- ähmFehler -Hash -Überprüfung.
Hash -Checking ist abgeschlossen.
npm install nt
Tests werden mit Gelübden geschrieben
npm test