70 lines
1.2 KiB
Go
70 lines
1.2 KiB
Go
package halloffame
|
|
|
|
import (
|
|
"sort"
|
|
"time"
|
|
|
|
"github.com/aerogo/aero"
|
|
"github.com/animenotifier/notify.moe/arn"
|
|
"github.com/animenotifier/notify.moe/components"
|
|
"github.com/animenotifier/notify.moe/utils"
|
|
)
|
|
|
|
const minYear = 1963
|
|
|
|
// Get ...
|
|
func Get(ctx aero.Context) error {
|
|
user := utils.GetUser(ctx)
|
|
maxYear := time.Now().Year() - 1
|
|
hallOfFameEntries := []*utils.HallOfFameEntry{}
|
|
|
|
animes := arn.FilterAnime(func(anime *arn.Anime) bool {
|
|
if len(anime.StartDate) < 4 {
|
|
return false
|
|
}
|
|
|
|
year := anime.StartDateTime().Year()
|
|
|
|
if year > maxYear || year < minYear {
|
|
return false
|
|
}
|
|
|
|
if anime.Status != "finished" {
|
|
return false
|
|
}
|
|
|
|
if anime.Type != "tv" {
|
|
return false
|
|
}
|
|
|
|
return true
|
|
})
|
|
|
|
arn.SortAnimeByQuality(animes)
|
|
|
|
yearsAdded := map[int]bool{}
|
|
|
|
for _, anime := range animes {
|
|
year := anime.StartDateTime().Year()
|
|
|
|
_, exists := yearsAdded[year]
|
|
|
|
if exists {
|
|
continue
|
|
}
|
|
|
|
hallOfFameEntries = append(hallOfFameEntries, &utils.HallOfFameEntry{
|
|
Year: year,
|
|
Anime: anime,
|
|
})
|
|
|
|
yearsAdded[year] = true
|
|
}
|
|
|
|
sort.Slice(hallOfFameEntries, func(i, j int) bool {
|
|
return hallOfFameEntries[i].Year > hallOfFameEntries[j].Year
|
|
})
|
|
|
|
return ctx.HTML(components.HallOfFame(hallOfFameEntries, user))
|
|
}
|