mirror of
https://github.com/Xevion/scla-unsubscribe.git
synced 2025-12-06 03:16:23 -06:00
Handle multiple names, fix string/rune conversion
This commit is contained in:
20
directory.go
20
directory.go
@@ -211,7 +211,7 @@ func GetFullDirectory() ([]Entry, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func GetDirectoryCached(letter rune) ([]Entry, error) {
|
func GetDirectoryCached(letter rune) ([]Entry, error) {
|
||||||
key := fmt.Sprintf("directory:%s", letter)
|
key := fmt.Sprintf("directory:%s", string(letter))
|
||||||
|
|
||||||
// Check if cached
|
// Check if cached
|
||||||
var entries []Entry
|
var entries []Entry
|
||||||
@@ -408,12 +408,22 @@ func GetFullEntry(id string) (*FullEntry, error) {
|
|||||||
|
|
||||||
entry.Other = rows
|
entry.Other = rows
|
||||||
|
|
||||||
// Find the name
|
// Multiple names found, collect and log
|
||||||
nameElement := doc.Find("body > #main span.nameBold > strong")
|
nameElement := doc.Find("body > #main span.nameBold > strong")
|
||||||
if nameElement.Length() != 1 {
|
if nameElement.Length() > 1 {
|
||||||
return nil, fmt.Errorf("could not find name: %d elements", nameElement.Length())
|
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
|
return &entry, nil
|
||||||
}
|
}
|
||||||
|
|||||||
2
main.go
2
main.go
@@ -139,7 +139,7 @@ func main() {
|
|||||||
// Get the directory
|
// Get the directory
|
||||||
for letter := 'A'; letter <= 'Z'; letter++ {
|
for letter := 'A'; letter <= 'Z'; letter++ {
|
||||||
go func(letter rune) {
|
go func(letter rune) {
|
||||||
letterEntries, err := GetDirectoryCached(string(letter))
|
letterEntries, err := GetDirectoryCached(letter)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal().Err(err).Msg("Failed to get directory")
|
log.Fatal().Err(err).Msg("Failed to get directory")
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user