HOTS日志的命令行上传器

最近,以某种方式,我一直在玩暴风雪的英雄,暴雪的MOBA。 而且因为我喜欢查看统计信息,所以我也一直在使用Ben Barrett的这个名为HOTS Logs的网站,该网站“白天是软件工程师,晚上是狂热的游戏玩家”,它分析并汇总玩家上传的重播中的统计信息,例如在所有游戏中(按地图甚至是单个玩家)各个英雄的受欢迎程度和获胜率。

我对MOBA场景并不熟悉,但似乎其他MOBA(例如DOTA或LOL)的统计网站可以直接通过官方API或通过抓取游戏客户端来游戏数据。 同时,《英雄》目前无法做到这一点,因此信息的主要来源是玩家积极上传其回放。 这里肯定存在选择偏见的元素,但是希望有足够多的重放,汇总统计数据应该足够可靠。

我决定通过上传自己的重放来完成自己的任务,这可以通过HOTS Logs网站上的浏览器或使用上载器应用程序来完成。 后者有两种选择,一种是由HOTS Logs的创建者自己编写的,另一种是由HOTS Logs的用户/ u / RushTea贡献的,该用户也在GitHub上开源:eivindveg / HotSUploader。

我自己没有使用任何上传器应用程序,而是通过浏览器上传,但是过了一段时间之后,手动检查比赛历史记录中上次重播的时间很麻烦,然后从计算机上选择所有后续重播,将它们拖到浏览器中。 如果其他人上载了我之前玩过的游戏的录像,它会出现在比赛历史的顶部,有时会导致我跳过之前上传的游戏。

一时兴起,我决定编写自己的命令行工具来上载回放,以克服这种不便(以及许多其他非理性原因,包括未在此处创建综合症,以及CLI有时比GUI凉爽)。

在发现HOTS Logs没有用于上载重播的文档化API,并且我不能简单地发出multipart/form-data POST请求以模拟通过浏览器上载后,事实证明,这比我预期的要难。 / u / RushTea的上传者是开源的,我可以看到他是如何做到的,并弄清楚了。

我的上传器只是从Go程序编译的静态二进制文件,该程序跟踪上次重播上载到配置文件中的时间,并在运行时上载比该时间更新的所有重播:

 PS C:\Users\jiayu> hotslogs up Using config file: C:\Users\jiayu\.hotslogs.yaml Looking for new replays since: 2017-08-01 20:58:15 +0800 SGT Found 4 new replay(s) since last upload. Uploading new replays... Blackheart's Bay (16).StormReplay: DONE (Duplicate) Haunted Mines (20).StormReplay: DONE (Success) Infernal Shrines (26).StormReplay: DONE (Success) Towers of Doom (21).StormReplay: DONE (Success) Updating config file... Done. PS C:\Users\jiayu> 

它没有其他功能,例如现在显示重放的详细信息或HOTS日志中的信息。 我希望至少能够实现生成HOTS日志使用的重播ID,以便无需上传重播就可以检测到重复项,但这涉及解析重播文件。 尽管有诸如Blizzard / heroprotocol(Python),barrett777 / Heroes.ReplayParser(C#)和eivindveg / HotSReplayParser(Java)之类的实用程序和库可用于执行此操作,但目前似乎还没有一个纯粹的Go解决方案,所以我在想os/exec使用Python还是自己编写。

如果您有兴趣,可以在GitHub上找到我的上传器:yi-jiayu / hotslogs。 感谢您的阅读,并且有幸在Nexus上相见!