#e621 #客户端 #API客户端 #HTTP请求 #兽耳 #e926 #HTTP API

rs621

Rust 用于 E621 API(一个大型兽耳艺术在线档案)的包

11 个版本 (6 个破坏性版本)

0.7.0-alpha12021 年 6 月 27 日
0.6.0 2021 年 1 月 30 日
0.6.0-alpha12020 年 6 月 21 日
0.5.0-alpha22019 年 9 月 17 日
0.3.0 2019 年 7 月 27 日

#1662网页编程

每月 39 次下载

MIT/Apache

57KB
1K SLoC

rs621

build Crates.io Docs.rs Telegram

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