codeway3 / OSP

Steam Oriented Programming
MIT License
0 stars 0 forks source link

DOTA2 professional teams fantasy analysis #4

Open codeway3 opened 6 years ago

codeway3 commented 6 years ago

为即将到来的互动指南的梦幻积分竞猜做准备

  1. 获取数据源 已知opendota是有fantasy这一项的 但不确定api是否有 需要验证一下
  2. 针对的目标群体 职业联赛 职业战队
  3. 统计方法 暂时考虑仅获取本赛季的major比赛信息 minor的问题是 强队有所选择 不一定参赛 另外队伍会实验阵容与打法 不能用于TI赛事的参考 每场比赛进行统计 最后进行加权统计 权重的考虑因素
    • 前半年的major低权重 18年后的比赛权重逐渐上升
    • 对阵战队的强弱对比 考虑通过战队积分的排名进行判断
    • 赛程的不同阶段 可以考虑有不同的权重 (或者考虑直接做出来分阶段的查询统计
  4. 补充 出结果 先出一个无加权的进行参考
  5. 展示 暂时只输出结果 比赛单场结果不显示 只显示联赛总的统计 先做个震中杯的 剩下的后期再做 展示方法 战队标签 点击展开后显示队员梦幻积分
codeway3 commented 6 years ago

初期调研 梦幻积分需要自己通过公式计算 参考DOTA2 wiki https://dota2.gamepedia.com/Fantasy_Dota api没有现成的战队比赛查询 需要从explorer 获取比赛列表 再查询具体比赛信息 https://www.opendota.com/explorer?isTi7Team=&region=&hero=&player=&tier=&league=9601&organization=&team=&side=&result=&playerPurchased=&minDuration=&order=&maxDate=&limit=1000&having=&maxDuration=&minDate=&laneRole=&select=&group=match

codeway3 commented 6 years ago

v0.0.1 #5 完成计算某场比赛的梦幻积分的功能 添加对api进行请求的功能(如果出现sslv3 failure,pip安装pyOpenSSL,ndg-httpsclient,pyasn1模块)(这部分后期可能需要添加异常处理) TODO: 弄一个MongoDB 用来存储api获取的数据 主流程获取 先从mongo里面找 没有的话 发起request 并存储到db中 前端也需要做 还没考虑好用什么

codeway3 commented 6 years ago

v0.02 添加了MongoDB的相关比赛查找与插入操作,添加了一个向数据库添加某个联赛所有比赛信息的模块,使用了click,有进度条功能,有延时请求功能(防止超过opendota的60次/min的请求限制) 因为一些requests关于ssl抛出异常的问题,虚拟环境替换成了python3.6,因为在3.5下openssl升级没有实际应用到环境中,没查到具体原因。 参考https://comeroutewithme.com/2016/03/13/python-osx-openssl-issue/ TODO: 看一下web的东西,先要能把架子搭起来才好。 前后端分离什么的暂时不考虑。

codeway3 commented 6 years ago

简单弄了个flask架子,调整了cosumption和heatmap模块以便于应用在web应用中。

主要解决了两个问题 第一个是flask与pyecharts的结合问题,pyecharts v0.5.0以后的版本有问题,会导致flask应用运行后不在console输出访问的相关信息,查找issue后没有获得解决方案,但是Django方面有issue说有相关的异常问题。解决方法是pyecharts回退到v0.4.1,开始还以为是flask1.0.2的问题,后来看了两个环境的pip list才发现pyecharts也有版本差异。 (补充一点 flask1.0之后会有一个配置项,FLASK_ENV 默认会是production,在开发时会提醒不要在生产环境使用默认的wsgi) 第二个问题是上次更新临时解决的requests的ssl问题,我把虚拟环境重装了3.5的版本,又出现了这样的问题,网上会有很多推荐用verify=False,但这个方法仅在部分情况有效。在又查了一些方案后,可以通过安装几个ssl的包解决这个问题(cryptography,pyOpenSSL,certifi),参考这里,此时request.get里的verify=False要去掉。

关于程序入口的问题,一个cli.py,是命令行入口,run.py是web app入口,其中都有一个sys.path.append('..'),这不是很科学,是一个要处理的点。

flask要不要用blueprint,要再考虑一下,先着手完善fantasy部分的功能。

codeway3 commented 6 years ago

目前要做的几件事。 一个是对热力图进行考虑,数据可能高频访问但不需要实时更新,考虑做一个缓存;考虑到api限制,也考虑查一下能不能从前端发起数据请求,去由客户端ip消耗免费的api调用次数。(优先度低,先考虑对fantasy实现基本功能,并能在线访问) 二是添加单元测试。 三是添加日志。