From e38b4ae7575df9be1a89265e66ad3808a4443082 Mon Sep 17 00:00:00 2001 From: Vidhu Kant Sharma Date: Sun, 30 Jan 2022 15:44:32 +0530 Subject: Pushing anime.go with /anime endpoint added --- anime/anime.go | 40 ++++++++++++++++++++++++ anime/structs.go | 92 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 132 insertions(+) create mode 100644 anime/anime.go create mode 100644 anime/structs.go (limited to 'anime') diff --git a/anime/anime.go b/anime/anime.go new file mode 100644 index 0000000..5d054ab --- /dev/null +++ b/anime/anime.go @@ -0,0 +1,40 @@ +package anime + +import ( + "encoding/json" + "fmt" + "io/ioutil" + "log" + "net/http" +) + +func GetAnimeById(token string, animeId int) Anime { + client := &http.Client{} + endpoint := fmt.Sprintf("https://api.myanimelist.net/v2/anime/%d?fields=id,title,main_picture,alternative_titles,start_date,end_date,synopsis,mean,rank,popularity,num_list_users,num_scoring_users,nsfw,created_at,updated_at,media_type,status,genres,my_list_status,num_episodes,start_season,broadcast,source,average_episode_duration,rating,pictures,background,related_anime,related_manga,recommendations,studios,statistics", animeId) + + // generate request + req, err := http.NewRequest("GET", endpoint, nil) + if err != nil { + log.Fatal(err) + } + req.Header.Add("Authorization", token) + // req.Header.Add("Content-Type", "application/json") + + // do request + res, err := client.Do(req) + if err != nil { + log.Fatal(err) + } + defer res.Body.Close() + + body, err := ioutil.ReadAll(res.Body) + if err != nil { + log.Fatal(err) + } + data := string(body) + + var anime Anime + json.Unmarshal([]byte(data), &anime) + + return anime +} diff --git a/anime/structs.go b/anime/structs.go new file mode 100644 index 0000000..bb35ded --- /dev/null +++ b/anime/structs.go @@ -0,0 +1,92 @@ +package anime + +type AnimePicture struct { + Medium string `json:"large"` + Large string `json:"medium"` +} + +type StatusStatistics struct { + Watching int `json:"watching"` + Completed int `json:"completed"` + OnHold int `json:"on_hold"` + Dropped int `json:"dropped"` + PlanToWatch int `json:"plan_to_watch"` +} + +type AnimeStatistics struct { + Status StatusStatistics `json:"status"` + NumListUsers int `json:"num_list_users"` +} + +type Genre struct { + Id int `json:"id"` + Name string `json:"name"` +} + +type ListStatus struct { + Status string `json:"status"` + Score int `json:"score"` + EpWatched int `json:"num_episodes_watched"` + IsRewatching bool `json:"is_rewatching"` + UpdatedAt string `json:"updated_at"` +} + +type Season struct { + Year int `json:"year"` + Name string `json:"season"` +} + +type Broadcast struct { + Day string `json:"day_of_the_week"` + Time string `json:"start_time"` +} + +type Related struct { + Anime Anime `json:"node"` + RelationType string `json:"relation_type"` + RelationTypeFormatted string `json:"relation_type_formatted"` +} + +type Studio struct { + Id int `json:"id"` + Name string `json:"name"` +} + +type Recommendation struct { + Anime Anime `json:"node"` + Num int `json:"num_recommendations"` +} + +type Anime struct { + Id int `json:"id"` + Title string `json:"title"` + MainPicture AnimePicture `json:"main_picture"` + AltTitles []string `json:"alternative_titles"` + StartDate string `json:"start_date"` + EndDate string `json:"end_date"` + Synopsis string `json:"synopsis"` + MeanScore float32 `json:"mean"` + Rank int `json:"rank"` + Popularity int `json:"popularity"` + NumListUsers int `json:"num_list_users"` + NumScoringUsers int `json:"num_scoring_users"` + NsfwStatus string `json:"nsfw"` // find out what values are there + CreatedAt string `json:"created_at"` + UpdatedAt string `json:"updated_at"` + MediaType string `json:"media_type"` + Status string `json:"status"` + Genres []Genre `json:"genres"` + MyListStatus ListStatus `json:"my_list_status"` + NumEpisodes int `json:"num_episodes"` + StartSeason Season `json:"start_season"` + Broadcast Broadcast `json:"broadcast"` + Source string `json:"source"` + DurationSeconds int `json:"average_episode_duration"` + Rating string `json:"rating"` + Pictures []AnimePicture `json:"pictures"` + Background string `json:"background"` + RelatedAnime []Related `json:"related_anime"` + Recommendations []Recommendation `json:"recommendations"` + Studios []Studio `json:"studios"` + Statistics AnimeStatistics `json:"statistics"` +} -- cgit v1.2.3