
LunaTranslator 大容量制卡同步方案使用 Anki 本地同步服务器替代 AnkiWeb【免费下载链接】LunaTranslator视觉小说翻译器 / Visual Novel Translator项目地址: https://gitcode.com/GitHub_Trending/lu/LunaTranslatorLunaTranslator 内置的制卡模板通过 AnkiConnect 把查词结果写入 Anki卡片越积越多后本地集合体积可能超出 AnkiWeb 官方云同步的体积限制。本篇指南讲解如何启用 Anki 自带的本地同步服务器把电脑端与手机端的卡组数据通过局域网直连同步避开云端体积限制并给出配套的环境变量、批处理脚本、VBS 后台运行方案与底层源码佐证。背景为什么需要本地同步服务器LunaTranslator 的查词窗口内置 Anki 制卡功能它不直接操作 Anki 数据库而是通过 AnkiConnect 客户端封装调用 AnkiConnect 插件提供的 HTTP 接口完成建卡。从源码可以看到LunaTranslator 默认以8765端口、127.0.0.1地址向本机 Anki 发送请求见 ankiconnect.py并在查词界面配置中读取ankiconnect.port、ankiconnect.host两项配置。当使用 LunaTranslator 内置模板添加的卡片数量较多时整个 Anki 集合的体积可能超出 AnkiWeb 同步体积限制导致电脑与手机之间无法通过官方云同步。此时可以改用 Anki 自带的本地同步服务器--syncserver模式服务器运行在电脑上手机与电脑处于同一局域网即可直连同步不再依赖 AnkiWeb 云端中转因此不受云同步体积限制。这种方案的本质是把电脑当作同步服务端手机作为客户端二者的集合数据通过局域网传输。需要注意的是本地同步服务器不代替 AnkiConnect制卡仍然走 AnkiConnect 写进电脑上的 Anki本地同步服务器只负责把电脑上的集合同步到其他设备。一、开启本地同步服务器1.1 准备启动脚本在 Windows 的cmd中运行以下命令启动本地同步服务器set SYNC_PORT8080 set SYNC_USER1user:pass set MAX_SYNC_PAYLOAD_MEGS10000000 %LOCALAPPDATA%\Programs\Anki\anki.exe --syncserver pause各环境变量与命令的含义如下项目作用说明SYNC_PORT同步服务器占用的端口号默认8080若该端口被占用导致启动失败改为其他端口后续所有配置电脑端与手机端都要同步修改SYNC_USER1自定义的登录账号格式为用户名:密码例如user:pass可随时更改之后每次登录同步服务器都要填写这组凭据MAX_SYNC_PAYLOAD_MEGS允许的最大同步载荷体积MB示例中设为10000000用于放宽单次同步的数据量上限%LOCALAPPDATA%\Programs\Anki\anki.exe --syncserver以同步服务器模式启动 Anki%LOCALAPPDATA%\Programs\Anki\anki.exe是 Anki 的默认安装路径若你的 Anki 安装在其他位置请自行替换为该路径提示pause的作用是让窗口在服务器退出前保持打开方便查看运行日志与错误信息。1.2 保存为批处理脚本为了每次启动更方便可以把上述代码保存为一个XXX.bat文件文件名可任意例如anki_sync_server.bat之后双击即可运行。1.3 启动成功与失败的判断启动成功窗口停留在运行状态服务器持续监听8080端口等待客户端连接。启动失败最常见原因是SYNC_PORT指定的端口已被其他程序占用此时会报错退出。解决办法是更换一个未被占用的端口号例如8081并记住该端口后续电脑端与手机端的同步地址都要使用新端口。建议先用 bat 版本在前台运行并确认无误再考虑后台化。1.4 隐藏控制台、后台运行可选如果希望服务器在后台静默运行、不弹出黑色控制台窗口可以再创建一个YYY.vbs文件写入以下内容Set objShell WScript.CreateObject(WScript.Shell) objShell.Run XXX.bat, 0, False其中XXX.bat必须与第 1.2 节保存的批处理文件名完全一致不含路径时默认在当前目录查找。双击YYY.vbs即可后台运行。注意VBS 后台运行时看不到任何错误信息排错困难。建议先用 bat 版本调试通过后再改用 VBS 方式常驻后台。二、将电脑上的数据上传到本地同步服务器首次启动本地同步服务器时服务器端内容是空白的。必须先把电脑上的 Anki 数据上传到本地服务器之后手机才能从该服务器下载数据。2.1 修改 Anki 的同步服务器地址打开 Anki进入设置→同步将自托管同步服务器自定义同步服务器地址修改为http://127.0.0.1:8080如果第 1.1 节修改过SYNC_PORT则这里的8080也要改为同样的端口号。关闭 Anki 后重新打开使上述修改生效。2.2 登录并上传数据重启 Anki 后使用第 1.1 节设置的用户名和密码即user:pass中的两部分进行登录然后按照 Anki 的同步提示把电脑上的数据同步/上传到本地同步服务器即可。此时数据已进入服务器等待其他客户端下载。三、在手机上从本地同步服务器下载数据3.1 确保手机与电脑处于同一局域网手机和电脑必须能互相访问通常做法是连接到同一个路由器同一 WiFi。如果两边同时连接校园网等隔离网络时仍无法通信可以在电脑上开启移动热点让手机连接电脑的热点即可保证二者在同一局域网内。3.2 获取电脑的 IP 地址在电脑的cmd中运行以下命令可以列出所有候选的 IPv4 地址for /f tokens2 delims: %A in (ipconfig ^| findstr /i IPv4) do for /f tokens* %B in (%A) do echo %B若输出多个 IP说明电脑有多个网卡/网络接口后续逐一测试即可。注意该命令中的%A、%B适用于命令行直接执行如果写入.bat文件需将百分号写成%%A、%%B。3.3 在手机 Anki 中设置同步服务器打开手机上的 Anki进入设置→同步将自定义同步服务器地址改为http://电脑的ip地址:8080其中电脑的ip地址为上一步获取的 IP8080为第 1.1 节设置的SYNC_PORT。设置完成后使用前面设置的用户名和密码user:pass登录然后按照 Anki 的提示执行同步即可把电脑上的卡组数据下载到手机。3.4 同步失败的排查如果手机同步失败最常见的原因是填写的 IP 地址错误例如电脑 IP 发生了变化、填成了其他网卡的 IP。更换正确的 IP 地址后重新登录测试即可。四、与 LunaTranslator 制卡链路的关系与源码佐证本地同步服务器只解决“多设备之间的数据同步”问题而 LunaTranslator 的制卡功能本身依赖 AnkiConnect。理解这条链路有助于判断问题出在哪一环LunaTranslator 查词窗口 ↓ AnkiConnect HTTP 请求默认 127.0.0.1:8765 本机 AnkiAnkiConnect 插件 ↓ 集合数据 本地同步服务器--syncserver端口 8080 ↓ 局域网 手机 Anki客户端从源码可以进一步印证这一架构AnkiConnect 客户端封装ankiconnect.py 定义了invoke()与Deck、Card、Model、Note等类通过http://127.0.0.1:8765调用createDeck、createModel、addNote、deleteNotes等 AnkiConnect 动作version: 6协议。其中Note.add会把audio、picture、video三类媒体随卡片一并提交。制卡配置项showword.py 中的addanki()读取ankiconnect配置段包括默认端口8765、默认主机127.0.0.1、默认模型名modelofluna、默认牌组lunadeck默认配置文件中对应存在ankiconnect配置段DeckNameS: [lunadeck]、tags: []。内置制卡模板正面模板 front.html 与背面模板 back.html 定义了{{word}}、{{rubytextHtml}}、{{example_sentence}}、{{screenshot}}、{{remarks}}、{{audio_for_word}}等字段配合 style.css 渲染showword.py 中的tryloadankitemplates()负责加载这些模板并写入 Anki 模型。自定义制卡生成器在查词窗口开启“使用自定义制卡生成器”后LunaTranslator 会加载用户提供的 myanki_v3.py 作为钩子其AnkiFields()与ParseFieldsData()可让用户改写写入 Anki 的字段与媒体数据。这也解释了为什么制卡量增大后会触及 AnkiWeb 同步体积限制LunaTranslator 的模板默认携带单词音频、例句音频与游戏截图screenshot等媒体单张卡片体积较大。因此当云端同步受限时按本文方案切换到本地同步服务器是更合适的做法。五、常见问题速查现象可能原因处理办法bat 启动服务器即退出SYNC_PORT端口被占用更换端口号并同步修改电脑端与手机端的同步地址电脑端登录失败用户名/密码与SYNC_USER1不一致使用user:pass格式中的用户名与密码登录电脑端同步无反应修改同步地址后未重启 Anki关闭并重新打开 Anki 后再登录同步手机端连接不上手机与电脑不在同一局域网或 IP 填写错误连同一路由器/电脑热点用ipconfig命令核对 IP 后重新登录手机端同步失败电脑 IP 变化如 DHCP 重新分配重新获取电脑 IP 并更新手机端同步地址本地同步服务器的使用前提是电脑端 Anki 需长期运行服务器即 Anki 本身且手机端与电脑端网络互通。若还需了解 LunaTranslator 与 AnkiConnect 的完整集成步骤安装 AnkiConnect 插件、查词制卡入口可参见 Anki 集成说明。【免费下载链接】LunaTranslator视觉小说翻译器 / Visual Novel Translator项目地址: https://gitcode.com/GitHub_Trending/lu/LunaTranslator创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考