Initial Commit
This commit is contained in:
commit
599133ab25
3 changed files with 94 additions and 0 deletions
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
|
@ -0,0 +1 @@
|
||||||
|
output/
|
5
README.md
Normal file
5
README.md
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
### URL -> IMG -> PDF
|
||||||
|
Get images from URL(s) and convert it/them to Pdf file
|
||||||
|
|
||||||
|
### TODO
|
||||||
|
- [ ] use pdfcpu to convert all images to pdf (workaround: use pdfArrenger)
|
88
url-img-pdf.go
Normal file
88
url-img-pdf.go
Normal file
|
@ -0,0 +1,88 @@
|
||||||
|
package main
|
||||||
|
|
||||||
|
// Download images from web URLs and convert them to a pdf file with one click
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"io"
|
||||||
|
"log"
|
||||||
|
"net/http"
|
||||||
|
"os"
|
||||||
|
"strconv"
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
|
||||||
|
fmt.Println("SCRIPT SUCCESFULLY STARTED")
|
||||||
|
flag := 0
|
||||||
|
fmt.Println("Is files ready? (1/0) (to just convert images to pdf and skip download section press 1)")
|
||||||
|
fmt.Scanln(&flag)
|
||||||
|
|
||||||
|
var name string
|
||||||
|
if flag == 0 {
|
||||||
|
|
||||||
|
var baseURL, fileFormat string
|
||||||
|
var startNumber, endNumber int
|
||||||
|
fmt.Println("Folder Name: (enter for default) ")
|
||||||
|
fmt.Scanln(&name)
|
||||||
|
|
||||||
|
fmt.Println("Base URL: ")
|
||||||
|
fmt.Scanln(&baseURL)
|
||||||
|
|
||||||
|
fmt.Println("Start Number: ")
|
||||||
|
fmt.Scanln(&startNumber)
|
||||||
|
|
||||||
|
fmt.Println("End Number: ")
|
||||||
|
fmt.Scanln(&endNumber)
|
||||||
|
|
||||||
|
fmt.Println("File Format: (enter for default .jpg format) ")
|
||||||
|
fmt.Scanln(&fileFormat)
|
||||||
|
|
||||||
|
if name == "" {
|
||||||
|
name = "url-img-pdf_FOLDER"
|
||||||
|
}
|
||||||
|
if fileFormat == "" {
|
||||||
|
fileFormat = "jpg"
|
||||||
|
}
|
||||||
|
|
||||||
|
name = "/output/" + name
|
||||||
|
|
||||||
|
if err := os.Mkdir(name, os.ModePerm); err != nil {
|
||||||
|
log.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
for i := startNumber; i <= endNumber; i++ {
|
||||||
|
err := DownloadFile(name+"/img"+strconv.Itoa(i)+"."+fileFormat, baseURL+strconv.Itoa(i))
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
fmt.Println("Downloaded: " + baseURL + strconv.Itoa(i))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fmt.Println("installed all images, you can use a tool like pdfarranger for converting (too lazy to implement)")
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// DownloadFile will download a url to a local file. It's efficient because it will
|
||||||
|
// write as it downloads and not load the whole file into memory. (NEEDS TEST!)
|
||||||
|
func DownloadFile(filepath string, url string) error {
|
||||||
|
|
||||||
|
// Get the data
|
||||||
|
resp, err := http.Get(url)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
defer resp.Body.Close()
|
||||||
|
|
||||||
|
// Create the file
|
||||||
|
out, err := os.Create(filepath)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
defer out.Close()
|
||||||
|
|
||||||
|
// Write the body to file
|
||||||
|
_, err = io.Copy(out, resp.Body)
|
||||||
|
return err
|
||||||
|
}
|
Loading…
Reference in a new issue