#anki #bridge #add-on #flashcards #http-request #ankiconnect

anki_bridge

AnkiBridge 是一个 Rust 库,提供 Rust 代码与 Anki 应用之间的桥梁,实现 HTTP 通信和无缝数据传输

21 个版本 (7 个破坏性更新)

0.8.0 2024 年 3 月 16 日
0.7.1 2023 年 7 月 22 日
0.6.1 2023 年 7 月 22 日

#274网络编程

Download history 20/week @ 2024-06-01 6/week @ 2024-06-08 1/week @ 2024-06-15 117/week @ 2024-07-06 24/week @ 2024-07-13 1/week @ 2024-07-20

每月 142 次下载

MIT 许可证

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