package main import ( "encoding/json" "fmt" "log" "time" _ "database/sql" _ "github.com/go-sql-driver/mysql" //_ "github.com/mattn/go-sqlite3" "github.com/jmoiron/sqlx" ) type App struct { Offers []Angebot Shops []Shop Config *Config DB *sqlx.DB Now int64 Debug bool } type Angebot struct { Id int Name string Abv float32 Volume float32 Shop int Url string Original_price int Discounted_price int Base_price int Image_url string Spirit_type string Valid_until int } type Shop struct { Id int Name string Url string Logo_url string Shipping_costs int Free_shipping string } func main() { var err error app := App{Config: &Config{}} app.Config.parseConfig("") app.Now = time.Now().Unix() if "sqlite3" == app.Config.DBDriver { //app.DB, err = sqlx.Connect(app.Config.DBDriver, app.Config.DBPath) app.DB, err = sqlx.Connect(app.Config.DBDriver, app.Config.DBPath) } else { if app.Config.Debug { log.Println(app.Config.DBUser + ":" + app.Config.DBPassword + "@tcp(" + app.Config.DBHost + ":" + app.Config.DBPort + ")/" + app.Config.DBDBName + app.Config.DBOptions) } app.DB, err = sqlx.Connect(app.Config.DBDriver, app.Config.DBUser+":"+app.Config.DBPassword+"@tcp("+app.Config.DBHost+":"+app.Config.DBPort+")/"+app.Config.DBDBName+app.Config.DBOptions) } defer app.DB.Close() if err != nil { log.Fatal(err) } err = app.createTables() if err != nil { log.Fatal(err) } err = app.insertShops() if err != nil { log.Fatal(err) } shops, err := app.getShops() if err != nil { log.Fatal(err) } app.ScrapeHTML(shops) } func printName(W []Angebot, name string) { return fmt.Println("-------------------") fmt.Println("Sonderangebote von " + name) fmt.Println("-------------------") output, err := json.MarshalIndent(W, "", " ") if err != nil { log.Fatal(err) } fmt.Println(string(output)) }