¡Leer, hacer y verificar los torrentes con 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' ) ;
} ) ;
Lee un archivo local o una transmisión legible. Devuelve la transmisión legible.
Se puede devolver un error si el torrente está formateado incorrectamente. No verifica si los dictonarios se enumeran alfabéticamente. Consulte la especificación BitTorrent para obtener más información sobre Torrent Metainfo.
Hace un nuevo torrente. dir
es directorio raíz del torrente. La matriz files
leerá relativamente archivos desde allí. Si se omite los archivos, agrega implícitamente todos los archivos en dir
al torrente, incluidos los de los subdirectorios. options
pueden tener lo siguiente:
announceList
: una variedad de matrices de URL de anuncio adicionales.comment
name
: solo se puede usar en modo de archivo múltiple. Si no se da, el valor predeterminado es el nombre del directorio.pieceLength
: cómo romper las piezas. Debe ser un entero n
que dice que la longitud de la pieza será 2^n
. El valor predeterminado es 256 kb, o 2^18.private
- Establezca verdadero si este es un torrente privado.moreInfo
: estos entran en el diccionario de info
del torrente. Útil si desea hacer que un torrente tenga un hash de información único de cierto rastreador.maxFiles
: archivos máximos para abrir durante el hashing de piezas. El valor predeterminado a 250. callback
se llama con un posible Error
y un objeto Torrent
cuando se termina con hash.
make
las devoluciones de un objeto de Hasher que emite eventos data
en bruto.
Un atajo que bombea la transmisión legible devuelta de make
en una secuencia de escritura que apunta a la output
del archivo. Devuelve un objeto Hasher.
Las funciones read
y make
llaman a su devolución de llamada con un objeto Torrent.
Contiene metadatos del torrente. Ejemplo:
{
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 . . . >
}
}
Obtenga el hash de información de un torrent.
Crea una transmisión readable que emite datos de benicodos sin procesar para este torrente. Devuelve la transmisión legible.
Atajo que tuve la transmisión de Torrent#createReadStream()
a una transmisión de archivo de escritura. Devuelve la corriente de escritura.
Hash verifica el torrent contra los archivos en dir
. Devuelve un objeto Hasher. options
hash puede tener maxFiles
para abrir durante el hashing. El valor predeterminado a 250
. Devuelve un objeto Hasher.
Se devuelve un objeto de Hasher cuando se crea un torrente con make
y cuando se llama Torrent#hashCheck
. Hereda de readableStream.
PAUSA CRACTIVO
Reanude la verificación de hash.
Continúa el hashing si se detiene o se detiene si no.
Deja de hashing por completo. Cierra los descriptores de archivos y no emite más eventos.
Terminó de examinar los archivos para que estuvieran hash y listos para comenzar a hacer su contenido.
Buffer
- Datos Emite datos de torrent bencoded en bruto solo cuando Hasher se devuelve de la función make
.
number
- Porcentajenumber
- Velocidadnumber
- AVGSpeed Emite el progreso calculado por la cantidad de bytes leídos de los archivos. speed
y avgSpeed
están en bytes.
number
- índicestring
- hashstring
- archivonumber
- Posiciónnumber
- LongitudEmitido cuando una pieza se hashan junto con la posición y la fuente hash.
number
- índicestring
- hashnumber
- Porcentaje de Matchedstring
- archivonumber
- Posiciónnumber
- Longitud Emitido cuando una pieza coincide con su index
, la pieza y el porcentaje de piezas coincidentes hasta ahora.
number
- índicestring
- archivonumber
- Posiciónnumber
- LongitudEmitido cuando una pieza no coincide.
Error
- ERRVerificación de hash de error.
La comprobación de hash está terminada.
npm install nt
Las pruebas se escriben con votos
npm test