animebytes_rs/models/
search.rs1use std::collections::HashMap;
2
3use serde::{Deserialize, Serialize};
4
5use crate::{errors, Client};
6
7impl Client {
8 pub async fn search_anime(&self, search: &str) -> Result<SearchDTO, errors::Error> {
24 self.get(&format!(
25 "https://animebytes.tv/scrape.php?torrent_pass={}&username={}&type=anime&searchstr={}",
26 self.torrent_pass, self.username, search
27 ))
28 .await
29 }
30}
31
32#[derive(Debug, Serialize, Deserialize)]
33pub struct SearchDTO {
34 #[serde(rename = "Matches")]
35 pub matches: i64,
36 #[serde(rename = "Limit")]
37 pub limit: i64,
38 #[serde(rename = "Results")]
39 pub results: String,
40 #[serde(rename = "Groups")]
41 pub groups: Vec<Group>,
42}
43
44#[derive(Debug, Serialize, Deserialize)]
45pub struct Group {
46 #[serde(rename = "ID")]
47 pub id: i64,
48 #[serde(rename = "CategoryName")]
49 pub category_name: CategoryName,
50 #[serde(rename = "FullName")]
51 pub full_name: String,
52 #[serde(rename = "GroupName")]
53 pub group_name: String,
54 #[serde(rename = "SeriesID")]
55 pub series_id: String,
56 #[serde(rename = "SeriesName")]
57 pub series_name: String,
58 #[serde(rename = "Artists")]
59 pub artists: Option<serde_json::Value>,
60 #[serde(rename = "Year")]
61 pub year: String,
62 #[serde(rename = "Image")]
63 pub image: String,
64 #[serde(rename = "Synonymns")]
65 pub synonymns: Synonymns,
66 #[serde(rename = "Snatched")]
67 pub snatched: i64,
68 #[serde(rename = "Comments")]
69 pub comments: i64,
70 #[serde(rename = "Links")]
71 pub links: LinksUnion,
72 #[serde(rename = "Votes")]
73 pub votes: i64,
74 #[serde(rename = "AvgVote")]
75 pub avg_vote: f64,
76 #[serde(rename = "Associations")]
77 pub associations: Option<serde_json::Value>,
78 #[serde(rename = "Description")]
79 pub description: String,
80 #[serde(rename = "DescriptionHTML")]
81 pub description_html: String,
82 #[serde(rename = "EpCount")]
83 pub ep_count: i64,
84 #[serde(rename = "StudioList")]
85 pub studio_list: Option<String>,
86 #[serde(rename = "PastWeek")]
87 pub past_week: i64,
88 #[serde(rename = "Incomplete")]
89 pub incomplete: bool,
90 #[serde(rename = "Ongoing")]
91 pub ongoing: bool,
92 #[serde(rename = "Tags")]
93 pub tags: Vec<String>,
94 #[serde(rename = "Torrents")]
95 pub torrents: Vec<Torrent>,
96}
97
98#[derive(Debug, Serialize, Deserialize)]
99pub struct LinksClass {
100 #[serde(rename = "AniDB")]
101 pub ani_db: Option<String>,
102 #[serde(rename = "ANN")]
103 pub ann: Option<String>,
104 #[serde(rename = "Wikipedia")]
105 pub wikipedia: Option<String>,
106 #[serde(rename = "MAL")]
107 pub mal: Option<String>,
108 #[serde(rename = "Manga-Updates")]
109 pub manga_updates: Option<String>,
110}
111
112#[derive(Debug, Serialize, Deserialize)]
113pub struct Torrent {
114 #[serde(rename = "ID")]
115 pub id: i64,
116 #[serde(rename = "EditionData")]
117 pub edition_data: EditionData,
118 #[serde(rename = "RawDownMultiplier")]
119 pub raw_down_multiplier: f64,
120 #[serde(rename = "RawUpMultiplier")]
121 pub raw_up_multiplier: f64,
122 #[serde(rename = "Link")]
123 pub link: String,
124 #[serde(rename = "Property")]
125 pub property: String,
126 #[serde(rename = "Snatched")]
127 pub snatched: i64,
128 #[serde(rename = "Seeders")]
129 pub seeders: i64,
130 #[serde(rename = "Leechers")]
131 pub leechers: i64,
132 #[serde(rename = "Size")]
133 pub size: i64,
134 #[serde(rename = "FileCount")]
135 pub file_count: i64,
136 #[serde(rename = "UploadTime")]
137 pub upload_time: String,
138}
139
140#[derive(Debug, Serialize, Deserialize)]
141pub struct EditionData {
142 #[serde(rename = "EditionTitle")]
143 pub edition_title: String,
144 #[serde(rename = "ReleaseDate")]
145 pub release_date: Option<String>,
146}
147
148#[derive(Debug, Serialize, Deserialize)]
149#[serde(untagged)]
150pub enum LinksUnion {
151 AnythingArray(Vec<Option<serde_json::Value>>),
152 LinksClass(LinksClass),
153}
154
155#[derive(Debug, Serialize, Deserialize)]
156#[serde(untagged)]
157pub enum Synonymns {
158 StringArray(Vec<String>),
159 StringMap(HashMap<String, String>),
160}
161
162#[derive(Debug, Serialize, Deserialize)]
163pub enum CategoryName {
164 Anime,
165 Artbook,
166 Game,
167 #[serde(rename = "Light Novel")]
168 LightNovel,
169 Manga,
170}