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"
)
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 {

53
ober.go
View File

@@ -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

View File

@@ -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())

View File

@@ -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)