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' ) ;
} ) ;
로컬 파일 또는 읽기 쉬운 스트림을 읽습니다. 읽기 쉬운 스트림을 반환합니다.
급류가 잘못 형식화되면 오류를 반환 할 수 있습니다. Dictonaries가 알파벳순으로 나열되어 있는지 확인하지 않습니다. Torrent Metainfo에 대한 자세한 내용은 Bittorrent 사양을 참조하십시오.
새로운 급류를 만듭니다. dir
급류의 루트 디렉토리입니다. files
배열은 여기에서 파일을 비교적 읽습니다. 파일을 생략하면 하위 디렉토리의 파일을 포함하여 모든 파일을 토런트에 dir
적으로 추가합니다. options
다음과 같습니다.
announceList
추가 알림 URL 배열 배열.comment
name
- 다중 파일 모드에서만 사용할 수 있습니다. 주어지지 않으면 디렉토리 이름으로 기본값을 표시합니다.pieceLength
- 조각을 분해하는 방법. 조각 길이는 2^n
이라고 말하는 정수 n
이어야합니다. 기본값은 256KB 또는 2^18입니다.private
- 개인 토런트 인 경우 적용하십시오.moreInfo
토런트의 info
사전에 들어갑니다. 토런트에 특정 추적기에서 고유 한 정보 해시를 갖도록하려면 유용합니다.maxFiles
조각 해싱 중에 최대 파일을 열 수 있습니다. 기본값은 250입니다. callback
가능한 Error
로 호출되고 해싱이 완료되면 Torrent
객체가 호출됩니다.
RAW BENCODED data
이벤트를 방출하는 하셔 객체를 반환 make
.
반환 된 판독 가능한 스트림을 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 . . . >
}
}
토런트의 정보 해시를 받으십시오.
이 급류에 대한 RAW BENCODED 데이터를 방출하는 ReadAbleStream을 만듭니다. 읽기 쉬운 스트림을 반환합니다.
스트림을 Torrent#createReadStream()
에서 쓰기 가능한 파일 스트림으로 파이프하는 바로 가기. 쓰기 가능한 스트림을 반환합니다.
해시는 dir
의 파일에 대한 급류를 점검합니다. 하셔 객체를 반환합니다. options
해시는 해싱 중에 maxFiles
열 수 있습니다. 기본값은 250
입니다. 하셔 객체를 반환합니다.
HASHER 객체는 make
로 토런트가 만들어지고 Torrent#hashCheck
호출 될 때 반환됩니다. ReadableStream에서 물려받습니다.
해시 확인을 일시 중지합니다.
해시 확인을 재개합니다.
일시 정지되거나 일시 중지되지 않으면 계속 해싱을합니다.
해싱을 완전히 중지합니다. 파일 설명자를 닫고 더 이상 이벤트를 방출하지 않습니다.
해시 될 파일을 검사하고 내용을 해시 할 준비가 완료되었습니다.
Buffer
- 데이터 해체가 make
Function에서 반환 될 때만 RAW Bencoded 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