New user profile

This commit is contained in:
2018-11-15 20:19:40 +09:00
parent a1c11a2eae
commit d5dff615c1
29 changed files with 271 additions and 141 deletions

View File

@ -30,7 +30,7 @@ func Anime(ctx *aero.Context) string {
completed := animeList.FilterStatus(arn.AnimeListStatusCompleted)
// Genre affinity
bestGenres := getBestGenres(animeList)
bestGenres := animeList.TopGenres(bestGenreCount)
// Get all anime
var tv []*arn.Anime

View File

@ -1,43 +0,0 @@
package recommended
import (
"sort"
"github.com/animenotifier/arn"
)
// getBestGenres returns the most liked genres for the user's anime list.
func getBestGenres(animeList *arn.AnimeList) []string {
genreItems := animeList.Genres()
genreAffinity := map[string]float64{}
bestGenres := []string{}
for genre, animeListItems := range genreItems {
affinity := 0.0
for _, item := range animeListItems {
if item.Status != arn.AnimeListStatusCompleted {
continue
}
if item.Rating.Overall != 0 {
affinity += item.Rating.Overall
} else {
affinity += 5.0
}
}
genreAffinity[genre] = affinity
bestGenres = append(bestGenres, genre)
}
sort.Slice(bestGenres, func(i, j int) bool {
return genreAffinity[bestGenres[i]] > genreAffinity[bestGenres[j]]
})
if len(bestGenres) > bestGenreCount {
bestGenres = bestGenres[:bestGenreCount]
}
return bestGenres
}