rssalchemy/cmd/extractor/extractor.go

79 lines
2.0 KiB
Go

package main
import (
"encoding/json"
"github.com/egor3f/rssalchemy/internal/config"
"github.com/egor3f/rssalchemy/internal/extractors/pwextractor"
"github.com/egor3f/rssalchemy/internal/models"
"github.com/labstack/gommon/log"
"github.com/yassinebenaid/godump"
"io"
"os"
)
func main() {
log.SetLevel(log.DEBUG)
log.SetHeader(`${time_rfc3339_nano} ${level}`)
taskFile, err := os.Open("task.json")
if err != nil {
log.Panicf("open file: %v", err)
}
//goland:noinspection GoUnhandledErrorResult
defer taskFile.Close()
fileContents, err := io.ReadAll(taskFile)
if err != nil {
log.Panicf("read file: %v", err)
}
var task models.Task
if err := json.Unmarshal(fileContents, &task); err != nil {
log.Panicf("unmarshal task: %v", err)
}
cfg, err := config.Read()
if err != nil {
log.Panicf("read config: %v", err)
}
pwe, err := pwextractor.New(cfg)
if err != nil {
log.Panicf("create pw extractor: %v", err)
}
defer func() {
if err := pwe.Stop(); err != nil {
log.Errorf("stop pw extractor: %v", err)
}
}()
result, err := pwe.Extract(task)
if err != nil {
log.Errorf("extract: %v", err)
scrResult, err := pwe.Screenshot(task)
if err != nil {
log.Errorf("screenshot failed: %v", err)
}
err = os.WriteFile("screenshot.png", scrResult.Image, 0600)
if err != nil {
log.Errorf("screenshot save failed: %v", err)
}
return
}
dumper := godump.Dumper{Theme: godump.Theme{
String: godump.RGB{117, 54, 217},
Quotes: godump.RGB{143, 41, 0},
Bool: godump.RGB{6, 168, 199},
Number: godump.RGB{245, 77, 13},
Types: godump.RGB{255, 105, 56},
Address: godump.RGB{50, 162, 255},
PointerTag: godump.RGB{145, 145, 145},
Nil: godump.RGB{36, 198, 229},
Func: godump.RGB{95, 165, 35},
Fields: godump.RGB{66, 79, 61},
Chan: godump.RGB{60, 101, 179},
UnsafePointer: godump.RGB{166, 62, 75},
Braces: godump.RGB{70, 169, 169},
}}
_ = dumper.Println(result)
}