47 lines
1.3 KiB
Go
47 lines
1.3 KiB
Go
package handlers
|
|
|
|
import (
|
|
"seanime/internal/library/anime"
|
|
"strconv"
|
|
|
|
"github.com/labstack/echo/v4"
|
|
)
|
|
|
|
// HandleGetAnimeEpisodeCollection
|
|
//
|
|
// @summary gets list of main episodes
|
|
// @desc This returns a list of main episodes for the given AniList anime media id.
|
|
// @desc It also loads the episode list into the different modules.
|
|
// @returns anime.EpisodeCollection
|
|
// @param id - int - true - "AniList anime media ID"
|
|
// @route /api/v1/anime/episode-collection/{id} [GET]
|
|
func (h *Handler) HandleGetAnimeEpisodeCollection(c echo.Context) error {
|
|
mId, err := strconv.Atoi(c.Param("id"))
|
|
if err != nil {
|
|
return h.RespondWithError(c, err)
|
|
}
|
|
|
|
h.App.AddOnRefreshAnilistCollectionFunc("HandleGetAnimeEpisodeCollection", func() {
|
|
anime.ClearEpisodeCollectionCache()
|
|
})
|
|
|
|
completeAnime, animeMetadata, err := h.App.TorrentstreamRepository.GetMediaInfo(c.Request().Context(), mId)
|
|
if err != nil {
|
|
return h.RespondWithError(c, err)
|
|
}
|
|
|
|
ec, err := anime.NewEpisodeCollection(anime.NewEpisodeCollectionOptions{
|
|
AnimeMetadata: animeMetadata,
|
|
Media: completeAnime.ToBaseAnime(),
|
|
MetadataProvider: h.App.MetadataProvider,
|
|
Logger: h.App.Logger,
|
|
})
|
|
if err != nil {
|
|
return h.RespondWithError(c, err)
|
|
}
|
|
|
|
h.App.FillerManager.HydrateEpisodeFillerData(mId, ec.Episodes)
|
|
|
|
return h.RespondWithData(c, ec)
|
|
}
|