Hacker News 中文摘要

RSS订阅

显示HN:Librario,一个聚合Google Books、ISBNDB等平台书籍元数据的API -- Show HN: Librario, a book metadata API that aggregates G Books, ISBNDB, and more

文章摘要

Librario是一个聚合Google Books、ISBNDB等多个数据源的图书元数据API,旨在为开发者提供便捷的图书信息查询服务。

文章总结

Librario:一个聚合图书元数据的API

项目简介
Librario 是一个图书元数据聚合API,整合了Google Books、ISBNDB和Hardcover等多个来源的数据,旨在解决单一数据源信息不全的问题。目前处于预发布阶段,采用AGPL开源协议,开发者可立即试用。

开发背景
作者因个人拥有约1800本书的藏书,开始开发一个图书管理工具。但在开发过程中发现,现有的数据源(如Google Books、ISBNDB等)均无法提供完整的图书信息(如系列、类型、封面等),因此决定开发Librario。

技术细节
1. 数据聚合与合并
- 通过Go语言编写,从多个数据源获取信息并合并到PostgreSQL数据库。
- 数据库会随着查询量的增加而逐渐完善。
- 合并策略是核心难点,采用字段优先级和特定规则处理冲突:
- 标题:通过评分系统筛选,避免包含括号或过长的标题。
- 封面:下载所有候选图片,根据尺寸和质量评分后存储最佳版本。
- 其他字段(如出版社、语言等)直接取优先级最高的非空值。

  1. 性能优化

    • 近期添加了缓存层,显著提升了响应速度。
    • 曾考虑从net/http迁移到fiber框架,但最终因标准库的稳定性和迁移收益有限而放弃。
  2. 数据库重构

    • 初始数据库设计由AI完成,但作者对代码缺乏信心,因此聘请了SourceHut的开发者协助重写。

试用与反馈
用户可通过以下命令测试API:
bash curl -s -H 'Authorization: Bearer librario_ARbmrp1fjBpDywzhvrQcByA4sZ9pn7D5HEk0kmS34eqRcaujyt0enCZ' \ 'https://api.librario.dev/v1/book/9781328879943' | jq . 由于项目处于预发布阶段且运行在小规模VPS上,性能可能不稳定。

未来计划
- 支持更多数据源(如Goodreads、Anna's Archive)。
- 添加手动录入功能,减少对第三方数据的依赖。
- 开发用户界面(已设计初步原型)。

开源与协作
代码已开源在SourceHut,欢迎反馈和贡献:
- 项目地址:https://sr.ht/~pagina394/librario/
- 贡献指南:https://git.sr.ht/~pagina394/librario/tree/trunk/item/CONTRIBUTING.md

用户讨论亮点
- 有用户建议整合Wikidata以获取更多标识符(如OpenLibrary、LibraryThing等)。
- 部分用户反馈非拉丁语言(如中文、日文)的支持可能存在问题。
- 开发者回应称已测试英语和葡萄牙语,未来会优化多语言支持。

项目挑战
- 数据权威性与来源追踪:需确保手动修正的数据不被自动抓取覆盖。
- 扩展性:当前服务器可能因流量激增而崩溃,需进一步优化。

Librario的目标是成为图书元数据的“一站式”解决方案,尽管仍在早期阶段,但已展现出实用潜力。

评论总结

该评论内容主要围绕图书数据API的使用体验和功能需求展开,主要观点如下:

  1. 数据获取难度
  • 有用户指出从Amazon获取图书数据很繁琐 "I applaud the effort, but last time I tried this the major issue was the sheer amount of book data only available from amazon.com" "Tried throwing a batch of known-to-be-in-Amazon ISBN's through...Got 500's"
  1. API替代方案
  • 用户提到使用node-isbn等现有方案 "Right now, I use node-isbn which mostly works well but is getting old"
  • 推荐BookBrainz和WikiData等其他数据源 "What do you think about BookBrainz?" "I find WikiData to be perfect for aggregating identifiers"
  1. 功能需求
  • 多语言支持需求 "Does it handle languages other than English?"
  • 无ISBN书籍处理 "Do you handle books with no ISBN?"
  • 新书预告功能 "All I want is a weekly/monthly list of books by authors I've ready which are coming out"
  1. 数据管理建议
  • 强调数据来源追踪的重要性 "Please ensure that your database keeps track of whence data was obtained"
  • 指出缺少国会图书馆数据 "Library of Congress data seems like a huge omission"
  1. 正面反馈
  • 对项目展示方式的赞赏 "your post is really well presented, detailed and sourced"
  • 简单鼓励 "hella hella cool goodluck"
  1. 技术问题
  • 报告API访问问题 "502 Bad Gateway" "Got 500's for a handful of the first hundred"