Skip to content

Instantly share code, notes, and snippets.

@KentaGoto
Created May 30, 2018 00:48
Show Gist options
  • Save KentaGoto/8cfe452c50fe57fbff80178ebcd3c65c to your computer and use it in GitHub Desktop.
Save KentaGoto/8cfe452c50fe57fbff80178ebcd3c65c to your computer and use it in GitHub Desktop.
for Windows.
package main
import (
"bufio"
"fmt"
"os"
"os/exec"
"strings"
)
func wget(urls, log string) {
var urlsFile *os.File
logFilename := log
urlsFile, err := os.Open(urls)
if err != nil {
panic("Can't open the URL list file.")
}
scanner := bufio.NewScanner(urlsFile)
for scanner.Scan() {
url := scanner.Text()
// wgetする。log.datにログが残る。
cmd := exec.Command("cmd.exe", "/c", "wget -p -k -nH -np -E --append-output="+logFilename, url) // -r で再帰、-ndでディレクトリを作成しない
cmd.Stdout = os.Stdout
cmd.Stderr = os.Stderr
cmd.Run()
}
}
func main() {
var saveDir string
var urls string
var log = "log.dat"
var logFile *os.File
// wgetしてくるファイルの保存場所
fmt.Print("Save folder: ")
fmt.Scan(&saveDir)
os.Chdir(saveDir) // 保存場所に移動する
// URLリスト
fmt.Print("URL list: ")
fmt.Scan(&urls)
wget(urls, log)
logFile, err := os.Open(log)
if err != nil {
panic("Can't open the log.dat file.")
}
logScanner := bufio.NewScanner(logFile)
// ログにfailedがあったら出力
for logScanner.Scan() {
logText := logScanner.Text()
// failedが見つかったら-1以外になる
if strings.Index(logText, "failed") != -1 {
fmt.Printf("\x1b[31m%s\x1b[0m", "\nError:\n")
fmt.Println(logText)
}
}
fmt.Print("\nDone!\n")
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment