Implemented anime relations

This commit is contained in:
Eduard Urbach 2017-10-17 16:58:28 +02:00
parent 011ca84bd0
commit 07cb7dd64e
8 changed files with 109 additions and 36 deletions

View File

@ -26,6 +26,19 @@ func main() {
animeID := mediaRelation.Relationships.Source.Data.ID animeID := mediaRelation.Relationships.Source.Data.ID
destinationAnimeID := mediaRelation.Relationships.Destination.Data.ID destinationAnimeID := mediaRelation.Relationships.Destination.Data.ID
// Confirm that the anime IDs are valid
exists, _ := arn.DB.Exists("Anime", animeID)
if !exists {
continue
}
exists, _ = arn.DB.Exists("Anime", destinationAnimeID)
if !exists {
continue
}
fmt.Printf( fmt.Printf(
"%s %s has %s which is %s %s\n", "%s %s has %s which is %s %s\n",
mediaRelation.Relationships.Source.Data.Type, mediaRelation.Relationships.Source.Data.Type,
@ -35,6 +48,7 @@ func main() {
destinationAnimeID, destinationAnimeID,
) )
// Add anime to the global map
relationsList, found := relations[animeID] relationsList, found := relations[animeID]
if !found { if !found {

View File

@ -2,6 +2,7 @@ package anime
import ( import (
"net/http" "net/http"
"sort"
"github.com/aerogo/aero" "github.com/aerogo/aero"
"github.com/animenotifier/arn" "github.com/animenotifier/arn"
@ -66,6 +67,17 @@ func Get(ctx *aero.Context) string {
arn.SortUsersLastSeen(friends) arn.SortUsersLastSeen(friends)
} }
// Sort relations by start date
relations := anime.Relations()
if relations != nil {
items := relations.Items
sort.Slice(items, func(i, j int) bool {
return items[i].Anime().StartDate < items[j].Anime().StartDate
})
}
// Open Graph // Open Graph
description := anime.Summary description := anime.Summary

View File

@ -3,6 +3,9 @@ component Anime(anime *arn.Anime, friends []*arn.User, listItems map[*arn.User]*
if anime.Image.Small != "" if anime.Image.Small != ""
.anime-image-container .anime-image-container
img.anime-cover-image(src=anime.Image.Small, alt=anime.Title.Canonical) img.anime-cover-image(src=anime.Image.Small, alt=anime.Title.Canonical)
if anime.StartDate != ""
.anime-start-date(title="Start date: " + anime.StartDate)= anime.StartDate[:4]
.space .space
@ -35,21 +38,6 @@ component Anime(anime *arn.Anime, friends []*arn.User, listItems map[*arn.User]*
Icon("plus") Icon("plus")
span Add to collection span Add to collection
if len(friends) > 0
h3.anime-section-name Friends
.anime-friends
.user-avatars
each friend in friends
if friend.Nick != ""
if friend.IsActive()
.mountable
FriendEntry(friend, listItems)
else
.mountable
.inactive-user
FriendEntry(friend, listItems)
h3.anime-section-name Ratings h3.anime-section-name Ratings
.anime-rating-categories .anime-rating-categories
.anime-rating-category(title=toString(anime.Rating.Overall)) .anime-rating-category(title=toString(anime.Rating.Overall))
@ -68,6 +56,32 @@ component Anime(anime *arn.Anime, friends []*arn.User, listItems map[*arn.User]*
.anime-rating-category-name Soundtrack .anime-rating-category-name Soundtrack
Rating(anime.Rating.Soundtrack) Rating(anime.Rating.Soundtrack)
if len(friends) > 0
h3.anime-section-name Friends
.anime-friends
.user-avatars
each friend in friends
if friend.Nick != ""
if friend.IsActive()
.mountable
FriendEntry(friend, listItems)
else
.mountable
.inactive-user
FriendEntry(friend, listItems)
if anime.Relations() != nil && len(anime.Relations().Items) > 0
h3.anime-section-name Relations
.anime-relations
each relation in anime.Relations().Items
a.anime-relation.ajax(href=relation.Anime().Link(), title=relation.Anime().Title.Canonical)
img.anime-relation-image.lazy(data-src=relation.Anime().Image.Tiny, alt=relation.Anime().Title.Canonical)
.anime-relation-type= relation.HumanReadableType()
.anime-relation-year
if relation.Anime().StartDate != ""
span= relation.Anime().StartDate[:4]
if len(anime.Trailers) > 0 && anime.Trailers[0].Service == "Youtube" && anime.Trailers[0].ServiceID != "" if len(anime.Trailers) > 0 && anime.Trailers[0].Service == "Youtube" && anime.Trailers[0].ServiceID != ""
h3.anime-section-name Video h3.anime-section-name Video
.anime-trailer.video-container .anime-trailer.video-container
@ -156,19 +170,6 @@ component Anime(anime *arn.Anime, friends []*arn.User, listItems map[*arn.User]*
//- if providers.Nyaa && providers.Nyaa.episodes !== undefined //- if providers.Nyaa && providers.Nyaa.episodes !== undefined
//- span(class=providers.Nyaa.episodes === 0 ? "entry-error" : "entry-ok")= providers.Nyaa.episodes + " eps" //- span(class=providers.Nyaa.episodes === 0 ? "entry-error" : "entry-ok")= providers.Nyaa.episodes + " eps"
if len(tracks) > 0
h3.anime-section-name Tracks
.sound-tracks
each track in tracks
SoundTrack(track)
if anime.Characters() != nil && len(anime.Characters().Items) > 0
h3.anime-section-name Characters
.characters
each character in anime.Characters().Items
if character.Character() != nil
Character(character.Character())
h3.anime-section-name Popularity h3.anime-section-name Popularity
.anime-rating-categories .anime-rating-categories
.anime-rating-category .anime-rating-category
@ -187,6 +188,19 @@ component Anime(anime *arn.Anime, friends []*arn.User, listItems map[*arn.User]*
.anime-rating-category-name Dropped .anime-rating-category-name Dropped
.anime-rating= anime.Popularity.Dropped .anime-rating= anime.Popularity.Dropped
if len(tracks) > 0
h3.anime-section-name Tracks
.sound-tracks
each track in tracks
SoundTrack(track)
if anime.Characters() != nil && len(anime.Characters().Items) > 0
h3.anime-section-name Characters
.characters
each character in anime.Characters().Items
if character.Character() != nil
Character(character.Character())
if len(anime.Episodes().Items) > 0 if len(anime.Episodes().Items) > 0
if episodesReversed if episodesReversed
h3.anime-section-name Latest episodes h3.anime-section-name Latest episodes

View File

@ -9,9 +9,15 @@
font-weight bold font-weight bold
.anime-image-container .anime-image-container
horizontal vertical
justify-content center justify-content flex-start
align-items flex-start align-items center
.anime-start-date
font-size 0.7rem
line-height 1.7em
opacity 0.65
margin-top 0.5rem
.anime-cover-image .anime-cover-image
width 142px width 142px

View File

@ -0,0 +1,24 @@
.anime-relations
horizontal-wrap
.anime-relation
anime-mini-item
vertical
.anime-relation-image
anime-mini-item-image
.anime-relation-type,
.anime-relation-year
font-size 0.7rem
line-height 1.7em
text-align center
color text-color
opacity 0.8
.anime-relation-type
margin-top 0.2rem
.anime-relation-year
font-size 0.6rem
opacity 0.65

View File

@ -3,7 +3,7 @@
justify-content center justify-content center
.profile-watching-list-item .profile-watching-list-item
margin 0.25rem anime-mini-item
.profile-watching-list-item-image .profile-watching-list-item-image
anime-cover-image-mini anime-mini-item-image

View File

@ -9,7 +9,7 @@
horizontal-wrap horizontal-wrap
.sound-track-anime-list-item .sound-track-anime-list-item
// anime-mini-item
.sound-track-anime-list-item-image .sound-track-anime-list-item-image
anime-cover-image-mini anime-mini-item-image

View File

@ -42,7 +42,10 @@ mixin clip-long-text
white-space nowrap white-space nowrap
text-overflow ellipsis text-overflow ellipsis
mixin anime-cover-image-mini mixin anime-mini-item
margin 0.25rem
mixin anime-mini-item-image
width 55px !important width 55px !important
height 78px !important height 78px !important
border-radius 2px border-radius 2px