From be1419bfa7c6369e489514509750421e57a050dc Mon Sep 17 00:00:00 2001 From: daru Date: Wed, 18 May 2022 21:05:37 +0200 Subject: [PATCH] Delete user from anime on finish --- knecht.go | 2 +- ober.go | 53 +++++++++++++++++++-------------------------------- praktikant.go | 18 ++++++++++++++++- schaffer.go | 13 +++++++++++++ 4 files changed, 51 insertions(+), 35 deletions(-) diff --git a/knecht.go b/knecht.go index ccebfc3..78517f7 100644 --- a/knecht.go +++ b/knecht.go @@ -13,7 +13,7 @@ import ( "github.com/valyala/fasthttp" ) -func SearchAnime(query string) ([]Anime, []byte, error) { +func SearchAnimeData(query string) ([]Anime, []byte, error) { var animes []Anime data, err := searchCache.Get(query) if err != nil { diff --git a/ober.go b/ober.go index 45258e4..e30c707 100644 --- a/ober.go +++ b/ober.go @@ -91,21 +91,16 @@ func AnimeGet(ctx *fasthttp.RequestCtx) { ctx.SetStatusCode(fasthttp.StatusBadRequest) return } - // search season first - anime, err := SearchSeason(malId) - var bytes []byte + // search anime + anime, err := SearchAnime(malId) if err != nil { - _, bytes, err = GetAnimeDetailData(malId) - if err != nil { - addErrorToCtx(ctx, err) - return - } - } else { - bytes, err = json.Marshal(&anime) - if err != nil { - addErrorToCtx(ctx, err) - return - } + addErrorToCtx(ctx, err) + return + } + bytes, err := json.Marshal(&anime) + if err != nil { + addErrorToCtx(ctx, err) + return } _, err = ctx.Write(bytes) if err != nil { @@ -123,8 +118,8 @@ func AnimeSearchGet(ctx *fasthttp.RequestCtx) { return } query := string(ctx.QueryArgs().Peek("q")) - // Search with query - _, bytes, err := SearchAnime(query) + // search with query + _, bytes, err := SearchAnimeData(query) if err != nil { addErrorToCtx(ctx, err) return @@ -271,15 +266,11 @@ func WatchExtendedGet(ctx *fasthttp.RequestCtx) { animeUsersExtended := make([]AnimeUserExtended, 0) // make list advanced for _, a := range animeUsers { - // Search season first - var data *Anime - data, err := SearchSeason(a.Anime) + // search anime + data, err := SearchAnime(a.Anime) if err != nil { - data, _, err = GetAnimeDetailData(a.Anime) - if err != nil { - addErrorToCtx(ctx, err) - return - } + addErrorToCtx(ctx, err) + return } animeUsersExtended = append(animeUsersExtended, AnimeUserExtended{ Anime: a.Anime, @@ -545,16 +536,12 @@ func processUpdateReq(ctx *fasthttp.RequestCtx, update bool) { // iterate sent animes for i, anime := range animes { - // check if anime is in season - _, err = SearchSeason(anime.Anime) + // anime holen sie diese + _, err = SearchAnime(anime.Anime) if err != nil { - // anime not in season => holen sie diese - _, _, err := GetAnimeDetailData(anime.Anime) - if err != nil { - ctx.WriteString(err.Error()) - ctx.SetStatusCode(fasthttp.StatusNotFound) - return - } + ctx.WriteString(err.Error()) + ctx.SetStatusCode(fasthttp.StatusNotFound) + return } var animeData *AnimeUser diff --git a/praktikant.go b/praktikant.go index 9cc22d2..271d1b4 100644 --- a/praktikant.go +++ b/praktikant.go @@ -39,9 +39,25 @@ func Arbeit() { if newProgress == u.Progress { continue } - // update db color.Infof("%s progress von %d: %d -> %d\n", u.Username, a.Anime, u.Progress, newProgress) logOut.WriteLine(fmt.Sprintf("📜 %s progress von %d: %d -> %d", u.Username, a.Anime, u.Progress, newProgress)) + animeData, err := SearchAnime(a.Anime) + if err != nil { + color.Errorln(err.Error()) + logOut.WriteError(err) + } else { + if animeData.Episodes != 0 && newProgress >= animeData.Episodes { + color.Infof("%s finished %d\n", u.Username, a.Anime) + logOut.WriteLine(fmt.Sprintf("📜 %s finished %d !", u.Username, a.Anime)) + _, err = DeleteUserFromAnime(u.Username, u.MalID, a.Anime) + if err != nil { + color.Errorln(err.Error()) + logOut.WriteError(err) + } + continue + } + } + // update db err = UpdateUserAnimeProgress(a.Anime, u.MalID, newProgress, updated) if err != nil { color.Errorln(err.Error()) diff --git a/schaffer.go b/schaffer.go index 4c28f24..f3c521d 100644 --- a/schaffer.go +++ b/schaffer.go @@ -132,6 +132,19 @@ func SearchSeason(animeId int64) (*Anime, error) { return nil, errors.New("anime not found") } +func SearchAnime(animeId int64) (*Anime, error) { + // search season first + anime, err := SearchSeason(animeId) + if err != nil { + // get from MAL + anime, _, err = GetAnimeDetailData(animeId) + if err != nil { + return nil, err + } + } + return anime, err +} + func FetchProgress(animeId, userId int64, username string, progress int) (int, time.Time, error) { // check watching first list, _, err := GetUserAnimeListData(username, malApiStatusW)