Skip to content

Repository files navigation

多来源自动同步菜谱 API

每天从 7 个开源菜谱仓库拉最新内容,各自解析、校验,再转成统一的静态 JSON API,发布到 GitHub Pages。

目前完整构建一次大约有 884 道有效菜谱和 18 篇烹饪技巧。外文菜谱保留原文,OpenWebUI 回答时再按需翻译。

数据来源

来源 当前有效菜谱 原文语言 许可证
HowToCook 366 中文 The Unlicense
Git Food 44 英文 MIT
Sichuan Cookbook 312 中文 BSD-3-Clause
Japanese Recipes 33 英文 The Unlicense
Chowdown 34 英文 The Unlicense
Bastian's Recipes 8 德文 MIT
OpenStove 87 英文 CC BY-NC-SA 4.0

Bastian 仓库里还有 2 个只有 TODO 的空文件,构建时会直接跳过。HowToCook 同步到 367 道,其中 1 道内容完全重复,有效数记为 366;完全一样的菜谱只留一份。

OpenStove 按 CC BY-NC-SA 4.0 仅限非商业用途。每条菜谱都保留作者署名、原始文件链接和许可证链接,并注明本项目只做了格式转换。细节见 ATTRIBUTIONS.md

API 地址

线上:https://kingpollux.github.io/howtocook-auto-api/api

  • /recipes.json:轻量目录,适合搜索
  • /recipes/{id}.json:完整菜谱(食材、步骤、原文、来源署名)
  • /tips.json/tips/{id}.json:烹饪技巧
  • /sources.json:各来源的数量、提交版本、同步状态和许可证
  • /meta.json:本次构建总数和验证状态
  • /duplicates.json:判定为完全重复的记录

自动同步与失败保护

GitHub Actions 每天北京时间约 08:20 跑一次,也支持手动触发和推送代码触发。

每个来源单独解析、单独验证:

  • 数量异常、缺食材或缺步骤时,不发布该来源的新数据
  • 某个来源暂时下不下来,就从当前线上 API 沿用它上一次成功的数据
  • 其他正常来源照常更新
  • 新来源首次接入就失败、又没有旧数据可回退时,整次部署会停掉
  • 验证失败不会覆盖线上已有 API

OpenWebUI

工具文件:

openwebui/howtocook_auto_api_tool.py

在 OpenWebUI 0.10.x 里打开 Workspace → Tools,用这个文件的全部内容替换旧工具并保存。API 地址默认已经指向本项目的 GitHub Pages。

新版工具可以:

  • 按菜名、食材、菜系、来源、语言搜索
  • 查看全部来源和同步状态
  • 拉完整菜谱时自动带上原始仓库、原始文件、署名和许可证
  • 继续搜 HowToCook 的烹饪技巧

本地验证

装好依赖后:

npm ci
npm test

upstream/ 里需要有工作流里列出的 7 个来源目录。生成的 public/api/ 不进仓库,由 GitHub Actions 发布。

全库由Codex生成

人工协助微调,可能代码不漂亮,但胜在能用。

About

Auto-synced JSON API for Anduin2017/HowToCook recipes and cooking tips

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages