animebytes_rs/models/
stats.rs

1use serde::{Deserialize, Serialize};
2
3use crate::{errors::Error, Client};
4
5impl Client {
6    /// Returns basic information about the tracker, auth required.
7    /// ```rust
8    /// # async fn run() -> Result<(), animebytes_rs::errors::Error> {
9    /// let client = animebytes_rs::Client::new("password", "username")?;
10    ///
11    /// let search_result = client.stats().await?;
12    ///
13    /// println!("{:?}", search_result);
14    /// Ok(())
15    /// # }
16    /// ```
17    /// # Errors
18    /// This method can fail if the torrent password is invalid or if there is a
19    /// general http error.
20    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}