21 个版本 (7 个破坏性更新)
0.8.0 | 2024 年 3 月 16 日 |
---|---|
0.7.1 | 2023 年 7 月 22 日 |
0.6.1 | 2023 年 7 月 22 日 |
#274 在 网络编程
每月 142 次下载
195KB
1.5K SLoC
AnkiBridge
AnkiBridge 是一个 Rust 库,充当你的 Rust 代码和 Anki 应用之间的桥梁,通过利用 AnkiConnect 扩展来建立 HTTP 连接。该库能够实现数据的无缝传输,并通过 Rust 与 Anki 进行交互。
特性
AnkiBridge 提供以下特性
- 通过 AnkiConnect 扩展建立与 Anki 的连接。
- 向 Anki 发送各种操作的请求。
- 从 Anki 获取数据和统计信息。
- 与 Anki 中的卡片和牌组进行交互。
安装
要在 Rust 项目中使用 AnkiBridge,请将以下行添加到您的 Cargo.toml
文件中
[dependencies]
anki_bridge = { version = "0.7", features = ["ureq_blocking"] }
此外,请确保您已将 Anki 应用程序安装在您的系统上,并且 Anki 中已安装 AnkiConnect 扩展。
请注意,Anki 必须在您的计算机上打开并运行,AnkiBridge 才能成功建立连接。
用法
要建立连接并使用 Anki 执行操作,您可以在 Rust 代码中使用 AnkiBridge 库提供的函数和结构。以下是一个基本示例
use std::collections::HashMap;
use anki_bridge::prelude::*;
fn main() {
let client = AnkiClient::default();
let decks: Vec<String> = client.request(DeckNamesRequest {}).unwrap();
println!("{decks:#?}");
let deck_stats: HashMap<usize, GetDeckStatsResponse> =
client.request(GetDeckStatsRequest { decks }).unwrap();
println!("{deck_stats:#?}");
}
模拟数据
use anki_bridge::{mock::*, prelude::*};
let client = MockAnkiClient::<FindCardsRequest, _>::new_mock(|params| {
Ok(vec![123, params.query.len()])
});
let response = client.request(FindCardsRequest {
query: "Card Deck Name".to_string(),
});
assert_eq!(
vec![123, "Card Deck Name".len()],
response.unwrap()
);
待办事项
AnkiBridge 是一个持续进行的项目,有计划进行未来的开发。以下是待办事项列表中的即将到来的事项
- 卡片操作
- 牌组操作
- 图形操作
- 媒体操作
- 其他操作
- 模型操作
- 笔记操作
- 统计操作
- ureq 同步 HTTP 客户端
- reqwest 异步 HTTP 客户端
- 可模拟客户端
- 测试(真实的 json 测试,模拟已正常工作)
欢迎为AnkiBridge做出贡献。您可以通过在 GitLab 仓库 上打开问题或提交拉取请求来贡献。
变更日志
整个变更日志可以在 CHANGELOG.md 文件中找到。
特别感谢
感谢 VaiTon 有这样的想法,即仅实现一个特型(trait),而不是编写一个函数。这帮助我编写了一个可模拟的客户(mockable client)并清理了所有内容。您可以在 GitHub 上找到他对 AnkiConnect 桥接的实现。 :)
许可协议
AnkiBridge 在 MIT 许可协议 下发布。更多信息,请参阅 LICENSE 文件。
联系方式
如有任何问题或查询,请联系项目负责人 [email protected]。
依赖项
~0.7–13MB
~160K SLoC