most preferred, with fallback to Europe continent, leaving location-less
next, randomising remaining:
- fn=$(meta4ra-list -meta4 .meta4 | head -1)
- size=$(meta4ra-list -meta4 .meta4 -size $fn)
- meta4ra-list -meta4 .meta4 $fn |
+ fn=$(meta4ra-list .meta4 | head -1)
+ size=$(meta4ra-list -size .meta4 $fn)
+ meta4ra-list .meta4 $fn |
meta4ra-url-sort ru c:eu "" rand |
while read url ; do
meta4ra-dl -size $size -progress "$url" |
- meta4ra-check -meta4 .meta4 -pipe $fn >$fn || {
+ meta4ra-check -pipe .meta4 $fn >$fn || {
rm $fn
continue
}
allHashes := flag.Bool("all-hashes", false, "Check all hashes, not the first common one")
hashes := flag.String("hashes", meta4ra.HashesDefault,
"hash-name:commandline[,...]")
- metaPath := flag.String("meta4", "file.meta4", "Metalink file")
flag.Usage = func() {
fmt.Fprintf(flag.CommandLine.Output(),
- "Usage: %s [options] [FILE ...]\n", os.Args[0])
+ "Usage: %s [options] FILE.meta4 [FILE ...]\n", os.Args[0])
flag.PrintDefaults()
fmt.Fprint(flag.CommandLine.Output(), `
If no FILEs are specified, then all <file>s from metalink are searched and
return
}
+ if flag.NArg() < 1 {
+ flag.Usage()
+ os.Exit(1)
+ }
var meta meta4ra.Metalink
{
- data, err := os.ReadFile(*metaPath)
+ data, err := os.ReadFile(flag.Arg(0))
if err != nil {
log.Fatal(err)
}
}
toCheck := make(map[string]string)
- for _, fn := range flag.Args() {
+ for _, fn := range flag.Args()[1:] {
toCheck[path.Base(fn)] = fn
}
if *pipe && len(toCheck) != 1 {
)
func runList() {
- metaPath := flag.String("meta4", "file.meta4", "Metalink file")
doSize := flag.Bool("size", false, "Print file's size")
doSig := flag.Bool("sig", false, "Extract signature files")
flag.Usage = func() {
fmt.Fprintf(flag.CommandLine.Output(),
- "Usage: %s [options] [FILE]\n", os.Args[0])
+ "Usage: %s [options] FILE.meta4 [FILE]\n", os.Args[0])
flag.PrintDefaults()
fmt.Fprint(flag.CommandLine.Output(), `
If FILE is not specified, then list all files of .meta4.
return
}
+ if flag.NArg() < 1 {
+ flag.Usage()
+ os.Exit(1)
+ }
var meta meta4ra.Metalink
{
- data, err := os.ReadFile(*metaPath)
+ data, err := os.ReadFile(flag.Arg(0))
if err != nil {
log.Fatal(err)
}
bad := false
for _, f := range meta.Files {
- if flag.NArg() == 0 {
+ if flag.NArg() == 1 {
for _, sig := range f.Signature {
if !*doSig {
continue
}
fmt.Println(f.Name)
} else {
- if f.Name != flag.Arg(0) {
+ if f.Name != flag.Arg(1) {
continue
}
if *doSize {
break
}
for _, u := range f.URLs {
- fmt.Printf("%d|%s|%s\n", u.Priority, u.Location, u.URL)
+ fmt.Println(u.String())
}
break
}