-
Notifications
You must be signed in to change notification settings - Fork 15
/
Copy pathmain.go
44 lines (38 loc) · 935 Bytes
/
main.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
package main
import (
"fmt"
"github.com/bttown/dht"
"github.com/bttown/metadata"
"log"
)
var (
collectorQueriesBufferSize = 5000
collectorMaxPendingQueries = 2000
)
var (
// DHT 节点
node = dht.NewNode(dht.OptionAddress("0.0.0.0:8662"))
// 种子信息获取器
collector = metadata.NewCollector(metadata.Options{
QueriesBufferSize: collectorQueriesBufferSize,
MaxPendingQueries: collectorMaxPendingQueries,
})
)
func main() {
collector.OnFinish(func(req metadata.Request, torrent metadata.Torrent) {
magnetLink := fmt.Sprintf("magnet:?xt=urn:btih:%s", req.HashInfo)
log.Println("[Metadata]", magnetLink, torrent.Info.Name)
})
defer collector.Close()
node.PeerHandler = func(ip string, port int, hashInfo, peerID string) {
if err := collector.Get(&metadata.Request{
IP: ip,
Port: port,
HashInfo: hashInfo,
PeerID: peerID,
}); err != nil {
panic(err)
}
}
node.Serve()
}