1use serde::{Deserialize, Serialize};
2
3use crate::{errors::Error, Client};
4
5impl Client {
6 pub async fn stats(&self) -> Result<StatsDTO, Error> {
21 self.get(&format!("https://animebytes.tv/api/stats/{}", self.torrent_pass))
22 .await
23 }
24}
25
26#[derive(Debug, Serialize, Deserialize)]
27pub struct StatsDTO {
28 pub success: bool,
29 pub git: String,
30 pub api: Api,
31 pub freeleech: Freeleech,
32 pub stats: StatsClass,
33}
34
35#[derive(Debug, Serialize, Deserialize)]
36pub struct Api {
37 pub version: String,
38 pub compat: i64,
39}
40
41#[derive(Debug, Serialize, Deserialize)]
42pub struct Freeleech {
43 pub sitewide: i64,
44 pub personal: i64,
45}
46
47#[derive(Debug, Serialize, Deserialize)]
48pub struct StatsClass {
49 pub site: Site,
50 pub personal: Personal,
51}
52
53#[derive(Debug, Serialize, Deserialize)]
54pub struct Personal {
55 pub yen: Yen,
56 pub hnrs: Hnrs,
57 pub upload: Load,
58 pub download: Load,
59 pub torrents: PersonalTorrents,
60 pub invited: i64,
61 pub forums: Forums,
62 pub pcomments: i64,
63 pub class: String,
64}
65
66#[derive(Debug, Serialize, Deserialize)]
67pub struct Load {
68 pub raw: i64,
69 pub accountable: i64,
70}
71
72#[derive(Debug, Serialize, Deserialize)]
73pub struct Forums {
74 pub posts: i64,
75 pub topics: i64,
76}
77
78#[derive(Debug, Serialize, Deserialize)]
79pub struct Hnrs {
80 pub potential: i64,
81 pub active: i64,
82}
83
84#[derive(Debug, Serialize, Deserialize)]
85pub struct PersonalTorrents {
86 pub seeding: i64,
87 pub leeching: i64,
88 pub snatched: i64,
89 pub uploaded: i64,
90 pub pruned: i64,
91 pub ssize: i64,
92 pub sttime: i64,
93 pub satime: i64,
94}
95
96#[derive(Debug, Serialize, Deserialize)]
97pub struct Yen {
98 pub day: i64,
99 pub hour: i64,
100 pub now: i64,
101}
102
103#[derive(Debug, Serialize, Deserialize)]
104pub struct Site {
105 pub torrents: SiteTorrents,
106 pub requests: Requests,
107 pub users: Users,
108 pub peers_uniq: Peers,
109 pub peers: Peers,
110 pub classes: Classes,
111 pub forums: Forums,
112 pub donations: Donations,
113}
114
115#[derive(Debug, Serialize, Deserialize)]
116pub struct Classes {
117 #[serde(rename = "Aka-chan")]
118 pub aka_chan: i64,
119 #[serde(rename = "User")]
120 pub user: i64,
121 #[serde(rename = "Power User")]
122 pub power_user: i64,
123 #[serde(rename = "Elite")]
124 pub elite: i64,
125 #[serde(rename = "Torrent Master")]
126 pub torrent_master: i64,
127 #[serde(rename = "Legend")]
128 pub legend: i64,
129 #[serde(rename = "VIP")]
130 pub vip: i64,
131 #[serde(rename = "Sensei")]
132 pub sensei: i64,
133}
134
135#[derive(Debug, Serialize, Deserialize)]
136pub struct Donations {
137 pub currency: String,
138 pub goal: i64,
139 pub collected: i64,
140}
141
142#[derive(Debug, Serialize, Deserialize)]
143pub struct Peers {
144 pub seeders: i64,
145 pub leechers: i64,
146}
147
148#[derive(Debug, Serialize, Deserialize)]
149pub struct Requests {
150 pub filled: i64,
151 pub all: i64,
152}
153
154#[derive(Debug, Serialize, Deserialize)]
155pub struct SiteTorrents {
156 pub active: i64,
157 pub all: i64,
158 pub snatches: i64,
159}
160
161#[derive(Debug, Serialize, Deserialize)]
162pub struct Users {
163 pub enabled: i64,
164 pub now: i64,
165 pub day: i64,
166 pub week: i64,
167 pub month: i64,
168 pub irc: i64,
169}