树莓派 | 欧路词典生词本 & 墨墨背单词 云同步教程 (eudic-maimemo-sync) cover

树莓派 | 欧路词典生词本 & 墨墨背单词 云同步教程 (eudic-maimemo-sync)

一个小工具,解决 欧路词典 & 墨墨背单词 生词同步问题

在浏览网页时,我常用欧路词典的“欧路翻译”浏览器插件划词翻译,它能够自动记录查阅过的单词,添加到生词本。 然而,在单词记忆方面,我更习惯使用“墨墨背单词”。

因此,我在寻找一种方法,将欧路词典的生词本同步到墨墨背单词的词库。这样,我就可以用自己习惯的软件来记忆日常阅读中遇到的生词了。

后来我了解到,这两个软件其实都提供开放API。于是,我开发了 eudic-maimemo-sync 工具,实现欧路词典生词本到墨墨背单词云词库的自动同步。并且,我将其部署在树莓派上,每天自动运行,实现了生词本的无缝同步。

image.png

接下来,我将介绍如何配置和使用这个程序,并分享开发过程中遇到的一些问题和经验。也欢迎大家贡献代码或提出建议。

目录

eudic-maimemo-sync 使用教程

1. 下载代码安装依赖

前置条件:已安装 Python 3 环境

下载代码:

git clone https://github.com/eMUQI/eudic-maimemo-sync.git

安装依赖:

cd eudic-maimemo-sync
pip install -r requirements.txt

2. 欧路词典相关配置

2.1 获取欧路词典 API 密钥

访问此页面,登录后,获取你的API密钥。复制 .env.example.env,并将获取到的 API 密钥填入.env文件中的EUDIC_API_KEY字段。

image.png

2.2 获取生词本 ID

运行get_wordbook_id.py,查看生词本信息,记下你需要同步的生词本 ID。

python get_wordbook_id.py
image.png

将所要同步的生词本 ID 填入.env中的EUDIC_CATEGORY_ID

3. 墨墨背单词相关配置

3.1 获取墨墨背单词 API 密钥

打开墨墨背单词手机APP,进入“我的”-“更多设置”-“实验功能”-“开放API”,生成并复制 API 密钥,然后将其填入.env中的MOMO_API_KEY字段。。

3.2 获取云词库 ID

运行get_notepad_id.py,查看云词库信息,记住你需要同步的云词库 ID。

python get_notepad_id.py
image.png

将所要同步的词库 ID 填入.env中的MOMO_NOTEPAD_ID

4. 手动同步

运行sync.py,即可手动触发一次同步。

python sync.py

5. 自动同步(部署到树莓派上或者其他 Linux 设备)

确保部署前已经成功手动运行过 python sync.py,验证配置无误。

使用Docker

我个人比较喜欢用Docker, 隔离性好,依赖管理简单,不会弄乱系统的环境。在我的树莓派 5 上运行良好,额外的性能开销在可接受范围内。

创建一个docker-compose.yml配置文件:

services:
  eudic-maimemo-sync:
    image: ghcr.io/emuqi/eudic-maimemo-sync:latest
    container_name: eudic-maimemo-sync
    restart: unless-stopped
    env_file:
      - .env
    # volumes:
    #   - ./words_data.txt:/app/words_data.txt # 如果想查看单词记录,取消此行注释
    environment:
      - TZ=Asia/Shanghai
      - CRON_SCHEDULE=0 18 * * * # 示例:自定义定时任务为每天 18:00 运行
      # Ensure all necessary variables (EUDIC_API_KEY etc.) are in .env or here
    healthcheck:
      test: ["CMD-SHELL", "pgrep cron || exit 1"]
      interval: 2m
      timeout: 5s
      retries: 3
      start_period: 10s

在相同目录下创建一个words_data.txt文件,用于记录同步的单词列表,方便调试或查看。如果不需要,可以跳过此步。

touch words_data.txt

运行程序

docker compose up -d

其他方式

你还可以使用 cron 或者 systemctl 的方式来定时运行这个同步程序。如果你熟悉这些工具配置,欢迎分享你的方法或提交 Pull Request。


开发中遇到的问题

  1. 欧路词典 API 不接受默认的 Python User-Agent,请求时需要显式指定一个有效的 User-Agent。在本项目中,我使用的是 Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36
  2. 墨背单词 API 文档中关于添加单词到云词库所需的数据格式说明不够清晰。文档中只说明数据类型时 string。经过我的测试验证,格式应该为,以井号#开始作为分类标记,每个单词占一行。如 #20250415\napple\nboy#20250416\ncat
image.png

最后,欢迎提交 Pull Requests 或 Issues 到 eudic-maimemo-sync。有任何想法,也欢迎在下方留言。

参考链接