aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVidhu Kant Sharma <vidhukant@protonmail.ch>2022-01-30 15:44:32 +0530
committerVidhu Kant Sharma <vidhukant@protonmail.ch>2022-01-30 15:44:32 +0530
commite38b4ae7575df9be1a89265e66ad3808a4443082 (patch)
treef30943e4cbe8c6084b88261bc4cb51a48001eec2
parentca4577376adc49d87d545ecb338e1d1674fdbc3a (diff)
Pushing anime.go with /anime endpoint added
-rw-r--r--.gitignore3
-rw-r--r--anime/anime.go40
-rw-r--r--anime/structs.go92
-rw-r--r--go.mod3
4 files changed, 138 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
index 66fd13c..148b080 100644
--- a/.gitignore
+++ b/.gitignore
@@ -13,3 +13,6 @@
# Dependency directories (remove the comment below to include it)
# vendor/
+
+
+main.go
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"`
+}
diff --git a/go.mod b/go.mod
new file mode 100644
index 0000000..5fe48c9
--- /dev/null
+++ b/go.mod
@@ -0,0 +1,3 @@
+module github.com/MikunoNaka/mal2go
+
+go 1.17