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 Shop string Url string Original_price int Discounted_price int Image_url string Spirit_type string Valid_until int } type Shop struct { 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) } W := ScrapeHTML() err = app.save_offer(W) if err != nil { log.Fatal(err) } err = app.remove_expired(W) if err != nil { log.Fatal(err) } } 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)) } func ScrapeHTML() []Angebot { W := ScrapeBottleWord() W = append(W, ScrapeMCWhisky()...) W = append(W, ScrapeRumundCo()...) W = append(W, ScrapeWhic()...) W = append(W, ScrapeWhiskyde()...) W = append(W, ScrapeWhiskysitenl()...) W = append(W, ScrapeWhiskyworld()...) W = append(W, ScrapeWhiskyzone()...) return W }