Added delete-unused-characters patch

This commit is contained in:
2018-04-11 12:05:02 +02:00
parent 3cf7523d13
commit d2de04246c
3 changed files with 119 additions and 68 deletions

View File

@ -1,85 +1,69 @@
package main
import (
"fmt"
"sort"
"strconv"
"github.com/animenotifier/arn"
"github.com/fatih/color"
)
func main() {
color.Yellow("Generating character IDs")
// color.Yellow("Generating character IDs")
defer color.Green("Finished")
defer arn.Node.Close()
// 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)
sort.Slice(allCharacters, func(i, j int) bool {
aID, _ := strconv.Atoi(allCharacters[i].ID)
bID, _ := strconv.Atoi(allCharacters[j].ID)
// return aID < bID
// })
return aID < bID
})
// // Create map of old IDs to new IDs
// idMap := map[string]string{}
// Create map of old IDs to new IDs
idMap := map[string]string{}
// for counter, character := range allCharacters {
// newID := arn.GenerateID("Character")
// fmt.Printf("[%d / %d] Old [%s] New [%s] %s\n", counter+1, len(allCharacters), color.YellowString(character.ID), color.GreenString(newID), character)
// arn.DB.Delete("Character", character.ID)
// idMap[character.ID] = newID
// character.ID = newID
// character.Save()
// }
for counter, character := range allCharacters {
newID := arn.GenerateID("Character")
// // Update quotes
// for quote := range arn.StreamQuotes() {
// newID, exists := idMap[quote.CharacterID]
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)
}
// if exists {
// quote.CharacterID = newID
// quote.Save()
// }
// }
idMap[character.ID] = newID
character.ID = newID
character.Save()
}
// // Update log
// for entry := range arn.StreamEditLogEntries() {
// if entry.ObjectType != "Character" {
// continue
// }
// Update quotes
for quote := range arn.StreamQuotes() {
newID, exists := idMap[quote.CharacterID]
// newID, exists := idMap[entry.ObjectID]
if exists {
quote.CharacterID = newID
quote.Save()
}
}
// if exists {
// entry.ObjectID = newID
// entry.Save()
// }
// }
// Update log
for entry := range arn.StreamEditLogEntries() {
if entry.ObjectType != "Character" {
continue
}
// // Update anime characters
// for list := range arn.StreamAnimeCharacters() {
// modified := false
newID, exists := idMap[entry.ObjectID]
// for _, animeCharacter := range list.Items {
// newID, exists := idMap[animeCharacter.CharacterID]
if exists {
entry.ObjectID = newID
entry.Save()
}
}
// if exists {
// animeCharacter.CharacterID = newID
// modified = true
// }
// }
// 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()
}
}
// if modified {
// list.Save()
// }
// }
}