diff --git a/directory.go b/directory.go index 20a2b4b..7f5e5d7 100644 --- a/directory.go +++ b/directory.go @@ -211,7 +211,7 @@ func GetFullDirectory() ([]Entry, error) { } func GetDirectoryCached(letter rune) ([]Entry, error) { - key := fmt.Sprintf("directory:%s", letter) + key := fmt.Sprintf("directory:%s", string(letter)) // Check if cached var entries []Entry @@ -408,12 +408,22 @@ func GetFullEntry(id string) (*FullEntry, error) { entry.Other = rows - // Find the name + // Multiple names found, collect and log nameElement := doc.Find("body > #main span.nameBold > strong") - if nameElement.Length() != 1 { - return nil, fmt.Errorf("could not find name: %d elements", nameElement.Length()) + if nameElement.Length() > 1 { + var names []string + nameElement.Each(func(i int, s *goquery.Selection) { + names = append(names, strings.TrimSpace(s.Text())) + }) + log.Warn().Int("count", nameElement.Length()).Interface("names", names).Msg("Multiple Names Found") + + // Use the longest name + entry.Name = lo.MaxBy(names, func(name string, max string) bool { + return len(name) > len(max) + }) + } else { + entry.Name = strings.TrimSpace(nameElement.Text()) } - entry.Name = strings.TrimSpace(nameElement.Text()) return &entry, nil } diff --git a/main.go b/main.go index 0c182f6..2a3df6b 100644 --- a/main.go +++ b/main.go @@ -139,7 +139,7 @@ func main() { // Get the directory for letter := 'A'; letter <= 'Z'; letter++ { go func(letter rune) { - letterEntries, err := GetDirectoryCached(string(letter)) + letterEntries, err := GetDirectoryCached(letter) if err != nil { log.Fatal().Err(err).Msg("Failed to get directory") }