华为德州扑克 replay.txt 可视化


背景不多说,见:主页贴吧 分析自己策略存在的隐患一个很重要的手段就是找到筹码突然减少的点,然后观察这个点失策的原因,最后打补丁

由于人肉看文件找还是很痛苦的,于是简单弄了个可视化方案(虽然已经有人在做这个了,但是感觉还是很难用),考虑到跨平台以及少依赖,于是采用了 Python 洗数据 + Highcharts 数据展示

考虑到某些浏览器对 file:// 以及跨域的限制,于是把 html 上传到七牛,洗出来的数据也上传到七牛,这样就可以了

具体如下:

用下面的代码洗数据,得到 replay.json

cat extract.py

#!/usr/bin/python
import sys, re, StringIO, json

data = {'data': []}

def findPlayer(_id):
    for player in data['data']:
        if player['name'] == _id:
            return player

cont = ''
try:
    f = open(sys.argv[1], 'r')
    cont = f.read()
    f.close()
except:
    print('Usage: python extract.py replay.txt')
patt = r'seat/([\s\S]+?)/seat'
results = re.findall(patt, cont)
for idx, res in enumerate(results):
    buf = StringIO.StringIO(res)
    for line in buf.readlines():
        line = line.strip()
        if line:
            player = line.split(':')[-1].strip().split(' ')
            if findPlayer(player[0]):
                findPlayer(player[0])['data'].append(int(player[1]) + int(player[2]))
            else:
                newPlayer = {
                    'name': player[0],
                    'data': [int(player[1]) + int(player[2])]
                    }
                data['data'].append(newPlayer)
f = open('replay.json', 'w')
f.write(json.dumps(data))
f.close()

上传 replay.json 到 http://getlink.int64ago.org/ (上传成功后点击图标即可复制链接到剪贴板)

然后到 https://cdn.int64ago.org/replay.html 页面,Paste URL and GO 也可以根据需要只看某些人的数据,点击横坐标下方色块,即可 enable/disable (数据量大,所以速度略慢)

Good luck :-)