summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMaximilian Möhring2021-01-12 08:16:59 +0100
committerMaximilian Möhring2021-01-12 08:16:59 +0100
commitc98686c9360b668ab5fa12b4ed65191971834642 (patch)
treeba2edd6e09df6d5fa1724d3ba9281d8db4520803
parent2c038e851a23141f5cae470d3f07f4de5d04eed1 (diff)
downloadalkobote-c98686c9360b668ab5fa12b4ed65191971834642.tar.gz
Fix detecting spirit types.
-rw-r--r--crawler/utility.go79
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")
}