Verified Commit e0a8708b authored by Marcel's avatar Marcel

Initial Commit

parents
result/
tmp/
log
luftdatenImage*
.idea
\ No newline at end of file
# Luftdaten Screenshot Tool
## Instalation
1. Installiere golang
2. Clone diese repo mit `go get -u -v gitlab.com/iotssl/luftdaten_screenshot_tool`
3. Installiere die nötigen Abhängigkeiten: `Chrome`
4. Folge dem Abschnitt Benutzung
## Benutzung
Die Benutzung ist simpel. Das Programm (bianry heisst lufdatenImage) öffnet chrome und macht einen screenshot in den ordner result mit aufsteigender Nummerierung bei jedem Start. Das ganze am besten in einen Cronjob machen und am ende dann zu ein gif umwandeln.
## GIF mit ffmpeg generieren
Der folgende Command generiert ein gif mit einer fps von 10
```
ffmpeg -f image2 -framerate 10 -i result/map%d.png out.gif
```
\ No newline at end of file
package main
import (
"context"
"io/ioutil"
"log"
"time"
"github.com/chromedp/cdproto/cdp"
"github.com/chromedp/chromedp"
"github.com/chromedp/chromedp/runner"
"os"
"strconv"
)
func main() {
var err error
err = os.Remove("log")
f, err := os.OpenFile("log", os.O_RDWR|os.O_CREATE|os.O_APPEND, 0666)
if err != nil {
log.Fatalf("error opening file: %v", err)
}
defer f.Close()
log.SetOutput(f)
// create context
ctxt, cancel := context.WithCancel(context.Background())
defer cancel()
// create chrome instance
// Windows fix ;)
userDataDir := runner.UserDataDir("./tmp")
size := runner.WindowSize(1920, 1080)
c, err := chromedp.New(ctxt, chromedp.WithLog(log.Printf), chromedp.WithRunnerOptions(userDataDir, size))
if err != nil {
log.Fatal(err)
}
// run task list
err = c.Run(ctxt, screenshot(`http://deutschland.maps.luftdaten.info/`))
if err != nil {
log.Fatal(err)
}
// shutdown chrome
err = c.Shutdown(ctxt)
if err != nil {
log.Fatal(err)
}
// wait for chrome to finish
err = c.Wait()
if err != nil {
log.Fatal(err)
}
}
func screenshot(urlstr string) chromedp.Tasks {
var buf []byte
return chromedp.Tasks{
chromedp.Navigate(urlstr),
chromedp.Sleep(2 * time.Second),
chromedp.WaitVisible(`.map`, chromedp.ByQuery),
chromedp.Screenshot(`.map`, &buf, chromedp.ByQuery),
chromedp.ActionFunc(func(context.Context, cdp.Executor) error {
folderPath := "./result/"
if _, err := os.Stat(folderPath); os.IsNotExist(err) {
os.Mkdir(folderPath, os.ModePerm)
}
files, _ := ioutil.ReadDir(folderPath)
count := len(files) + 1
return ioutil.WriteFile(folderPath+"map"+strconv.Itoa(count)+".png", buf, 0644)
}),
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment