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
//! # Shuller
//!
//! Crate for making links by something structures
//! and
//! Getting some data from links
//!
//! # Example
//!
//! ```
//! use shuller::prelude::*;
//!
//! async fn example() {
//! let instance: Posts = R34Params::init()
//! .positive_tags(vec!["dark", "fish"])
//! .negative_tags(vec!["ai_generated"])
//! .limit(3)
//! .download()
//! .await
//! .unwrap();
//! println!("{:#?}", instance.get_urls_ext())
//! }
//! ```
//!
//! # Example via macro
//!
//! ```
//! use shuller::prelude::*;
//!
//! async fn macro_normal() {
//! let instance = R34!(
//! p = vec!["dark", "fish"],
//! n = vec!["ai_generated"],
//! limit = 2,
//! page = 2
//! )
//! .download()
//! .await
//! .unwrap();
//! assert!(instance.get_f_urls().len() == 2)
//! }
//! async fn macro_download() {
//! let instance = R34!(D;
//! p = vec!["dark", "fish"],
//! n = vec!["ai_generated"],
//! limit = 2,
//! page = 2
//! )
//! .unwrap();
//! assert!(instance.get_f_urls().len() == 2)
//! }
//! async fn macro_url() {
//! let instance = R34!(U;
//! p = vec!["dark", "fish"],
//! n = vec!["ai_generated"],
//! limit = 2,
//! page = 2
//! );
//! assert!(instance.is_special())
//! }
//!
//! async fn random() {
//! let params = R34!(R;);
//! let url = R34!(R; D).unwrap();
//! let posts = R34!(R; U);
//! }
//! ```
/// Rules for making links
///
/// If you want to create you own rules
/// just add Traits [uller::MakeLink] and [uller::JsonDownload] from uller crate
/// and for output own structure you need create own struct which implemented [serde::Deserialize]
/// Just all that you need