37 lines
888 B
Go
37 lines
888 B
Go
package popular
|
|
|
|
import (
|
|
"net/http"
|
|
|
|
"github.com/aerogo/aero"
|
|
"github.com/animenotifier/arn"
|
|
"github.com/animenotifier/arn/stringutils"
|
|
)
|
|
|
|
// AnimeTitles returns a list of the 500 most popular anime titles.
|
|
func AnimeTitles(ctx *aero.Context) string {
|
|
maxLength, err := ctx.GetInt("count")
|
|
|
|
if err != nil {
|
|
return ctx.Error(http.StatusBadRequest, "Invalid value for count parameter", err)
|
|
}
|
|
|
|
popularAnimeTitles := []string{}
|
|
popularAnime := arn.AllAnime()
|
|
arn.SortAnimeByPopularity(popularAnime)
|
|
|
|
if len(popularAnime) > maxLength {
|
|
popularAnime = popularAnime[:maxLength]
|
|
}
|
|
|
|
for _, anime := range popularAnime {
|
|
popularAnimeTitles = append(popularAnimeTitles, anime.Title.Canonical)
|
|
|
|
if stringutils.ContainsUnicodeLetters(anime.Title.Japanese) {
|
|
popularAnimeTitles = append(popularAnimeTitles, anime.Title.Japanese)
|
|
}
|
|
}
|
|
|
|
return ctx.JSON(popularAnimeTitles)
|
|
}
|