UP | HOME

▼ 本文更新于 [2026-01-08 周四 21:31]

emacs-通过API为beancount添加黄金价格


最近开始把一部分钱配置到黄金里了,这样一来,就需要想个办法通过代码获取黄金价格。

一方面,及时的黄金价格API一般都是给量化等公司商用的,价格很贵;另一方面,beancount的最小粒度为「天」,也没有必要把黄金价格精确到分钟/小时。在网上寻找了一番,找到了聚合数据的api,注册登录实名认证后就能获取到 KEY ,每天50次通过API获取黄金相关数据

beancount中,我的黄金货币为 AU ,默认货币为 CN ,所以可以通过 2026-01-01 price AU 114514 CN 来设置某天的 AUCN 之间兑换比例。

然后执行下列代码,就能获取昨天的黄金价格并且输出一条beancount的定价文本,记得将 KEY 替换为你获得的key:

(let ((prev (org-read-date nil nil "-1d"))
      (result ""))
  (let ((res (plz 'get (concat "http://web.juhe.cn/finance/gold/shgold?key=KEY&v=1")
               :as #'json-read)))
    (concat prev " price AU "
            (map-nested-elt res '(result 0 Au100g yespri))
            " CN")))

运行之后的结果:

2026-01-07 price AU 1000.24 CN

注:本文中代码需要安装PLZ包,还有启用map.el

(use-package plz :ensure t :demand t)
(require 'map)

© Published by Emacs 31.0.50 (Org mode 9.8-pre) | RSS English-Index