diff --git a/jobs/anime-characters/anime-characters.go b/jobs/anime-characters/anime-characters.go index 6f84a1f1..7273d221 100644 --- a/jobs/anime-characters/anime-characters.go +++ b/jobs/anime-characters/anime-characters.go @@ -1,14 +1,30 @@ package main import ( + "fmt" + "time" + "github.com/animenotifier/arn" "github.com/fatih/color" ) func main() { - anime, _ := arn.GetAnime("6887") - err := anime.RefreshAnimeCharacters() - arn.PanicOnError(err) + color.Yellow("Refreshing anime characters...") + + rateLimiter := time.NewTicker(500 * time.Millisecond) + + for anime := range arn.MustStreamAnime() { + <-rateLimiter.C + + chars, err := anime.RefreshAnimeCharacters() + + if err != nil { + color.Red(err.Error()) + continue + } + + fmt.Printf("%s %s (%d characters)\n", anime.ID, anime.Title.Canonical, len(chars.Items)) + } color.Green("Finished.") } diff --git a/jobs/sync-characters/sync-characters.go b/jobs/sync-characters/sync-characters.go index 11ed97ed..3668d3fa 100644 --- a/jobs/sync-characters/sync-characters.go +++ b/jobs/sync-characters/sync-characters.go @@ -18,7 +18,7 @@ func main() { ID: kitsuCharacter.ID, Name: kitsuCharacter.Attributes.Name, Image: kitsu.FixImageURL(kitsuCharacter.Attributes.Image.Original), - Description: kitsuCharacter.Attributes.Description, + Description: arn.FixAnimeDescription(kitsuCharacter.Attributes.Description), } fmt.Printf("%s %s\n", character.ID, character.Name) diff --git a/main.go b/main.go index 80d7d10c..10e62049 100644 --- a/main.go +++ b/main.go @@ -15,6 +15,7 @@ import ( "github.com/animenotifier/notify.moe/pages/animelistitem" "github.com/animenotifier/notify.moe/pages/apiview" "github.com/animenotifier/notify.moe/pages/best" + "github.com/animenotifier/notify.moe/pages/character" "github.com/animenotifier/notify.moe/pages/dashboard" "github.com/animenotifier/notify.moe/pages/editanime" "github.com/animenotifier/notify.moe/pages/editor" @@ -74,7 +75,8 @@ func configure(app *aero.Application) *aero.Application { app.Ajax("/forum/:tag", forum.Get) app.Ajax("/thread/:id", threads.Get) app.Ajax("/post/:id", posts.Get) - app.Ajax("/tracks/:id", tracks.Get) + app.Ajax("/track/:id", tracks.Get) + app.Ajax("/character/:id", character.Get) app.Ajax("/new/thread", newthread.Get) app.Ajax("/new/soundtrack", newsoundtrack.Get) app.Ajax("/settings", settings.Get) diff --git a/mixins/Character.pixy b/mixins/Character.pixy index a697f00d..cf068890 100644 --- a/mixins/Character.pixy +++ b/mixins/Character.pixy @@ -1,4 +1,4 @@ component Character(character *arn.Character) - a.character(href="#") + a.character(href="/character/" + character.ID) img.character-image.lazy(src="", data-src=character.Image, alt=character.Name, title=character.Name) span.character-name= character.Name \ No newline at end of file diff --git a/pages/anime/character.scarlet b/pages/anime/character.scarlet index adcce315..9767743c 100644 --- a/pages/anime/character.scarlet +++ b/pages/anime/character.scarlet @@ -16,6 +16,7 @@ .character-image border-radius 3px + box-shadow shadow-medium object-fit cover .character-name diff --git a/pages/character/character.go b/pages/character/character.go new file mode 100644 index 00000000..38876149 --- /dev/null +++ b/pages/character/character.go @@ -0,0 +1,21 @@ +package character + +import ( + "net/http" + + "github.com/aerogo/aero" + "github.com/animenotifier/arn" + "github.com/animenotifier/notify.moe/components" +) + +// Get character. +func Get(ctx *aero.Context) string { + id := ctx.Get("id") + character, err := arn.GetCharacter(id) + + if err != nil { + return ctx.Error(http.StatusNotFound, "Character not found", err) + } + + return ctx.HTML(components.CharacterDetails(character)) +} diff --git a/pages/character/character.pixy b/pages/character/character.pixy new file mode 100644 index 00000000..0963d600 --- /dev/null +++ b/pages/character/character.pixy @@ -0,0 +1,5 @@ +component CharacterDetails(character *arn.Character) + h1= character.Name + p + img(src=character.Image, alt=character.Name) + p= character.Description \ No newline at end of file diff --git a/pages/tracks/tracks.go b/pages/tracks/tracks.go index deb9efdb..dd698342 100644 --- a/pages/tracks/tracks.go +++ b/pages/tracks/tracks.go @@ -8,7 +8,7 @@ import ( "github.com/animenotifier/notify.moe/components" ) -// Get post. +// Get track. func Get(ctx *aero.Context) string { id := ctx.Get("id") track, err := arn.GetSoundTrack(id) diff --git a/tests.go b/tests.go index fdc299a8..aae85607 100644 --- a/tests.go +++ b/tests.go @@ -75,8 +75,8 @@ var routeTests = map[string][]string{ "/search/Dragon Ball", }, - "/tracks/:id": []string{ - "/tracks/h0ac8sKkg", + "/track/:id": []string{ + "/track/h0ac8sKkg", }, // API