TLDR:我无法从 GnuCash 和 KMyMoney 中获取在线股票报价。perl Finance::Quote 模块似乎有问题。解决这个问题最简单的方法是什么?
背景
许多免费应用程序(例如 KMyMoney 和 GnuCash)使用 Perl 库 Finance::Quote 从各个网站获取股票、债券和货币报价。然而,这些网站经常更改其面向公众的 URL,从而破坏了这些应用程序的此功能。我正在使用长期支持的 Linux 发行版 (Ubuntu LTS),因为我喜欢稳定性,但向后移植中没有该库的更新,因此我的软件现在已损坏。
最近 Ubuntu 22.04 LTS 就发生了这种情况。KMyMoney 随 Finance::Quote 版本 1.51(libfinance-quote-perl,于 2021 年发布)一起安装,但由于雅虎最近的更改,该版本现在失败了。这就是我验证该库的安装版本的方法:
perl -MFinance::Quote -e 'print "$Finance::Quote::VERSION\n"'
GnuCash 有另一个实用程序,您可以使用它来验证这是否是问题所在(yahoo_json
如果不同,请替换为您的数据提供者):
gnc-fq-dump -v yahoo_json AAPL
错误输出如下所示:
Finance::Quote fields Gnucash uses:
symbol: AAPL <=== required
date: ** missing ** <=== recommended
currency: ** missing ** <=== required
last: **missing** <=\
nav: **missing** <=== one of these
price: **missing** <=/
timezone: <=== optional
** This stock quote cannot be used by GnuCash!
All fields returned by Finance::Quote for stock AAPL
stock field value
----- ----- -----
AAPL errormsg: Error retrieving quote for AAPL. Attempt to fetch the URL https://query1.finance.yahoo.com/v7/finance/quote?symbols=AAPL resulted in HTTP response 401 (Unauthorized)
AAPL last: **missing**
AAPL nav: **missing**
AAPL price: **missing**
AAPL success: 0
AAPL symbol: AAPL
我们可以判断这是服务器问题,因为它返回 HTTP 代码 401。
在不升级整个操作系统的情况下,让在线报价再次运行的最佳方法是什么?