-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathmain.go
103 lines (91 loc) · 2.41 KB
/
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
package main
import (
"fmt"
"strings"
"strconv"
"flag"
"os"
"./configfile"
)
func loadlist(m map[int]string) {
c := make(chan string);
tf := make(chan map[string]string);
ts := 5
p, err := configfile.ReadConfigFile("config.cfg");
if err != nil {
fmt.Printf("can't open file; err=%s\n", err.String())
os.Exit(1)
}
if tsc, err := p.GetString("GenSetting","OThread"); err == nil {
fmt.Printf("Thread: %s\n",tsc)
ts, err = strconv.Atoi(tsc)
}
jobsplit:=len(m)/ts;
jobmod:=len(m)%ts;
for i := 0; i < ts ; i++ {
s := &URLParse{} //{ ed2kurldb: NewURLStore("ed2kurl.gmap") }
s.id=i;
if jobmod>0 {
s.size=jobsplit+1
jobmod--;
}else{
s.size=jobsplit
}
go s.urlparser(c,tf);
}
for _, url := range m {
c <- url;
}
ed2kurldb:=NewURLStore("ed2kurl.gmap")
lock:=0
for i := 0; i < ts ; i++ {
for k, v := range <-tf {
bull:=""
if err:=ed2kurldb.Get(&k,&bull);err!=nil {
printamule(v,p)
ed2kurldb.Put(&v, &k)
lock=1
}
}
}
if lock==1 { ed2kurldb.save(); }
//ed2kurldb.dirty <- true }
}
func printamule(el string,p *configfile.ConfigFile){
ars,_:=p.GetString("amule","ARS")
arp,_:=p.GetString("amule","ARP")
arps,_:=p.GetString("amule","ARPS")
fmt.Printf("amulecmd --host=%s -p %s -P %s -c \"add %s\"\n",ars,arp,arps,el)
}
func help(){
fmt.Printf("%s\n","ed2kcrawler v0.0.2pre");
fmt.Printf("%s\n","Usage: ed2kcrawler [Option]... [URL]...");
fmt.Printf("%s\n","Commands:");
flag.PrintDefaults();
}
func main() {
var Loadpagelist = flag.Bool("l", false, "\tLoad the ed2klink page url list")
flag.Parse();
if *Loadpagelist {
listfilename:=flag.Arg(0);
m,err:=loadvv(listfilename);
if err==nil {
loadlist(m);
} else {
fmt.Printf("File %s not exist.\n",listfilename);
}
}else{
if flag.NArg() >0 {
m := make(map[int]string);
for p,i := 0,0; i < flag.NArg(); i++ {
if strings.HasPrefix(flag.Arg(i),"http://") {
m[p]=flag.Arg(i);
p++;
}
}
loadlist(m);
}else{
help();
}
}
}