Use new character structure
This commit is contained in:
@ -2,6 +2,8 @@ package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"path"
|
||||
"strconv"
|
||||
"strings"
|
||||
|
||||
"github.com/animenotifier/arn"
|
||||
@ -17,11 +19,28 @@ func main() {
|
||||
|
||||
for kitsuCharacter := range kitsuCharacters {
|
||||
character := &arn.Character{
|
||||
ID: kitsuCharacter.ID,
|
||||
Name: kitsuCharacter.Attributes.Name,
|
||||
Image: kitsu.FixImageURL(kitsuCharacter.Attributes.Image.Original),
|
||||
ID: kitsuCharacter.ID,
|
||||
Name: arn.CharacterName{
|
||||
Canonical: kitsuCharacter.Attributes.Name,
|
||||
},
|
||||
Image: arn.CharacterImage{
|
||||
Extension: path.Ext(kitsu.FixImageURL(kitsuCharacter.Attributes.Image.Original)),
|
||||
},
|
||||
Description: kitsuCharacter.Attributes.Description,
|
||||
Attributes: []*arn.CharacterAttribute{},
|
||||
Mappings: []*arn.Mapping{
|
||||
&arn.Mapping{
|
||||
Service: "kitsu/character",
|
||||
ServiceID: kitsuCharacter.ID,
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
if kitsuCharacter.Attributes.MalID != 0 {
|
||||
character.Mappings = append(character.Mappings, &arn.Mapping{
|
||||
Service: "myanimelist/character",
|
||||
ServiceID: strconv.Itoa(kitsuCharacter.Attributes.MalID),
|
||||
})
|
||||
}
|
||||
|
||||
// We use markdown, so replace <br/> with two line breaks.
|
||||
|
@ -1,52 +0,0 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"time"
|
||||
|
||||
"github.com/animenotifier/jikan"
|
||||
|
||||
"github.com/animenotifier/arn"
|
||||
"github.com/fatih/color"
|
||||
)
|
||||
|
||||
var jikanDB = arn.Node.Namespace("jikan")
|
||||
|
||||
func main() {
|
||||
color.Yellow("Syncing with Jikan API")
|
||||
defer arn.Node.Close()
|
||||
|
||||
count := 0
|
||||
|
||||
for anime := range arn.StreamAnime() {
|
||||
malID := anime.GetMapping("myanimelist/anime")
|
||||
|
||||
if malID != "" {
|
||||
sync(anime, malID)
|
||||
count++
|
||||
}
|
||||
}
|
||||
|
||||
color.Green("Finished syncing %d anime.", count)
|
||||
|
||||
// Give OS some time to write buffers, just to be safe
|
||||
time.Sleep(10 * time.Second)
|
||||
}
|
||||
|
||||
func sync(anime *arn.Anime, malID string) {
|
||||
fmt.Printf("%s %s (MAL: %s)\n", anime.ID, anime.Title.Canonical, malID)
|
||||
|
||||
if jikanDB.Exists("Anime", malID) {
|
||||
return
|
||||
}
|
||||
|
||||
time.Sleep(2 * time.Second)
|
||||
jikanAnime, err := jikan.GetAnime(malID)
|
||||
|
||||
if err == nil {
|
||||
jikanDB.Set("Anime", malID, jikanAnime)
|
||||
return
|
||||
}
|
||||
|
||||
fmt.Printf("Error fetching %s: %v\n", malID, err)
|
||||
}
|
@ -1,63 +0,0 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"time"
|
||||
|
||||
"github.com/animenotifier/jikan"
|
||||
|
||||
"github.com/animenotifier/arn"
|
||||
"github.com/fatih/color"
|
||||
)
|
||||
|
||||
var jikanDB = arn.Node.Namespace("jikan")
|
||||
|
||||
func main() {
|
||||
color.Yellow("Syncing characters with Jikan API")
|
||||
defer arn.Node.Close()
|
||||
|
||||
allAnime := jikanDB.All("Anime")
|
||||
|
||||
count := 0
|
||||
|
||||
for animeObj := range allAnime {
|
||||
anime := animeObj.(*jikan.Anime)
|
||||
|
||||
if len(anime.Character) == 0 {
|
||||
continue
|
||||
}
|
||||
|
||||
fmt.Println(anime.Title)
|
||||
|
||||
for _, character := range anime.Character {
|
||||
characterID := jikan.GetCharacterIDFromURL(character.URL)
|
||||
|
||||
if characterID == "" {
|
||||
fmt.Println("Invalid character ID")
|
||||
continue
|
||||
}
|
||||
|
||||
fetchCharacter(characterID)
|
||||
}
|
||||
}
|
||||
|
||||
color.Green("Finished syncing %d characters.", count)
|
||||
}
|
||||
|
||||
func fetchCharacter(malCharacterID string) {
|
||||
fmt.Printf("Fetching character ID %s\n", malCharacterID)
|
||||
|
||||
if jikanDB.Exists("Character", malCharacterID) {
|
||||
return
|
||||
}
|
||||
|
||||
time.Sleep(500 * time.Millisecond)
|
||||
character, err := jikan.GetCharacter(malCharacterID)
|
||||
|
||||
if err == nil {
|
||||
jikanDB.Set("Character", malCharacterID, character)
|
||||
return
|
||||
}
|
||||
|
||||
fmt.Printf("Error fetching %s: %v\n", malCharacterID, err)
|
||||
}
|
Reference in New Issue
Block a user