blob: cbcb543fdc5ab641642fd5d8a5325993db911c13 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
|
package jikan
// JikanPagination represents the pagination data in Jikan API responses
type JikanPagination struct {
LastVisiblePage int `json:"last_visible_page"`
HasNextPage bool `json:"has_next_page"`
}
// JikanGenericMALStructure represents a common structure for various MAL entities
type JikanGenericMALStructure struct {
MALID int `json:"mal_id"`
Type string `json:"type"`
URL string `json:"url"`
Name string `json:"name"`
}
// JikanAnimeResponse represents the main anime response from Jikan API
type JikanAnimeResponse struct {
Data struct {
MALID int `json:"mal_id"`
URL string `json:"url"`
Images struct {
JPG struct {
ImageURL string `json:"image_url"`
SmallImageURL string `json:"small_image_url"`
LargeImageURL string `json:"large_image_url"`
} `json:"jpg"`
WebP struct {
ImageURL string `json:"image_url"`
SmallImageURL string `json:"small_image_url"`
LargeImageURL string `json:"large_image_url"`
} `json:"webp"`
} `json:"images"`
Trailer struct {
YoutubeID string `json:"youtube_id"`
URL string `json:"url"`
EmbedURL string `json:"embed_url"`
Images struct {
ImageURL string `json:"image_url"`
SmallImageURL string `json:"small_image_url"`
MediumImageURL string `json:"medium_image_url"`
LargeImageURL string `json:"large_image_url"`
MaximumImageURL string `json:"maximum_image_url"`
} `json:"images"`
} `json:"trailer"`
Approved bool `json:"approved"`
Titles []struct {
Type string `json:"type"`
Title string `json:"title"`
} `json:"titles"`
Title string `json:"title"`
TitleEnglish string `json:"title_english"`
TitleJapanese string `json:"title_japanese"`
TitleSynonyms []string `json:"title_synonyms"`
Type string `json:"type"`
Source string `json:"source"`
Episodes int `json:"episodes"`
Status string `json:"status"`
Airing bool `json:"airing"`
Aired struct {
From string `json:"from"`
To string `json:"to"`
Prop struct {
From struct {
Day int `json:"day"`
Month int `json:"month"`
Year int `json:"year"`
} `json:"from"`
To struct {
Day int `json:"day"`
Month int `json:"month"`
Year int `json:"year"`
} `json:"to"`
} `json:"prop"`
String string `json:"string"`
} `json:"aired"`
Duration string `json:"duration"`
Rating string `json:"rating"`
Score float64 `json:"score"`
ScoredBy int `json:"scored_by"`
Rank int `json:"rank"`
Popularity int `json:"popularity"`
Members int `json:"members"`
Favorites int `json:"favorites"`
Synopsis string `json:"synopsis"`
Background string `json:"background"`
Season string `json:"season"`
Year int `json:"year"`
Broadcast struct {
Day string `json:"day"`
Time string `json:"time"`
Timezone string `json:"timezone"`
String string `json:"string"`
} `json:"broadcast"`
Producers []JikanGenericMALStructure `json:"producers"`
Licensors []JikanGenericMALStructure `json:"licensors"`
Studios []JikanGenericMALStructure `json:"studios"`
Genres []JikanGenericMALStructure `json:"genres"`
ExplicitGenres []JikanGenericMALStructure `json:"explicit_genres"`
Themes []JikanGenericMALStructure `json:"themes"`
Demographics []JikanGenericMALStructure `json:"demographics"`
Relations []struct {
Relation string `json:"relation"`
Entry []JikanGenericMALStructure `json:"entry"`
} `json:"relations"`
Theme struct {
Openings []string `json:"openings"`
Endings []string `json:"endings"`
} `json:"theme"`
External []struct {
Name string `json:"name"`
URL string `json:"url"`
} `json:"external"`
Streaming []struct {
Name string `json:"name"`
URL string `json:"url"`
} `json:"streaming"`
} `json:"data"`
}
// JikanAnimeEpisode represents an episode from Jikan API
type JikanAnimeEpisode struct {
MALID int `json:"mal_id"`
URL string `json:"url"`
Title string `json:"title"`
TitleJapanese string `json:"title_japanese"`
TitleRomaji string `json:"title_romaji"`
Aired string `json:"aired"`
Score float64 `json:"score"`
Filler bool `json:"filler"`
Recap bool `json:"recap"`
ForumURL string `json:"forum_url"`
}
// JikanAnimeEpisodeResponse represents the episodes response from Jikan API
type JikanAnimeEpisodeResponse struct {
Pagination JikanPagination `json:"pagination"`
Data []JikanAnimeEpisode `json:"data"`
}
// JikanAnimeCharacterResponse represents the characters response from Jikan API
type JikanAnimeCharacterResponse struct {
Data []struct {
Character struct {
MALID int `json:"mal_id"`
URL string `json:"url"`
Images struct {
JPG struct {
ImageURL string `json:"image_url"`
SmallImageURL string `json:"small_image_url"`
} `json:"jpg"`
WebP struct {
ImageURL string `json:"image_url"`
SmallImageURL string `json:"small_image_url"`
} `json:"webp"`
} `json:"images"`
Name string `json:"name"`
} `json:"character"`
Role string `json:"role"`
VoiceActors []struct {
Person struct {
MALID int `json:"mal_id"`
URL string `json:"url"`
Images struct {
JPG struct {
ImageURL string `json:"image_url"`
} `json:"jpg"`
WebP struct {
ImageURL string `json:"image_url"`
} `json:"webp"`
} `json:"images"`
Name string `json:"name"`
} `json:"person"`
Language string `json:"language"`
} `json:"voice_actors"`
} `json:"data"`
}
|