diff --git a/knecht.go b/knecht.go index 01a755a..fa89ddc 100644 --- a/knecht.go +++ b/knecht.go @@ -8,6 +8,7 @@ import ( "strconv" "strings" "time" + "unicode/utf8" "github.com/gookit/color" "github.com/valyala/fasthttp" @@ -18,19 +19,29 @@ func SearchAnimeData(query string) ([]Anime, []byte, error) { data, err := searchCache.Get(query) if err != nil { err = nil - dataMal, err := GetDataMal(searchApiMal + query + "&fields=id,title,main_picture,alternative_titles,start_date,end_date,synopsis,mean,rank,popularity,num_list_users,num_scoring_users,nsfw,media_type,status,genres,my_list_status,num_episodes,start_season,broadcast,source,average_episode_duration,rating,studios&limit=100") - if err != nil { - return nil, nil, err - } - var animeList AnimeListMal animes = make([]Anime, 0) - err = json.Unmarshal(dataMal, &animeList) - if err != nil { - return nil, nil, err + parseId, err := strconv.ParseInt(query, 10, 64) + if err == nil && parseId > 0 { + anime, err := SearchAnime(parseId) + if err == nil { + animes = append(animes, *anime) + } } - // convert to anime - for _, a := range animeList.Data { - animes = append(animes, MalConvert(&a.Node)) + err = nil + if utf8.RuneCountInString(query) > 2 { + dataMal, err := GetDataMal(searchApiMal + query + "&fields=id,title,main_picture,alternative_titles,start_date,end_date,synopsis,mean,rank,popularity,num_list_users,num_scoring_users,nsfw,media_type,status,genres,my_list_status,num_episodes,start_season,broadcast,source,average_episode_duration,rating,studios&limit=100") + if err != nil { + return nil, nil, err + } + var animeList AnimeListMal + err = json.Unmarshal(dataMal, &animeList) + if err != nil { + return nil, nil, err + } + // convert to anime + for _, a := range animeList.Data { + animes = append(animes, MalConvert(&a.Node)) + } } data, err = json.Marshal(animes) if err != nil {