diff options
| author | Maximilian Möhring | 2021-01-12 08:16:59 +0100 |
|---|---|---|
| committer | Maximilian Möhring | 2021-01-12 08:16:59 +0100 |
| commit | c98686c9360b668ab5fa12b4ed65191971834642 (patch) | |
| tree | ba2edd6e09df6d5fa1724d3ba9281d8db4520803 | |
| parent | 2c038e851a23141f5cae470d3f07f4de5d04eed1 (diff) | |
| download | alkobote-c98686c9360b668ab5fa12b4ed65191971834642.tar.gz | |
Fix detecting spirit types.
| -rw-r--r-- | crawler/utility.go | 79 |
1 files changed, 51 insertions, 28 deletions
diff --git a/crawler/utility.go b/crawler/utility.go index 3c8a6a6..57f0e7b 100644 --- a/crawler/utility.go +++ b/crawler/utility.go @@ -20,168 +20,191 @@ func stringInSlice(a string, list []string) bool { } func detect_spirit_type(name string) string { - matched, err := regexp.MatchString(`(^|\s)Gin(\s|$)`, name) + name = strings.ToLower(name) + + matched, err := regexp.MatchString(`(^|\s)gin(\s|$)`, name) if err != nil { Fatal(err, "Gin regex failed") } if matched { return "Gin" } - matched, err = regexp.MatchString(`(^|\s)Rh?um(\s|$)`, name) + matched, err = regexp.MatchString(`(^|\s)rh?um(\s|$)`, name) if err != nil { Fatal(err, "Rum regex failed") } if matched { return "Rum" } - matched, err = regexp.MatchString(`(^|\s)[VW]odka(\s|$)`, name) + matched, err = regexp.MatchString(`(^|\s)cachaca(\s|$)`, name) + if err != nil { + Fatal(err, "Cachaca regex failed") + } + if matched { + return "Cachaca" + } + matched, err = regexp.MatchString(`(^|\s)([vw]odka|korn)(\s|$)`, name) if err != nil { Fatal(err, "Wodka regex failed") } if matched { return "Wodka" } - matched, err = regexp.MatchString(`(^|\s)Whiske?y(\s|$)`, name) + matched, err = regexp.MatchString(`(^|\s)whiske?y(\s|$)`, name) if err != nil { Fatal(err, "Whisky regex failed") } if matched { return "Whisky" } - matched, err = regexp.MatchString(`(^|\s)Wein(\s|$)`, name) + matched, err = regexp.MatchString(`(^|\s)weine?(\s|$)`, name) if err != nil { Fatal(err, "Wein regex failed") } if matched { - return "Wein" + if !strings.Contains(name, "cask") { + return "Wein" + } } - matched, err = regexp.MatchString(`(^|\s)(Champagner)|(Champagne)(\s|$)`, name) + matched, err = regexp.MatchString(`(^|\s)champagner?(\s|$)`, name) if err != nil { Fatal(err, "Champagner regex failed") } if matched { return "Champagner" } - matched, err = regexp.MatchString(`(^|\s)Armagnac(\s|$)`, name) + matched, err = regexp.MatchString(`(^|\s)(sekt|cremant|prosecco)(\s|$)`, name) + if err != nil { + Fatal(err, "Sekt|Cremant regex failed") + } + if matched { + return "Sekt" + } + matched, err = regexp.MatchString(`(^|\s)armagnac(\s|$)`, name) if err != nil { Fatal(err, "Armagnac regex failed") } if matched { return "Armagnac" } - matched, err = regexp.MatchString(`(^|\s)Cognac(\s|$)`, name) + matched, err = regexp.MatchString(`(^|\s)cognac(\s|$)`, name) if err != nil { Fatal(err, "Cognac regex failed") } if matched { return "Cognac" } - matched, err = regexp.MatchString(`(^|\s)(Brandy)|(Weinbrand)(\s|$)`, name) + matched, err = regexp.MatchString(`(^|\s)(brandy|weinbrand)(\s|$)`, name) if err != nil { Fatal(err, "Brandy regex failed") } if matched { return "Brandy" } - matched, err = regexp.MatchString(`(^|\s)Calvados(\s|$)`, name) + matched, err = regexp.MatchString(`(^|\s)calvados(\s|$)`, name) if err != nil { Fatal(err, "Calvados regex failed") } if matched { return "Calvados" } - matched, err = regexp.MatchString(`(^|\s)Grappa(\s|$)`, name) + matched, err = regexp.MatchString(`(^|\s)grappa(\s|$)`, name) if err != nil { Fatal(err, "Grappa regex failed") } if matched { return "Grappa" } - matched, err = regexp.MatchString(`(^|\s)(\wlikör)|(Likör)(\s|$)`, name) + matched, err = regexp.MatchString(`(^|\s)(\wlikör|likör|likoer|liqueur)(\s|$)`, name) + if err != nil { Fatal(err, "Likör regex failed") } if matched { return "Likör" } - matched, err = regexp.MatchString(`(^|\s)(Vermouth)|(Wermut)(\s|$)`, name) + matched, err = regexp.MatchString(`(?i)(^|\s)(vermouth|wermut|aperitif)(\s|$|-)`, name) if err != nil { Fatal(err, "Vermouth|Wermut regex failed") } if matched { - return "Wermut" + return "Wermut & Aperitif" } - matched, err = regexp.MatchString(`(^|\s)([G|J]enever)|(Korenwijn)(\s|$)`, name) + matched, err = regexp.MatchString(`(^|\s)([g|j]enever|korenwijn)(\s|$)`, name) if err != nil { Fatal(err, "Genever regex failed") } if matched { return "Genever" } - matched, err = regexp.MatchString(`(^|\s)Baijiu(\s|$)`, name) + matched, err = regexp.MatchString(`(^|\s)baijiu(\s|$)`, name) if err != nil { Fatal(err, "Baijiu regex failed") } if matched { return "Baijiu" } - matched, err = regexp.MatchString(`(^|\s)(Sherry|Oloroso|Fino|Amontillado)(\s|$)`, name) + matched, err = regexp.MatchString(`(^|\s)(sherry|oloroso|fino|amontillado)(\s|$)`, name) if err != nil { Fatal(err, "Sherry regex failed") } if matched { - return "Sherry" + if !strings.Contains(name, "cask") { + return "Sherry" + } } - matched, err = regexp.MatchString(`((^|\s)Port(wein)?(\s|$))|((^|\s)(Ruby|Tawny)(\s|$))`, name) + matched, err = regexp.MatchString(`((^|\s)port(wein)?(\s|$))|((^|\s)(ruby|tawny)(\s|$))`, name) if err != nil { Fatal(err, "Portwein regex failed") } if matched { - return "Portwein" + if !strings.Contains(name, "cask") { + return "Portwein" + } } - matched, err = regexp.MatchString(`(^|\s)Obstler|Obstbrand|Edelbrand(\s|$)`, name) + matched, err = regexp.MatchString(`(^|\s)(obstler|obstbrand|edelbrand|braende-geister)(\s|$)`, name) // braende-geister from spirituosen-wolf.de if err != nil { Fatal(err, "Obstbrand regex failed") } if matched { return "Obstbrand" } - matched, err = regexp.MatchString(`(^|\s)Sake(\s|$)`, name) + matched, err = regexp.MatchString(`(^|\s)sake(\s|$)`, name) if err != nil { Fatal(err, "Sake regex failed") } if matched { return "Sake" } - matched, err = regexp.MatchString(`(^|\s)Shochu(\s|$)`, name) + matched, err = regexp.MatchString(`(^|\s)shochu(\s|$)`, name) if err != nil { Fatal(err, "Shochu regex failed") } if matched { return "Shochu" } - matched, err = regexp.MatchString(`(^|\s)Pisco(\s|$)`, name) + matched, err = regexp.MatchString(`(^|\s)pisco(\s|$)`, name) if err != nil { Fatal(err, "Pisco regex failed") } if matched { return "Pisco" } - matched, err = regexp.MatchString(`(^|\s)Absint(h?)(\s|$)`, name) + matched, err = regexp.MatchString(`(^|\s)absint(h?)(\s|$)`, name) if err != nil { Fatal(err, "Absinth regex failed") } if matched { return "Absinth" } - matched, err = regexp.MatchString(`(^|\s)Tequila(\s|$)`, name) + matched, err = regexp.MatchString(`(^|\s)tequila(\s|$)`, name) if err != nil { Fatal(err, "Tequila regex failed") } if matched { return "Tequila" } - matched, err = regexp.MatchString(`(^|\s)Mezcal(\s|$)`, name) + matched, err = regexp.MatchString(`(^|\s)mezcal(\s|$)`, name) if err != nil { Fatal(err, "Mezcal regex failed") } |
