Delete user from anime on finish

This commit is contained in:
daru
2022-05-18 21:05:37 +02:00
parent 1ae85f9110
commit be1419bfa7
4 changed files with 51 additions and 35 deletions

View File

@@ -13,7 +13,7 @@ import (
"github.com/valyala/fasthttp" "github.com/valyala/fasthttp"
) )
func SearchAnime(query string) ([]Anime, []byte, error) { func SearchAnimeData(query string) ([]Anime, []byte, error) {
var animes []Anime var animes []Anime
data, err := searchCache.Get(query) data, err := searchCache.Get(query)
if err != nil { if err != nil {

31
ober.go
View File

@@ -91,22 +91,17 @@ func AnimeGet(ctx *fasthttp.RequestCtx) {
ctx.SetStatusCode(fasthttp.StatusBadRequest) ctx.SetStatusCode(fasthttp.StatusBadRequest)
return return
} }
// search season first // search anime
anime, err := SearchSeason(malId) anime, err := SearchAnime(malId)
var bytes []byte
if err != nil {
_, bytes, err = GetAnimeDetailData(malId)
if err != nil { if err != nil {
addErrorToCtx(ctx, err) addErrorToCtx(ctx, err)
return return
} }
} else { bytes, err := json.Marshal(&anime)
bytes, err = json.Marshal(&anime)
if err != nil { if err != nil {
addErrorToCtx(ctx, err) addErrorToCtx(ctx, err)
return return
} }
}
_, err = ctx.Write(bytes) _, err = ctx.Write(bytes)
if err != nil { if err != nil {
addErrorToCtx(ctx, err) addErrorToCtx(ctx, err)
@@ -123,8 +118,8 @@ func AnimeSearchGet(ctx *fasthttp.RequestCtx) {
return return
} }
query := string(ctx.QueryArgs().Peek("q")) query := string(ctx.QueryArgs().Peek("q"))
// Search with query // search with query
_, bytes, err := SearchAnime(query) _, bytes, err := SearchAnimeData(query)
if err != nil { if err != nil {
addErrorToCtx(ctx, err) addErrorToCtx(ctx, err)
return return
@@ -271,16 +266,12 @@ func WatchExtendedGet(ctx *fasthttp.RequestCtx) {
animeUsersExtended := make([]AnimeUserExtended, 0) animeUsersExtended := make([]AnimeUserExtended, 0)
// make list advanced // make list advanced
for _, a := range animeUsers { for _, a := range animeUsers {
// Search season first // search anime
var data *Anime data, err := SearchAnime(a.Anime)
data, err := SearchSeason(a.Anime)
if err != nil {
data, _, err = GetAnimeDetailData(a.Anime)
if err != nil { if err != nil {
addErrorToCtx(ctx, err) addErrorToCtx(ctx, err)
return return
} }
}
animeUsersExtended = append(animeUsersExtended, AnimeUserExtended{ animeUsersExtended = append(animeUsersExtended, AnimeUserExtended{
Anime: a.Anime, Anime: a.Anime,
Users: a.Users, Users: a.Users,
@@ -545,17 +536,13 @@ func processUpdateReq(ctx *fasthttp.RequestCtx, update bool) {
// iterate sent animes // iterate sent animes
for i, anime := range animes { for i, anime := range animes {
// check if anime is in season // anime holen sie diese
_, err = SearchSeason(anime.Anime) _, err = SearchAnime(anime.Anime)
if err != nil {
// anime not in season => holen sie diese
_, _, err := GetAnimeDetailData(anime.Anime)
if err != nil { if err != nil {
ctx.WriteString(err.Error()) ctx.WriteString(err.Error())
ctx.SetStatusCode(fasthttp.StatusNotFound) ctx.SetStatusCode(fasthttp.StatusNotFound)
return return
} }
}
var animeData *AnimeUser var animeData *AnimeUser
// update or delete request // update or delete request

View File

@@ -39,9 +39,25 @@ func Arbeit() {
if newProgress == u.Progress { if newProgress == u.Progress {
continue continue
} }
// update db
color.Infof("%s progress von %d: %d -> %d\n", u.Username, a.Anime, u.Progress, newProgress) 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)) 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) err = UpdateUserAnimeProgress(a.Anime, u.MalID, newProgress, updated)
if err != nil { if err != nil {
color.Errorln(err.Error()) color.Errorln(err.Error())

View File

@@ -132,6 +132,19 @@ func SearchSeason(animeId int64) (*Anime, error) {
return nil, errors.New("anime not found") 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) { func FetchProgress(animeId, userId int64, username string, progress int) (int, time.Time, error) {
// check watching first // check watching first
list, _, err := GetUserAnimeListData(username, malApiStatusW) list, _, err := GetUserAnimeListData(username, malApiStatusW)