YDK 转 PDF 开发小记

地址: https://ydk2decklist.streamlit.app/

后端

很简单. YDK 文件是记载着卡片 id 的文本文件, 把 id 和卡名关联起来就行. 百鸽 可以根据 id 搜索到准确的多语种译名.

一张卡有多种 id (Changelog 里的几次修复就是这个问题)

  • “标准” id
  • 异画卡 id: 需要根据 YGOPRO 的数据库信息关联到标准 id
  • 老版 id: 百鸽有转换表

关联好卡名后, 填到模板 pdf 里就行.

为了减少网络访问, 把这些信息存在本地, 定时更新本地数据库即可 (本地找不到时先请求百鸽 API).

前端

先说说上图 MyCard 这个 broken 的 打印工具. 除了模板选择和上传 YDK 以外, 其他字段都是多余的. 对一个用户来说这些字段不能复用, 他在这里填和直接在 PDF 上改工作量一样.

我这边的页面就拖拽上传 (对比点击上传) YDK 直接给出结果 (对比还要点一下按钮才给结果), 直接了当.

New stuff I learned

Streamlit (with its cloud): 特别适合部署这个服务, 因为 (1) 使用频次低, 耗资源少; (2) 线上服务无使用门槛; (3) 可以自动更新; (4) 集中用户在线上更容易从日志中找到 BUG (作成离线应用的话很少人会反馈问题).

我写完之后才发现有人之前用 Java 做过类似的事情, 但是他的 (1) 卡名关联不完善; (2) 需要使用者自己拉代码, 编译运行, 有点使用门槛; (3) 没法自动更新数据库.

Github actions

顺便解决了 Streamlit cloud 一周没流量或者源码库没有更新就会自动下线的问题.

Github badges: https://shields.io/

本质是图片, 用网站生成, 可以通过 API 获取一些信息显示在 badge 上.