51 lines
997 B
Go
51 lines
997 B
Go
package anilist
|
|
|
|
import (
|
|
"context"
|
|
"errors"
|
|
"github.com/rs/zerolog"
|
|
"seanime/internal/util/limiter"
|
|
"sync"
|
|
)
|
|
|
|
func (c *Client) AddMediaToPlanning(mIds []int, rateLimiter *limiter.Limiter, logger *zerolog.Logger) error {
|
|
if len(mIds) == 0 {
|
|
logger.Debug().Msg("anilist: No media added to planning list")
|
|
return nil
|
|
}
|
|
if rateLimiter == nil {
|
|
return errors.New("anilist: no rate limiter provided")
|
|
}
|
|
|
|
status := MediaListStatusPlanning
|
|
|
|
scoreRaw := 0
|
|
progress := 0
|
|
|
|
wg := sync.WaitGroup{}
|
|
for _, _id := range mIds {
|
|
wg.Add(1)
|
|
go func(id int) {
|
|
rateLimiter.Wait()
|
|
defer wg.Done()
|
|
_, err := c.UpdateMediaListEntry(
|
|
context.Background(),
|
|
&id,
|
|
&status,
|
|
&scoreRaw,
|
|
&progress,
|
|
nil,
|
|
nil,
|
|
)
|
|
if err != nil {
|
|
logger.Error().Msg("anilist: An error occurred while adding media to planning list: " + err.Error())
|
|
}
|
|
}(_id)
|
|
}
|
|
wg.Wait()
|
|
|
|
logger.Debug().Any("count", len(mIds)).Msg("anilist: Media added to planning list")
|
|
|
|
return nil
|
|
}
|