node build fixed
This commit is contained in:
248
seanime-2.9.10/internal/api/anilist/collection_helper.go
Normal file
248
seanime-2.9.10/internal/api/anilist/collection_helper.go
Normal file
@@ -0,0 +1,248 @@
|
||||
package anilist
|
||||
|
||||
import (
|
||||
"time"
|
||||
|
||||
"github.com/goccy/go-json"
|
||||
)
|
||||
|
||||
type (
|
||||
AnimeListEntry = AnimeCollection_MediaListCollection_Lists_Entries
|
||||
AnimeList = AnimeCollection_MediaListCollection_Lists
|
||||
|
||||
EntryDate struct {
|
||||
Year *int `json:"year,omitempty"`
|
||||
Month *int `json:"month,omitempty"`
|
||||
Day *int `json:"day,omitempty"`
|
||||
}
|
||||
)
|
||||
|
||||
func (ac *AnimeCollection) GetListEntryFromAnimeId(id int) (*AnimeListEntry, bool) {
|
||||
if ac == nil || ac.MediaListCollection == nil {
|
||||
return nil, false
|
||||
}
|
||||
|
||||
var entry *AnimeCollection_MediaListCollection_Lists_Entries
|
||||
for _, l := range ac.MediaListCollection.Lists {
|
||||
if l.Entries == nil || len(l.Entries) == 0 {
|
||||
continue
|
||||
}
|
||||
for _, e := range l.Entries {
|
||||
if e.Media.ID == id {
|
||||
entry = e
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
if entry == nil {
|
||||
return nil, false
|
||||
}
|
||||
|
||||
return entry, true
|
||||
}
|
||||
|
||||
func (ac *AnimeCollection) GetAllAnime() []*BaseAnime {
|
||||
if ac == nil {
|
||||
return make([]*BaseAnime, 0)
|
||||
}
|
||||
|
||||
var ret []*BaseAnime
|
||||
addedId := make(map[int]bool)
|
||||
for _, l := range ac.MediaListCollection.Lists {
|
||||
if l.Entries == nil || len(l.Entries) == 0 {
|
||||
continue
|
||||
}
|
||||
for _, e := range l.Entries {
|
||||
if _, ok := addedId[e.Media.ID]; !ok {
|
||||
ret = append(ret, e.Media)
|
||||
addedId[e.Media.ID] = true
|
||||
}
|
||||
}
|
||||
}
|
||||
return ret
|
||||
}
|
||||
|
||||
func (ac *AnimeCollection) FindAnime(mediaId int) (*BaseAnime, bool) {
|
||||
if ac == nil {
|
||||
return nil, false
|
||||
}
|
||||
|
||||
for _, l := range ac.MediaListCollection.Lists {
|
||||
if l.Entries == nil || len(l.Entries) == 0 {
|
||||
continue
|
||||
}
|
||||
for _, e := range l.Entries {
|
||||
if e.Media.ID == mediaId {
|
||||
return e.Media, true
|
||||
}
|
||||
}
|
||||
}
|
||||
return nil, false
|
||||
}
|
||||
|
||||
func (ac *AnimeCollectionWithRelations) GetListEntryFromMediaId(id int) (*AnimeCollectionWithRelations_MediaListCollection_Lists_Entries, bool) {
|
||||
|
||||
if ac == nil || ac.MediaListCollection == nil {
|
||||
return nil, false
|
||||
}
|
||||
|
||||
var entry *AnimeCollectionWithRelations_MediaListCollection_Lists_Entries
|
||||
for _, l := range ac.MediaListCollection.Lists {
|
||||
if l.Entries == nil || len(l.Entries) == 0 {
|
||||
continue
|
||||
}
|
||||
for _, e := range l.Entries {
|
||||
if e.Media.ID == id {
|
||||
entry = e
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
if entry == nil {
|
||||
return nil, false
|
||||
}
|
||||
|
||||
return entry, true
|
||||
}
|
||||
|
||||
func (ac *AnimeCollectionWithRelations) GetAllAnime() []*CompleteAnime {
|
||||
|
||||
var ret []*CompleteAnime
|
||||
addedId := make(map[int]bool)
|
||||
for _, l := range ac.MediaListCollection.Lists {
|
||||
if l.Entries == nil || len(l.Entries) == 0 {
|
||||
continue
|
||||
}
|
||||
for _, e := range l.Entries {
|
||||
if _, ok := addedId[e.Media.ID]; !ok {
|
||||
ret = append(ret, e.Media)
|
||||
addedId[e.Media.ID] = true
|
||||
}
|
||||
}
|
||||
}
|
||||
return ret
|
||||
}
|
||||
|
||||
func (ac *AnimeCollectionWithRelations) FindAnime(mediaId int) (*CompleteAnime, bool) {
|
||||
for _, l := range ac.MediaListCollection.Lists {
|
||||
if l.Entries == nil || len(l.Entries) == 0 {
|
||||
continue
|
||||
}
|
||||
for _, e := range l.Entries {
|
||||
if e.Media.ID == mediaId {
|
||||
return e.Media, true
|
||||
}
|
||||
}
|
||||
}
|
||||
return nil, false
|
||||
}
|
||||
|
||||
type IFuzzyDate interface {
|
||||
GetYear() *int
|
||||
GetMonth() *int
|
||||
GetDay() *int
|
||||
}
|
||||
|
||||
func FuzzyDateToString(d IFuzzyDate) string {
|
||||
if d == nil {
|
||||
return ""
|
||||
}
|
||||
return fuzzyDateToString(d.GetYear(), d.GetMonth(), d.GetDay())
|
||||
}
|
||||
|
||||
func ToEntryStartDate(d *AnimeCollection_MediaListCollection_Lists_Entries_StartedAt) string {
|
||||
if d == nil {
|
||||
return ""
|
||||
}
|
||||
return fuzzyDateToString(d.GetYear(), d.GetMonth(), d.GetDay())
|
||||
}
|
||||
|
||||
func ToEntryCompletionDate(d *AnimeCollection_MediaListCollection_Lists_Entries_CompletedAt) string {
|
||||
if d == nil {
|
||||
return ""
|
||||
}
|
||||
return fuzzyDateToString(d.GetYear(), d.GetMonth(), d.GetDay())
|
||||
}
|
||||
|
||||
func fuzzyDateToString(year *int, month *int, day *int) string {
|
||||
_year := 0
|
||||
if year != nil {
|
||||
_year = *year
|
||||
}
|
||||
if _year == 0 {
|
||||
return ""
|
||||
}
|
||||
_month := 0
|
||||
if month != nil {
|
||||
_month = *month
|
||||
}
|
||||
_day := 0
|
||||
if day != nil {
|
||||
_day = *day
|
||||
}
|
||||
return time.Date(_year, time.Month(_month), _day, 0, 0, 0, 0, time.UTC).Format(time.RFC3339)
|
||||
}
|
||||
|
||||
// AddEntryToList adds an entry to the appropriate list based on the provided status.
|
||||
// If no list exists with the given status, a new list is created.
|
||||
func (mc *AnimeCollection_MediaListCollection) AddEntryToList(entry *AnimeCollection_MediaListCollection_Lists_Entries, status MediaListStatus) {
|
||||
if mc == nil || entry == nil {
|
||||
return
|
||||
}
|
||||
|
||||
// Initialize Lists slice if nil
|
||||
if mc.Lists == nil {
|
||||
mc.Lists = make([]*AnimeCollection_MediaListCollection_Lists, 0)
|
||||
}
|
||||
|
||||
// Find existing list with the target status
|
||||
for _, list := range mc.Lists {
|
||||
if list.Status != nil && *list.Status == status {
|
||||
// Found the list, add the entry
|
||||
if list.Entries == nil {
|
||||
list.Entries = make([]*AnimeCollection_MediaListCollection_Lists_Entries, 0)
|
||||
}
|
||||
list.Entries = append(list.Entries, entry)
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
// No list found with the target status, create a new one
|
||||
newList := &AnimeCollection_MediaListCollection_Lists{
|
||||
Status: &status,
|
||||
Entries: []*AnimeCollection_MediaListCollection_Lists_Entries{entry},
|
||||
}
|
||||
mc.Lists = append(mc.Lists, newList)
|
||||
}
|
||||
|
||||
func (ac *AnimeCollection) Copy() *AnimeCollection {
|
||||
if ac == nil {
|
||||
return nil
|
||||
}
|
||||
marshaled, err := json.Marshal(ac)
|
||||
if err != nil {
|
||||
return nil
|
||||
}
|
||||
var copy AnimeCollection
|
||||
err = json.Unmarshal(marshaled, ©)
|
||||
if err != nil {
|
||||
return nil
|
||||
}
|
||||
return ©
|
||||
}
|
||||
|
||||
func (ac *AnimeList) CopyT() *AnimeCollection_MediaListCollection_Lists {
|
||||
if ac == nil {
|
||||
return nil
|
||||
}
|
||||
marshaled, err := json.Marshal(ac)
|
||||
if err != nil {
|
||||
return nil
|
||||
}
|
||||
var copy AnimeCollection_MediaListCollection_Lists
|
||||
err = json.Unmarshal(marshaled, ©)
|
||||
if err != nil {
|
||||
return nil
|
||||
}
|
||||
return ©
|
||||
}
|
||||
Reference in New Issue
Block a user