Nuget.org OData feed返回的结果与网站不同

时间:2015-12-06 02:03:25

标签: statistics nuget odata

我正在编写一个小工具来从nuget.org OData Feed(https://nuget.org/api/v2)中检索元数据和下载计数。在查看OData提要的结果时,它们比单个包的nuget.org页面上显示的更少(有时显着)。对VersionDownloadCountDownloadCount属性都是如此。

不幸的是,除了blog post之外,关于nuget.org的OData Feed的文档很少。

我真的想从某个地方获取详细的下载统计数据,而不是诉诸屏幕抓取,但没有找到核心包管理端点之外的api。

有没有人有其他方法可以访问金块包下载号码?

1 个答案:

答案 0 :(得分:1)

nuget.org上的下载数据似乎来自NuGet v3服务,而不是旧的NuGet v2服务。为什么两者之间的下载数量不同是NuGet团队的一个问题。

如果您查看NuGet v3搜索API:

https://api-v3search-0.nuget.org/query

您可以看到数字与nuget.org上显示的内容更为匹配。在看Newtonsoft.Json时我确实看到了一些小的差异,但现在看起来它们似乎是相同的,所以也许有一些缓存正在进行,所以它们并不完全同步。

因此,您可能希望改为使用NuGet v3端点。

有各种NuGet v3 NuGet包可以让你为v3调用API。使用NuGet v3 NuGet包调用API似乎比使用NuGet v2更复杂,所以我不能告诉你如何使用它来获得你想要的结果使用NuGet v3客户端API。

您可以使用类似于NuGet v2 OData Feed使用的查询参数直接查询搜索API。例如,您可以使用以下方法搜索Newtonsoft.Json:

https://api-v3search-0.nuget.org/query?q=id:newtonsoft.json

这不会返回Newtonsoft.Json信息,而是返回其他匹配项。我希望id部分可以更好地过滤事物,但它不会排除其他包ID匹配。您还可以使用skip和take来翻阅数据。

因此,您可以调用NuGet v3搜索API并读取原始json数据,这可能比使用NuGet v3客户端API更简单。