diff --git a/Grabazine.go b/Grabazine.go index baad2c6..6fbf4cb 100644 --- a/Grabazine.go +++ b/Grabazine.go @@ -13,6 +13,7 @@ import ( "regexp" "strconv" "strings" + "time" ) type Response struct { @@ -44,7 +45,14 @@ func main() { fmt.Println("Found " + strconv.Itoa(len(issues.Data)) + " issues in library.") fmt.Println("Loading HTML template") + defaultTemplate := "" template, _ := ioutil.ReadFile("template.html") + + if template == nil || len(template) == 0 { + fmt.Println("template.html not found, or empty. using built in template. Consider changing this if your files are cropped.") + template = []byte(defaultTemplate) + } + mydir, err := os.Getwd() if err != nil { fmt.Println(err) @@ -79,7 +87,7 @@ func main() { //convert to pdf - cmd := exec.Command(*chromePtr, "--headless", "--disable-gpu", "--print-to-pdf="+pathString+".pdf", pathString+".html") + cmd := exec.Command(*chromePtr, "--headless", "--disable-gpu", "--print-to-pdf="+pathString+".pdf", "--no-margins", pathString+".html") fmt.Println(cmd.Args) err := cmd.Run() @@ -91,7 +99,18 @@ func main() { _ = os.Remove(pathString + ".svg") //remove last page - _ = api.RemovePagesFile(pathString+".pdf", "", []string{"2"}, nil) + err = retry(5, 2*time.Second, func() (err error) { + err = api.RemovePagesFile(pathString+".pdf", "", []string{"2-"}, nil) + if err != nil { + fmt.Printf("Removing extra pages failed with %s\n.", err) + + } else { + fmt.Printf("Removed pages.") + } + + return + }) + filenames = append(filenames, pathString+".pdf") } @@ -227,3 +246,22 @@ type LibraryData struct { type Publication struct { Name string `json:"name"` } + +//https://stackoverflow.com/questions/47606761/repeat-code-if-an-error-occured +func retry(attempts int, sleep time.Duration, f func() error) (err error) { + for i := 0; ; i++ { + err = f() + if err == nil { + return + } + + if i >= (attempts - 1) { + break + } + + time.Sleep(sleep) + + fmt.Println("retrying after error:", err) + } + return fmt.Errorf("after %d attempts, last error: %s", attempts, err) +} diff --git a/built/Zinigo_Windows_x64.exe b/built/Zinigo_Windows_x64.exe index c3495a3..8b5d5bf 100644 Binary files a/built/Zinigo_Windows_x64.exe and b/built/Zinigo_Windows_x64.exe differ