diff options
| -rw-r--r-- | crawler/scrape.go | 2 | ||||
| -rw-r--r-- | crawler/shop_spirituosenwolf.de.go | 68 |
2 files changed, 24 insertions, 46 deletions
diff --git a/crawler/scrape.go b/crawler/scrape.go index 9d0d0f2..053240f 100644 --- a/crawler/scrape.go +++ b/crawler/scrape.go @@ -81,6 +81,8 @@ func (app *App) ScrapeHTML(shop Shop) []Angebot { return app.ScrapeWhiskyzone(shop) case "Drankdozijn": return app.ScrapeDrankdozijn(shop) + case "Spirituosen-Wolf": + return app.ScrapeSpirituosenWolf(shop) default: shop.Warn("No Crawler") } diff --git a/crawler/shop_spirituosenwolf.de.go b/crawler/shop_spirituosenwolf.de.go index 3fc04b1..f4f8e70 100644 --- a/crawler/shop_spirituosenwolf.de.go +++ b/crawler/shop_spirituosenwolf.de.go @@ -78,7 +78,7 @@ func (app *App) ScrapeSpirituosenWolf(shop Shop) []Angebot { srcset := strings.Split(_srcset, ",") for _, image_url := range srcset { if strings.Contains(image_url, "@2x") { - offer.Image_url = image_url + offer.Image_url = strings.TrimSpace(strings.TrimSuffix(image_url, "2x")) break } } @@ -91,15 +91,15 @@ func (app *App) ScrapeSpirituosenWolf(shop Shop) []Angebot { // Abv offer.Abv, err = extract_abv(strings.TrimSpace(s.Text())) if err != nil { - log.Println("Wolf: Extracting Abv failed") + offer.Debug("Wolf: Extracting Abv failed") } }) doc.Find(".sw_frontend_listing_box_article_priceinfo_qty").Each(func(i int, s *goquery.Selection) { // Volume - offer.Volume, err = extract_volume(strings.TrimSpace(strings.TrimPrefix("Inhalt:", strings.TrimSpace(s.Text())))) + offer.Volume, err = extract_volume(strings.TrimSpace(strings.TrimPrefix(strings.TrimSpace(s.Text()), "Inhalt:"))) if err != nil { - log.Println("Wolf: Extracting volume failed") + offer.Debug("Wolf: Extracting volume failed") } }) @@ -107,7 +107,7 @@ func (app *App) ScrapeSpirituosenWolf(shop Shop) []Angebot { // Original_price offer.Original_price, err = convert_price(strings.TrimSpace(s.Text())) if err != nil { - log.Println("Wolf: Converting original_price failed") + offer.Debug("Wolf: Converting original_price failed") } }) @@ -115,15 +115,16 @@ func (app *App) ScrapeSpirituosenWolf(shop Shop) []Angebot { // Discounted_price offer.Discounted_price, err = convert_price(strings.TrimSpace(s.Text())) if err != nil { - log.Println("Wolf: Converting Discounted_price failed") + offer.Debug("Wolf: Converting Discounted_price failed") } }) doc.Find(".sw_frontend_listing_box_article_priceinfo_baseprice").Each(func(i int, s *goquery.Selection) { // Base_price + offer.Base_price, err = sanitize_base_price(strings.TrimSpace(s.Text())) if err != nil { - log.Println("Wolf: Sanitizing Base_price failed") + offer.Debug("Wolf: Sanitizing Base_price failed") } }) @@ -134,6 +135,10 @@ func (app *App) ScrapeSpirituosenWolf(shop Shop) []Angebot { offer.Spirit_type = WolfGetSpiritTypeFromUrl(offer.Url) } + if offer.Volume == 1 { + offer.Base_price = offer.Discounted_price + } + Offers = append(Offers, offer) }) @@ -142,11 +147,10 @@ func (app *App) ScrapeSpirituosenWolf(shop Shop) []Angebot { func WolfGetSpiritTypeFromUrl(url string) string { - url = strings.TrimPrefix("https://www.spirituosen-wolf.de/", url) + url = strings.TrimPrefix(url, "https://www.spirituosen-wolf.de/") subfolders := strings.Split(url, "/") for index, folder := range subfolders { - // match Gin, Whisky, R switch folder { case "whisk-e-y": return "Whisky" @@ -157,67 +161,39 @@ func WolfGetSpiritTypeFromUrl(url string) string { } return "Gin" - case "likoer": - return "Likör" - case "rum-cachaca", "rum-co": return "Rum" + case "wodka-vodka": + return "Wodka" + case "champagner-co": switch subfolders[1] { case "champagner": return "Champagner" - case "Cremant": - return "Cremant" default: return "Sekt" } - case "wodka-vodka": - return "Wodka" - - case "weine": - return "Wein" - case "grappa-korn-braende": switch subfolders[index+1] { case "grappa": return "Grappa" case "korn": - return "Korn" + return "Wodka" default: return "Verschiedenes" } - case "brandy-cognac-co": - switch subfolders[index+1] { - case "cognac": - return "Cognac" - case "brandy": - return "Brandy" - case "calvados": - return "Calvados" - case "armagnac": - return "Armagnac" - } - - case "cachaca": - return "Cachaca" - - case "Absinth": - return "Absinth" - - case "mezcal": - return "Mezcal" - - case "Tequila": - return "Tequila" - default: - return "Verschiedenes" + detected := detect_spirit_type(folder) + if "Verschiedenes" != detected { + return detected + } } } + return "Verschiedenes" } |
