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
use serde::{Deserialize, Serialize};
use serde_json::Value;
use std::collections::HashMap;
pub mod fields;
pub mod options;
#[derive(Serialize, Deserialize, Debug)]
pub struct AnimeList {
pub data: Vec<ListNode>,
paging: HashMap<String, Value>,
pub season: Option<HashMap<String, Value>>,
}
#[derive(Serialize, Deserialize, Debug)]
pub struct ListNode {
pub node: Anime,
pub list_status: Option<ListStatus>,
pub ranking: Option<HashMap<String, u32>>,
}
#[derive(Serialize, Deserialize, Debug)]
pub struct ListStatus {
pub status: Option<String>,
pub num_episodes_watched: Option<u32>,
pub score: Option<u8>,
pub updated_at: Option<String>,
pub is_rewatching: Option<bool>,
pub priority: Option<u32>,
pub rewatch_value: Option<u32>,
pub tags: Option<Vec<String>>,
pub comments: Option<String>,
}
#[derive(Serialize, Deserialize, Debug)]
pub struct Anime {
pub id: u32,
pub title: String,
pub main_picture: HashMap<String, Value>,
}
#[derive(Serialize, Deserialize, Debug)]
pub struct AnimeDetails {
#[serde(flatten)]
pub show: Anime,
pub alternative_titles: Option<AlternativeTitles>,
pub start_date: Option<String>,
pub end_date: Option<String>,
pub synopsis: Option<String>,
pub mean: Option<f32>,
pub rank: Option<u32>,
pub num_list_users: Option<u32>,
pub num_scoring_users: Option<u32>,
pub nsfw: Option<String>,
pub created_at: Option<String>,
pub updated_at: Option<String>,
pub media_type: Option<String>,
pub status: Option<String>,
pub genres: Option<Vec<HashMap<String, Value>>>,
pub my_list_status: Option<ListStatus>,
pub num_episodes: Option<u32>,
pub start_season: Option<HashMap<String, Value>>,
pub broadcast: Option<HashMap<String, String>>,
pub source: Option<String>,
pub average_episode_duration: Option<u32>,
pub rating: Option<String>,
pub pictures: Option<Vec<HashMap<String, String>>>,
pub background: Option<String>,
pub related_anime: Option<Vec<Related>>,
pub related_manga: Option<Vec<HashMap<String, Value>>>,
pub recommendations: Option<Vec<Recommnendation>>,
pub studios: Option<Vec<HashMap<String, Value>>>,
pub statistics: Option<Stats>,
}
#[derive(Serialize, Deserialize, Debug)]
pub struct Stats {
pub status: HashMap<String, String>,
pub num_list_users: u32,
}
#[derive(Serialize, Deserialize, Debug)]
pub struct AlternativeTitles {
pub synonyms: Vec<String>,
#[serde(flatten)]
pub languages: HashMap<String, String>,
}
#[derive(Serialize, Deserialize, Debug)]
pub struct Related {
pub node: Anime,
pub relation_type: String,
pub relation_type_formatted: String,
}
#[derive(Serialize, Deserialize, Debug)]
pub struct Recommnendation {
pub node: Anime,
pub num_recommendations: u32,
}
#[derive(Serialize, Deserialize, Debug)]
pub struct User {
pub id: u32,
pub name: String,
pub location: String,
pub joined_at: String,
pub anime_statistics: HashMap<String, f32>,
}
#[derive(Serialize, Deserialize, Debug)]
pub struct ForumBoards {
pub categories: Vec<HashMap<String, Value>>,
}
#[derive(Serialize, Deserialize, Debug)]
pub struct TopicDetails {
pub data: Vec<HashMap<String, Value>>,
pub paging: HashMap<String, Value>,
}
#[derive(Serialize, Deserialize, Debug)]
pub struct ForumTopics {
pub data: Vec<HashMap<String, Value>>,
pub paging: Vec<HashMap<String, Value>>,
}