HoopDream





5.00/5 (4投票s)
一篇关于如何在 WinForm 应用程序中利用 NBA Stats API 的简短文章
引言
我参与这个项目是因为我玩 ESPN/Yahoo 梦幻体育。这个小小的应用程序让我使用数学来更好地计算梦幻选秀顺序、阵容和球员球探。
所用技术
- Arkitech Platform Framework (APF) [^] - 自定义对象关系映射器
- Microsoft SQL Server CE
- Newtonsoft.Json
背景
关于这个项目,您应该知道的第一件事是,在stats.nba.com上可以找到多个关于NBA统计数据的Python客户端的文档。如果您想了解更多工作,请查看这些文档。其次,这项工作专门用于检索、存储和查看NBA数据。这里不打算提供更新或编辑这些数据来建立你的团队的功能。
如果你和我一样,每年在许多可用的联赛中都有多个活跃的队伍。由于有这么多活跃的队伍,几乎每个梦幻团队每天都会有完整的首发阵容。问题是决定哪个球员首发,哪个球员替补,才能获得最佳的比赛结果。
选择哪个球员首发,哪个球员替补永远不会是一门精确的科学。然而,利用构建伟大技术的技能,我们可以利用工具来更好地帮助我们做出决定。
特别是对于这个项目,我使用一个公式来尝试找出最好的球员。这里使用的公式试图计算每个球员的标准差。这有助于我确定哪个球员可能会给我最好的比赛结果。
Private Shared Function CalculateStandardDeviation ...
Dim average As Decimal = values.Average()
Dim sum As Decimal = CDec(values.Sum(Function(d)
Math.Pow(CDbl(d) - CDbl(average), 2)))
Dim result As Decimal = _
CDec(Math.Sqrt((CDbl(sum) / (values.Count() - 1))))
Return IIf(result > 0, result, 1)
End Function
工作流
该应用程序的总体步骤很简单。
- 下载球员统计数据
- 保存球员统计数据
- 计算球员排名
- 在屏幕上显示排名
- 刷新球员统计数据(重复 1-4)
下载
Newtonsoft.Json用于下载json数据集。为了实现这一点,实现了一个自定义的WebService。该webservice只是向NBA Stats web service发送一个静态查询。它接收并下载json数据集,然后将其转换为.NET类,以便于数据存储和检索。
Friend Class WebService
Private Shared ReadOnly httpClient As New HttpClient()
Public Shared Sub Start()
Store.Instance.CreateDatabaseObjects()
httpClient.DefaultRequestHeaders.Accept.Clear()
httpClient.DefaultRequestHeaders.Accept.Add( _
New MediaTypeWithQualityHeaderValue("application/json"))
DownloadPage().Wait()
End Sub
...
End Class
存储
通过使用 Arkitech Platform Framework (APF) 可以更轻松地进行存储。 Arkitech Platform Framework (APF) 是一个对象关系映射器,使 .NET 开发人员可以使用特定于域的对象来处理关系数据。它消除了开发人员通常需要编写的大多数数据访问代码。 APF 是一个软件开发框架,可帮助您在构建面向数据的 Windows 窗体 (WinForms) Microsoft SQL Server (MSSQL) 应用程序时构建可维护的业务逻辑层。
使用 APF 让我可以专注于设计简单的 POCO 类,以便于数据存储。
Public Class Player
Inherits Entity
Private _Reports As New List(Of Report)
Private _Rosters As New List(Of Roster)
<column(isprimarykey:=true, _="" isdbgenerated:="True)" playerid="" property="" public=""> _
Public Property IsPicked As Boolean
<column()>
Public Overrides Property Name As String
</column()></column(isprimarykey:=true,...)
摘要
在这里,我们汇集信息来帮助指导梦幻球员研究和阵容优化。 现在,您有能力去成为您 NBA 梦幻联赛的下一个冠军。
关注点
是否有免费的 NBA API 具有实时统计数据?
是的。 要获取 NBA 每天发布的所有 json 文件列表:请访问 data.nba.net [^]
历史
版本 0.0.0.1
参考文献
本文的某些想法和代码示例是使用以下一个或多个代码示例中的代码进行采样的。
- Gregory White @Github - HoopTactics [^]
- David Rogers @CodeProject - MVP Framework for Winforms [^]