diff --git a/jobs/import-jikan-characters/import-jikan-characters.go b/jobs/import-jikan-characters/import-jikan-characters.go new file mode 100644 index 00000000..4136c4bd --- /dev/null +++ b/jobs/import-jikan-characters/import-jikan-characters.go @@ -0,0 +1,85 @@ +package main + +import ( + "fmt" + "strings" + + "github.com/animenotifier/arn" + "github.com/animenotifier/jikan" + "github.com/fatih/color" +) + +var jikanDB = arn.Node.Namespace("jikan") + +func main() { + color.Yellow("Importing jikan characters...") + defer arn.Node.Close() + + for characterObj := range jikanDB.All("Character") { + jikanCharacter := characterObj.(*jikan.Character) + + if jikanCharacter.Name != "Slaine Troyard" { + continue + } + + character := &arn.Character{ + ID: arn.GenerateID("Character"), + Description: jikanCharacter.About, + Name: &arn.CharacterName{ + Romaji: jikanCharacter.Name, + Japanese: jikanCharacter.NameJapanese, + }, + Image: jikanCharacter.Image, + } + + if strings.HasPrefix(character.Name.Japanese, "(") { + character.Name.Japanese = strings.TrimPrefix(character.Name.Japanese, "(") + character.Name.Japanese = strings.TrimSuffix(character.Name.Japanese, ")") + } + + lines := strings.Split(character.Description, "\n") + finalLines := make([]string, 0, len(lines)) + + for _, line := range lines { + line = strings.TrimSpace(line) + originalLine := line + + if strings.HasPrefix(line, "(") { + line = strings.TrimPrefix(line, "(") + line = strings.TrimSuffix(line, ")") + } + + line = strings.TrimSpace(line) + + colonPos := strings.Index(line, ":") + + if colonPos == -1 || colonPos < 2 || colonPos > 25 { + finalLines = append(finalLines, originalLine) + continue + } + + key := line[:colonPos] + value := line[colonPos+1:] + + value = strings.TrimSpace(value) + + if key == "source" { + key = "Source" + } + + character.Attributes = append(character.Attributes, &arn.CharacterAttribute{ + Name: key, + Value: value, + }) + + fmt.Println(color.CyanString(key), color.YellowString(value)) + } + + character.Description = strings.Join(finalLines, "\n") + character.Description = strings.TrimSpace(character.Description) + + arn.PrettyPrint(character) + } + + color.Green("Finished.") +} diff --git a/jobs/sync-jikan-anime/sync-jikan-anime.go b/jobs/sync-jikan-anime/sync-jikan-anime.go index d3942841..51d1786e 100644 --- a/jobs/sync-jikan-anime/sync-jikan-anime.go +++ b/jobs/sync-jikan-anime/sync-jikan-anime.go @@ -48,5 +48,5 @@ func sync(anime *arn.Anime, malID string) { return } - fmt.Printf("Error fetching %s: %v", malID, err) + fmt.Printf("Error fetching %s: %v\n", malID, err) } diff --git a/jobs/sync-jikan-characters/sync-jikan-characters.go b/jobs/sync-jikan-characters/sync-jikan-characters.go index 20fe1b6a..95f2a402 100644 --- a/jobs/sync-jikan-characters/sync-jikan-characters.go +++ b/jobs/sync-jikan-characters/sync-jikan-characters.go @@ -59,5 +59,5 @@ func fetchCharacter(malCharacterID string) { return } - fmt.Printf("Error fetching %s: %v", malCharacterID, err) + fmt.Printf("Error fetching %s: %v\n", malCharacterID, err) }