#stock #company #share #api-access #user-token #gurufocus

gurufocus_api

一个用于GuruFocus API的Rust适配器,GuruFocus API是提供财经数据的供应商

20个版本

0.6.1 2022年4月5日
0.5.0 2021年12月10日
0.4.2 2020年12月31日
0.4.1 2020年10月18日
0.3.0 2019年11月26日

财经类中排名第77


在3个crate中使用了(通过finql

MIT/Apache

60KB
1.5K SLoC

GuruFocus API

本项目提供了一套通过GuruFocus API从GuruFocus网站接收数据的函数。本项目遵循Apache 2.0或MIT许可(请参阅文件LICENSE-Apache2.0和LICENSE-MIT)。

使用方法

请注意,您至少需要高级账户才能使用此API。这里有几个示例演示了如何在您的Rust项目中使用此API。要运行此示例,您首先需要定义一个环境变量,该变量包含您从GuruFocus获得的用户Token

export GURUFOCUS_TOKEN='<your user token>'

可以通过以下命令执行示例

cargo test --example <name of example>

在这里,<示例名称>可以是示例文件夹中任何不带.rs扩展名的文件的名称。请注意,运行任何示例都会至少增加您的API访问计数器1次。

GuruFocus API以JSON格式提供所有数据,当前的基本API函数将仅返回这些JSON结构作为serde_json::Value类型,而无需任何进一步处理。《code>serde_json::Value类型可以被反序列化为更有意义的数据结构,这些结构用于那些相对稳定的JSON结构(见下文)。

GuruFocus API 返回的数值有时是数字,有时是字符串。为了解决这个问题,引入了一个新的结构体 FloatOrString,它包含一个浮点值,但可以自动从字符串或浮点数中读取。缺点是需要在特定数据结构的变量名中添加 .0。也就是说,要访问 Quote 类型的变量中的报价,即 q: Quote,可以通过 q.price.0(如果可访问)来访问价格,而不是 q.price,或者更普遍地,通过 q.price.into() 转换为 f64。在某些情况下,字符串中包含的不是数字,而是错误消息,如“负有形权益”。在这种情况下,如果字符串不能解析为数字,则将值设置为 NAN

从版本 0.4 开始,所有使用 async 属性的请求都返回 Future,而不是等待响应并返回结果。要获取实际结果,需要使用 .awaitblock_on 或类似方法。示例演示了如何使用此库。

要运行通过 GuruFocus API 获取数据的单元测试,必须设置 GURUFOCUS_TOKEN(见上文)。否则,这些单元测试将静默跳过。

股票信息仅部分解析到结构体中,一些部分解析为 JSON 值的 HashMap,例如公司详细信息。这有两个原因

  1. GuruFocus 经常更改接口,添加新条目或(较少)删除或重命名条目。通过使用 HashMap,接口变得更加稳定,新条目可以立即使用
  2. 一些结构体变得非常长。因此,似乎更好的方法是直接在 HashMap 中搜索,而不是使用硬编码的结构体成员(这些成员有时可能与 API 中的拼写略有不同)。

最终,更多的长结构体将转换为 HashMap 表示。

请注意,该库尚不稳定,用户界面仍可能更改。但是,欢迎关于可用性和改进界面的建议。

依赖项

~7–21MB
~294K SLoC