From 3cf7523d13374f37486280cd8679ce49135211e9 Mon Sep 17 00:00:00 2001 From: Eduard Urbach Date: Wed, 11 Apr 2018 11:32:33 +0200 Subject: [PATCH] Generate new character IDs --- .../generate-character-ids.go | 85 +++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 patches/generate-character-ids/generate-character-ids.go diff --git a/patches/generate-character-ids/generate-character-ids.go b/patches/generate-character-ids/generate-character-ids.go new file mode 100644 index 00000000..9aceadb9 --- /dev/null +++ b/patches/generate-character-ids/generate-character-ids.go @@ -0,0 +1,85 @@ +package main + +import ( + "fmt" + "sort" + "strconv" + + "github.com/animenotifier/arn" + "github.com/fatih/color" +) + +func main() { + color.Yellow("Generating character IDs") + + defer color.Green("Finished") + defer arn.Node.Close() + + allCharacters := arn.FilterCharacters(func(character *arn.Character) bool { + return len(character.ID) < len("hw5heOmiR") + }) + + sort.Slice(allCharacters, func(i, j int) bool { + aID, _ := strconv.Atoi(allCharacters[i].ID) + bID, _ := strconv.Atoi(allCharacters[j].ID) + + return aID < bID + }) + + // Create map of old IDs to new IDs + idMap := map[string]string{} + + for counter, character := range allCharacters { + newID := arn.GenerateID("Character") + + if character.GetMapping("myanimelist/character") == "" { + fmt.Printf("[%d / %d] Old [%s] New [%s] %s\n", counter+1, len(allCharacters), color.YellowString(character.ID), color.GreenString(newID), character) + } + + idMap[character.ID] = newID + character.ID = newID + character.Save() + } + + // Update quotes + for quote := range arn.StreamQuotes() { + newID, exists := idMap[quote.CharacterID] + + if exists { + quote.CharacterID = newID + quote.Save() + } + } + + // Update log + for entry := range arn.StreamEditLogEntries() { + if entry.ObjectType != "Character" { + continue + } + + newID, exists := idMap[entry.ObjectID] + + if exists { + entry.ObjectID = newID + entry.Save() + } + } + + // Update anime characters + for list := range arn.StreamAnimeCharacters() { + modified := false + + for _, animeCharacter := range list.Items { + newID, exists := idMap[animeCharacter.CharacterID] + + if exists { + animeCharacter.CharacterID = newID + modified = true + } + } + + if modified { + list.Save() + } + } +}