写了一个同步 SiYuan 内容块到 Anki 的工具, 分享给大家

本贴最后更新于 725 天前,其中的信息可能已经事过景迁

SYAK:同步 SiYuan 内容块到 Anki, 项目地址: https://github.com/why8023/SYAK

如果觉得有帮助, 麻烦点个 Star⭐

初次使用请提前备份 Anki, 以免数据误删!

Prerequisite

  1. Anki 需要安装 AnkiConnect 插件, code 为 2055492159, 默认端口 8765
  2. 支持 Python 3.9 以上版本
  3. SiYuan 默认端口为 6806
  4. 同步时, 保持 SiYuan 和 Anki 同时运行

Install

pip install syak

Usage

  1. 新建一个 card 文档块, 名字支持前后缀, 例如 @card
  2. 在需要制卡的内容块后面引用 card 文档块
  3. 制卡内容块为某个容器块下的叶子块时, 卡片正面为制卡内容块, 背面为整个容器块
  4. 制卡内容块为文档块下的叶子块时, 卡片正面制卡内容块, 背面为空
  5. 运行命令 syak -p SiYuan数据根路径(data目录的上一级) 即可同步
  6. 查看更多选项运行 syak -h

Demo

demo.gif

Feature

  1. 添加 SiYuan URL 跳转链接
  2. 自动更新, SiYuan 更新内容块后, Anki 自动更新
  3. 自动删除, 删除 card 引用块, Anki 自动删除
  4. 根据文档块层级自动建立 deck 层级
  5. 支持 media 文件
  6. 自动删除 empty deck
  7. 同步完成时, 发送同步信息给 SiYuan

Not Support (currently)

  1. Close
  2. 代码块语法高亮
  3. 超级块未适配‍

Changelog

  • 更新到 0.1.8 🎉 🎉 🎉

    升级:pip install -U syak

    1. 支持自定义 deck 层级

      使用方式: syak -p SiYuan数据根路径(data目录的上一级) --custom_deck 笔记本名/指定层级, 例如: 原始层级为 notebook/daily/2022/2022-12-28, 如果不想创建 20222022-12-08 两个 child deck, 可以使用 syak -p SiYuan数据根路径(data目录的上一级) --custom_deck notebook/daily

    2. 修复删除空行引起的错误格式

  • 更新到 0.1.7 🎉 🎉🎉

    升级:pip install -U syak

    1. 增加周期任务

      1. 运行周期任务 syak -p SiYuan数据根路径(data目录的上一级) -i (seconds), 例如每 5 分钟运行一次 syak -p SiYuan数据根路径(data目录的上一级) -i 300
    2. 后台运行

      1. Linux&macOS nohup syak -p SiYuan数据根路径(data目录的上一级) -i (seconds) &
      2. Windows start /b syak -p SiYuan数据根路径(data目录的上一级) -i (seconds) 未测试
  • 思源笔记

    思源笔记是一款隐私优先的个人知识管理系统,支持完全离线使用,同时也支持端到端加密同步。

    融合块、大纲和双向链接,重构你的思维。

    23014 引用 • 92576 回帖
2 操作
whying 在 2022-12-28 14:47:50 更新了该帖
whying 在 2022-12-22 11:38:05 更新了该帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • 感谢老铁分享好的原创工具!

    有个问题,就是把思源里面的“card”删掉后,anki 里面的卡片还存在,这是特意的吗?

    1 回复
  • whying
    作者

    删除的是 card 本身, 还是引用呢? 删除引用, 再次运行命令,是会删除引用 card 的内容块所对应的 Anki 卡片. 如果删除 card 本身后, 思源重建索引后, 其实引用关系还在, 只是原始被引用块不在了, 所以不会删除. 可能是我文档写的不好, 误解了 😂

    1 回复
  • 我没删 card 文档,删的是引用,但是我把 card 的属性命名为 @card,不知道是不是这个原因?

    1 回复
  • whying
    作者

    只要引用删除了, 应该就可以了, 重建索引后再试试呢.