11 个版本 (6 个破坏性版本)
0.7.0-alpha1 | 2021 年 6 月 27 日 |
---|---|
0.6.0 | 2021 年 1 月 30 日 |
0.6.0-alpha1 | 2020 年 6 月 21 日 |
0.5.0-alpha2 | 2019 年 9 月 17 日 |
0.3.0 | 2019 年 7 月 27 日 |
#1662 在 网页编程
每月 39 次下载
57KB
1K SLoC
rs621
Rust 对 e621.net API 的绑定。
E621 是一个大型兽耳(拟人化)艺术在线档案。rs621 提供了对公共 HTTP API 的简单易用的绑定。它使用 reqwest 包来发送 HTTPS 请求,并暴露了一个异步 API。
功能
- 高度异步
- 方便的基于流的 API。
- 发布列表和搜索,使用网站上的任何搜索选项。
- 池列表和搜索。
- 无限制的结果数量(自动按顺序发送更多请求以超出每次请求 320 篇帖子的 API 限制)。
- 自动速率限制节流。
- 面向批处理的 API。
使用方法
注意:API 是高度异步的。如果您不熟悉这些概念,请查看 Rust 中的异步编程。
首先,创建一个 Client::
。您需要提供要使用的域名 URL,不带最后的斜杠(很可能是 https://e926.net 或其不安全版本)。您还必须为您的项目提供一个描述性的 User-Agent。官方 API 鼓励您包括您的 E621 用户名,以便在您的项目引起问题时可以联系您。
let client = Client::new("https://e926.net", "MyProject/1.0 (by username on e621)")?;
现在,您可以使用该客户端执行各种操作,例如使用 Client::
执行基本搜索。该函数返回一个 Stream
,类似于 Iterator
的异步版本。
use futures::prelude::*;
let mut post_stream = client.post_search(&["fluffy", "order:score"][..]).take(20);
while let Some(post) = post_stream.next().await {
println!("Post #{}", post?.id);
}
如果您有一组帖子 ID
let mut post_stream = client.get_posts(&[8595, 535, 2105, 1470]);
while let Some(post) = post_stream.next().await {
println!("Post #{}", post?.id);
}
应尽量减少API请求。使用rs621
提供的面向批量操作的方法可以帮您解决这个问题。例如,如果您想获取400个帖子ID,只需调用一次Client::get_posts
就足够了,并且将会更快。请不要在循环中重复调用。
要求
rs621
使用rust-openssl
库。它有一些要求
在Linux上
- OpenSSL 1.0.1、1.0.2或1.1.0,并包含头文件(参见rust-openssl)。
在Windows和macOS上
- 无。
有关更多详细信息,请参阅crates.io上的reqwest。
许可证
rs621
采用MIT许可证和Apache许可证(版本2.0)的条款,任选其一。
请参阅LICENSE-MIT和LICENSE-APACHE-2.0文件以获取完整内容。
依赖项
~6–21MB
~292K SLoC