使用node.js閱讀,製作和哈希檢查Torrents!
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' ) ;
} ) ;
讀取本地文件或可讀流。返回可讀流。
如果洪流格式不正確,可以返回錯誤。不檢查dictonaries是否按字母順序列出。有關Torrent Metainfo的更多信息,請參閱Bittorrent規範。
做一個新的洪流。 dir
是洪流的根目錄。 files
數組將相對讀取文件。如果省略了文件,則隱式將所有dir
中的所有文件添加到洪流中,包括子目錄中的所有文件。 options
可以具有以下內容:
announceList
- 一系列額外的宣布URL陣列。comment
name
- 只能在多文件模式下使用。如果未給出,則默認為目錄名稱。pieceLength
- 如何分解碎片。必須是一個整數n
,說件長度為2^n
。默認值為256KB,或2^18。private
- 如果這是私人洪流,則設置為true。moreInfo
這些進入洪流的info
字典。如果您想使Torrent具有來自某個跟踪器的唯一信息,則有用。maxFiles
在片段哈希期間打開的最大文件。默認為250。 callback
帶有可能的Error
,並且在哈希完成時是Torrent
對象。
make
返回散發出原始的data
事件的哈希對象。
一個快捷方式, make
返回的可讀流泵送到可寫入的流流,該流指向文件output
。返回哈希對象。
read
make
功能都用洪流對象調用他們的回調。
包含洪流的元數據。例子:
{
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 . . . >
}
}
獲取洪流的信息哈希。
創建一個可讀取的式驅動器,為此洪流發出原始的Baccododed數據。返回可讀的流。
將流從Torrent#createReadStream()
到可寫的文件流的快捷方式。返回可寫的流。
哈希檢查dir
中的文件。返回哈希對象。 options
哈希可以在哈希期間打開maxFiles
。默認為250
。返回哈希對象。
當使用make
和Torrent#hashCheck
創建洪流時,將返回Hasher對象。它從readableStream繼承。
暫停哈希檢查。
簡歷檢查。
如果暫停或暫停,繼續進行散列。
完全停止哈希。關閉文件描述符,並且不會發出任何事件。
完成檢查的文件,並準備好開始哈希內容。
Buffer
- 數據僅當從make
函數返回Hasher時,發射原始的torrent數據。
number
- 百分比number
- 速度number
- AVGSPEED發出根據從文件中讀取的字節數量計算得出的進度。 speed
和avgSpeed
在字節中。
number
- 索引string
- 哈希string
- 文件number
- 位置number
- 長度將作品與哈希位置和來源一起發出時發出。
number
- 索引string
- 哈希number
- 百分比string
- 文件number
- 位置number
- 長度當作品與其index
,作品以及到目前為止的零件百分比匹配時,發出。
number
- 索引string
- 文件number
- 位置number
- 長度當一件不匹配時發出。
Error
- 錯誤錯誤哈希檢查。
哈希檢查完成。
npm install nt
測試用誓言編寫
npm test