Cleanup
This commit is contained in:
86
jobs/search-index/search-index.go
Normal file
86
jobs/search-index/search-index.go
Normal file
@ -0,0 +1,86 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"strings"
|
||||
|
||||
"github.com/aerogo/flow"
|
||||
"github.com/animenotifier/arn"
|
||||
"github.com/fatih/color"
|
||||
)
|
||||
|
||||
func main() {
|
||||
color.Yellow("Updating search index")
|
||||
|
||||
flow.Parallel(updateAnimeIndex, updateUserIndex)
|
||||
|
||||
color.Green("Finished.")
|
||||
}
|
||||
|
||||
func updateAnimeIndex() {
|
||||
animeSearchIndex := arn.NewSearchIndex()
|
||||
|
||||
// Anime
|
||||
animeStream, err := arn.StreamAnime()
|
||||
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
for anime := range animeStream {
|
||||
if anime.Title.Romaji != "" {
|
||||
animeSearchIndex.TextToID[strings.ToLower(anime.Title.Romaji)] = anime.ID
|
||||
}
|
||||
|
||||
if anime.Title.English != "" {
|
||||
animeSearchIndex.TextToID[strings.ToLower(anime.Title.English)] = anime.ID
|
||||
}
|
||||
|
||||
if anime.Title.Japanese != "" {
|
||||
animeSearchIndex.TextToID[strings.ToLower(anime.Title.Japanese)] = anime.ID
|
||||
}
|
||||
|
||||
for _, synonym := range anime.Title.Synonyms {
|
||||
synonym = strings.ToLower(synonym)
|
||||
|
||||
if synonym != "" && len(synonym) <= 10 {
|
||||
animeSearchIndex.TextToID[synonym] = anime.ID
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fmt.Println(len(animeSearchIndex.TextToID), "anime titles")
|
||||
|
||||
// Save in database
|
||||
err = arn.DB.Set("SearchIndex", "Anime", animeSearchIndex)
|
||||
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
}
|
||||
|
||||
func updateUserIndex() {
|
||||
userSearchIndex := arn.NewSearchIndex()
|
||||
|
||||
// Users
|
||||
userStream, err := arn.StreamUsers()
|
||||
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
for user := range userStream {
|
||||
if user.IsActive() && user.Nick != "" {
|
||||
userSearchIndex.TextToID[strings.ToLower(user.Nick)] = user.ID
|
||||
}
|
||||
}
|
||||
|
||||
fmt.Println(len(userSearchIndex.TextToID), "user names")
|
||||
|
||||
// Save in database
|
||||
err = arn.DB.Set("SearchIndex", "User", userSearchIndex)
|
||||
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user