dota2api的介绍与使用
简介
TI8比赛刚刚过去,趁热介绍一个dota2的python包,叫dota2api,在上面能查到公开的一些比赛数据。dota2api是一个python模块,由一个外国人将V社提供的官方API封装而成,查看其源码请戳这。
安装
pip安装
通过pip安装
$ pip install dota2api
源码安装
如果pip安装不成功,可从github处下载源码,执行其中的setup文件进行安装
$ git clone https://github.com/joshuaduffy/dota2api/ && cd dota2api/
$ python setup.py install
使用
参照原文
对象
dota2api.Initialise
class dota2api.Initialise(api_key=None, executor=None, language=None, logging=None, raw_mode=None)
从始至终都要调用的一个对象,通过它内置的一些方法获取数据,除api_key
外,其他都为非必需参数。
api_key
api_key
的获取
使用你的steam账号从这获取api_key
,如果以前从没有注册过,随便写个域名就行了,重点是密钥后面的字符串,我们就是用它来通过steam获取Dota2的数据信息。
api_key
的使用
注意api_key为一个字符串变量
- 直接初始化
>>> import dota2api
>>> api = dota2api.Initialise("你的api_key", raw_mode=True)
- 设置为环境变量
注意环境变量的名称必须为D2_API_KEY
- linux
$ export D2_API_KEY='your api_key'
- windows
。。。不知道为啥,明明设置好了还是显示没有定义,还是老老实实用第一种方法(不知道哪位大神愿意解释一哈)
注意
- 每个API_KEY被限制在每天访问100,00( 十万)次
- 如果匹配服务器正忙或频繁调用API可能会遭遇503错误,请等待30s后重试
其他参数介绍
executor
默认为None,不用管它language
传入字符集名称,默认为None,即使用en_US字符集。可传入zh_CN即可表示为中文logging
是否打印输出日志,默认为None,不打印。raw_mode
是否将输出变为可读的数据,默认为True。感觉就是输出格式好看了一点
方法
get_game_items
get_game_items()
获取全部装备信息
返回值实例
{'items': [{'id': 1,'name': 'item_blink','cost': 2250,'secret_shop': 0,'side_shop': 1,'recipe': 0,'localized_name': '闪烁匕首','url_image': 'http://cdn.dota2.com/apps/dota2/images/items/blink_lg.png'},{'id': 2,'name': 'item_blades_of_attack','cost': 430,'secret_shop': 0,'side_shop': 0,'recipe': 0,'localized_name': '攻击之爪','url_image': 'http://cdn.dota2.com/apps/dota2/images/items/blades_of_attack_lg.png'},{'id': 3,'name': 'item_broadsword','cost': 1200,...}'status':200}
说明
items
所有装备信息组成一个列表存储在此字段中id
装备idname
装备名称,注意cost
购买装备所花费金钱secret_shop
是否在神秘商店出售side_shop
是否在边路商店出售recipe
是否需要合成卷轴localized_name
装备官方全称,例如这件装备是跳刀,如果初始化时未指定language
参数,这个字段的值就为Blink Dagger,如果指定language
参数为zh_CN,那么这个字段的值就为闪烁匕首url_image
装备图片所在url,已不可用
status
请求状态码
get_heroes
get_heroes()
获取所有英雄信息
返回值实例
{'heroes': [{'name': 'npc_dota_hero_antimage','id': 1,'localized_name': '敌法师','url_small_portrait': 'http://cdn.dota2.com/apps/dota2/images/heroes/antimage_sb.png','url_large_portrait': 'http://cdn.dota2.com/apps/dota2/images/heroes/antimage_lg.png','url_full_portrait': 'http://cdn.dota2.com/apps/dota2/images/heroes/antimage_full.png','url_vertical_portrait': 'http://cdn.dota2.com/apps/dota2/images/heroes/antimage_vert.jpg'},{'name': 'npc_dota_hero_axe','id': 2,'localized_name': '斧王','url_small_portrait': 'http://cdn.dota2.com/apps/dota2/images/heroes/axe_sb.png','url_large_portrait': 'http://cdn.dota2.com/apps/dota2/images/heroes/axe_lg.png','url_full_portrait': 'http://cdn.dota2.com/apps/dota2/images/heroes/axe_full.png','url_vertical_portrait': 'http://cdn.dota2.com/apps/dota2/images/heroes/axe_vert.jpg'},{'name': 'npc_dota_hero_bane','id': 3,'localized_name': '祸乱之源',...}'status': 200,'count': 116}
说明
heroes
所有英雄的信息组成一个列表存储在此字段中name
英雄名称id
英雄idlocalized_name
英雄官方名全称,例如敌法的英文名是Anti-Mage,中文名是敌法师url_small_portrait
英雄小头像url_large_portrait
英雄大头像url_full_portrait
英雄超大型头像url_vertical_portrait
英雄超大型头像,长度大于宽度
status
网页状态码count
英雄数量
get_league_listing
get_league_listing()
获取所有联赛信息
返回值实例
{'leagues': [{'name': '“乐者为王”Dota 2联赛','leagueid': 1212,'description': '64支巴西顶尖的业余战队将争夺首届“乐者为王”Dota 2联赛的冠军头衔。','tournament_url': 'https://binarybeast.com/xDOTA21404228/','itemdef': 10541},{'name': 'joinDOTA联赛第3赛季','leagueid': 1640,'description': 'Dota 2全球赛事,面向所有玩家!激烈的比赛中不乏高手的顶尖对决,也有业余战队的精彩过招。每售出一张门票奖金都将增加1.00美元!','tournament_url': 'http://www.joindota.com/en/leagues/','itemdef': 10742},{'name': 'Killing Spree:北美系列赛','leagueid': 25,'description': 'Killing Spree是长期的战队争霸活动,参赛队伍是四支来自北美的顶尖战队。每支队伍想要获胜必须一路奋战,连赢三场,达到“大杀特杀(killing spree)”。比赛由NEO Dota主办。',...}
说明
leagues
返回值仅含的一个字段,所有联赛信息按时间顺序组成一个列表储存在此字段中name
联赛全称,TI8中文全称为2018年国际邀请赛公开预选赛,英文全称为The International 2018 Open Qualifiersleagueid
联赛iddescription
联赛简介tournament_url
联赛简介urlitemdef
似乎这个数越大,比赛日期就越靠后
get_match_details
get_match_details(match_id=None, **kwargs)
获取比赛详细信息,其中match_id
即比赛编号,为必选参数。
返回值实例
{'players': [{'account_id': 125581247,'player_slot': 0,'hero_id': 109,'item_0': 1,'item_1': 46,'item_2': 63,'item_3': 116,'item_4': 236,'item_5': 154,'backpack_0': 0,'backpack_1': 0,'backpack_2': 0,'kills': 7,'deaths': 5,'assists': 11,'leaver_status': 0,'last_hits': 338,'denies': 24,'gold_per_min': 546,'xp_per_min': 540,'level': 21,'hero_damage': 19005,'tower_damage': 1047,'hero_healing': 0,'gold': 1652,'gold_spent': 17510,'scaled_hero_damage': 12613,'scaled_tower_damage': 611,'scaled_hero_healing': 0,'ability_upgrades': [{'ability': 5621, 'time': 948, 'level': 1},{'ability': 5619, 'time': 1032, 'level': 2},{'ability': 5621, 'time': 1134, 'level': 3},...]...]'radiant_win': False,'duration': 2188,'pre_game_duration': 90,'start_time': 1535249730,'match_id': 4080856812,'match_seq_num': 3539243234,'tower_status_radiant': 4,'tower_status_dire': 2036,'barracks_status_radiant': 3,'barracks_status_dire': 63,'cluster': 113,'first_blood_time': 153,'lobby_type': 1,'human_players': 10,'leagueid': 9870,'positive_votes': 14848,'negative_votes': 859,'game_mode': 2,'flags': 1,'engine': 1,'radiant_score': 34,'dire_score': 35,'radiant_team_id': 15,'radiant_name': 'PSG.LGD','radiant_logo': 927056072280704321,'radiant_team_complete': 1,'dire_team_id': 2586976,'dire_name': 'OG','dire_logo': 862855679982708969,'dire_team_complete': 0,'radiant_captain': 101695162,'dire_captain': 19672354,'picks_bans': [{'is_pick': False, 'hero_id': 67, 'team': 0, 'order': 0},{'is_pick': False, 'hero_id': 19, 'team': 1, 'order': 1},{'is_pick': False, 'hero_id': 12, 'team': 0, 'order': 2},{'is_pick': False, 'hero_id': 6, 'team': 1, 'order': 3},{'is_pick': False, 'hero_id': 58, 'team': 0, 'order': 4},...]'lobby_name': 'Practice','game_mode_name': 'Captains Mode','cluster_name': 'US West'}
说明
players
比赛选手信息组成一个列表储存在这个字段中account_id
选手的账号idplayer_slot
一个8位二进制数,第一位代表选手的队伍,最后三位代表在团队的位置(注意返回的为一个十进制数,需要进行转码)hero_id
选手挑选的英雄idhero_name
英雄全称item_0
,item_1
,item_2
,item_3
,item_4
,item_5
比赛结束时选手装备栏物品对应的iditem_0_name
,item_1_name
,item_2_name
,item_3_name
,item_4_name
,item_5_name
装备栏物品对应名称(如果item_3=0
那么将不会有item_3_name
这个字段)backpack_0
,backpack_1
,backpack_2
比赛结束时选手三个背包栏中物品对应idkills
杀人数deaths
死亡数assists
助攻数denies
反补数gold_per_min
GPM,每分钟金钱xp_per_min
XPM,每分钟经验level
比赛结束时英雄等级hero_damage
对敌方造成的总伤害量tower_damage
对敌方塔造成的总伤害量hero_healing
总治疗量gold
比赛结束时金钱gold_spent
总花费金钱ability_upgrades
升级技能树ability
技能代号time
升级时间level
级别
radiant_win
天辉方是否取得胜利,1代表是,0代表否duration
比赛持续时间,以s为单位pre_game_duration
赛前ban-pick消耗时间start_time
开始时间,为一个10位的时间戳match_id
比赛编号match_seq_num
tower_status_radiant
天辉方防御塔状态,一个16位的二进制数(注意返回的为一个十进制数,需要进行转码)。tower_status_dire
夜魇方防御塔状态,一个16位的二进制数(注意返回的为一个十进制数,需要进行转码)。
barracks_status_radiant
天辉方兵营状态,一个8位的二进制数(注意返回的为一个十进制数,需要进行转码)barracks_status_dire
夜魇方兵营状态,一个8位的二进制数(注意返回的为一个十进制数,需要进行转码)
first_blood_time
一血时间(s)leagueid
联赛idradiant_score
天辉方杀人数dire_score
夜魇方杀人数radiant_team_id
天辉方队伍idradiant_name
天辉方队伍名称dire_team_id
夜魇方队伍iddire_name
夜魇方队伍名称radiant_captain
picks_bans
比赛BP情况is_pick
是否为选人hero_id
BP的英雄team
所属队伍,0表示天辉,1表示夜魇
game_mode_name
游戏模式名称
get_match_history
get_match_history(account_id=None, **kwargs)
获取历史比赛信息
参数
account_id
玩家ID,只显示该玩家最近的比赛信息hero_id
英雄ID,只显示最近的关于该英雄的比赛信息league_id
联赛ID,只显示该联赛中的比赛信息start_at_match_id
比赛ID,只显示时间早于该比赛的比赛信息matches_requested
设置显示比赛的场数,默认为100tournament_games_only
限制显示的比赛为官方举办的锦标赛
返回值实例
{'status': 1,'num_results': 100,'total_results': 500,'results_remaining': 400,'matches': [{'match_id': 4109095754,'match_seq_num': 3561915451,'start_time': 1536499629,'lobby_type': 4,'radiant_team_id': 0,'dire_team_id': 0,'players': [{'account_id': 4294967295, 'player_slot': 0, 'hero_id': 49},{'account_id': 872413016, 'player_slot': 1, 'hero_id': 36},{'account_id': 4294967295, 'player_slot': 2, 'hero_id': 111},{'account_id': 4294967295, 'player_slot': 3, 'hero_id': 69},{'account_id': 4294967295, 'player_slot': 4, 'hero_id': 65},{'player_slot': 128, 'hero_id': 2},{'player_slot': 129, 'hero_id': 15},{'player_slot': 130, 'hero_id': 20},{'player_slot': 131, 'hero_id': 4},{'player_slot': 132, 'hero_id': 37}]},{'match_id': 4109094705,'match_seq_num': 3561913149,'start_time': 1536499598,'lobby_type': 0,'radiant_team_id': 0,'dire_team_id': 0,...}]}
说明
num_results
显示的比赛信息数目total_results
全部符合条件的比赛信息数目results_remaining
剩余未显示的比赛信息数目matches
包含比赛信息的列表match_id
比赛IDstart_time
比赛开始时间的时间戳lobby_type
匹配模式状态码
player
玩家信息account_id
玩家IDplayer_slot
见player_slot说明hero_id
英雄ID
实例
说明
get_player_summaries
get_player_summaries(steamids=None, **kwargs)
获取玩家steam账号的主页,头像,在线状态等信息
返回值实例
{'players': [{'steamid': '76561198067128891','communityvisibilitystate': 2,'profilestate': 1,'personaname': 'sqm','lastlogoff': 1536298714,'profileurl': 'https://steamcommunity.com/id/106863163/','avatar': 'https://steamcdn-a.akamaihd.net/steamcommunity/public/images/avatars/07/0770d08f36d7a9aa5272a2e2ff5be29ebc7dd55a.jpg','avatarmedium': 'https://steamcdn-a.akamaihd.net/steamcommunity/public/images/avatars/07/0770d08f36d7a9aa5272a2e2ff5be29ebc7dd55a_medium.jpg','avatarfull': 'https://steamcdn-a.akamaihd.net/steamcommunity/public/images/avatars/07/0770d08f36d7a9aa5272a2e2ff5be29ebc7dd55a_full.jpg','personastate': 0}]}
参数
steamids
一个包含玩家32位ID的列表,如果是64位会被强行转为32位
注意还有个64位ID,steamID_64 = steamID_32 + 76561197960265728
说明
steamid
玩家64位的steamIDcommunityvisibilitystate
资料可见性状态码
personaname
steam账号名称lastlogoff
玩家最后一次登陆steam时间戳profileurl
玩家主页urlavatar
,avatarmedium
,avatarfull
玩家不同大小的头像personastate
玩家在线状态码
get_team_info_by_team_id
get_team_info_by_team_id(start_at_team_id=None, **kwargs)
获取一系列按ID升序排列的战队信息
返回值实例
{'status': 1,'teams': [{'name': 'PSG.LGD','tag': 'PSG.LGD','time_created': 1338727837,'calibration_games_remaining': 3,'logo': 927056072280704321,'logo_sponsor': 965345547605295955,'country_code': 'cn','url': '','games_played': 1400,'player_0_account_id': 89217927,'player_1_account_id': 89399750,'player_2_account_id': 89407113,'player_3_account_id': 89598554,'player_4_account_id': 92590479,'player_5_account_id': 94296097,'player_6_account_id': 94738847,'admin_account_id': 118678359}]}
参数
start_at_team_id
按ID指定从某个战队开始显示teams_requested
限制显示的战队数目
说明
status
状态码,成功获取战队信息则为1,否则为其他数值teams
包含战队信息的数组name
战队名称tag
战队简称time_created
战队成立时间戳country_code
战队所属的国家,ISO 3166-1 country code。见维基百科games_played
当前队员在该战队进行的总比赛数player_0_account_id
,player_1_account_id
… 战队当前队员steamIDadmin_account_id
战队team admin(团队管理员???)ID
get_tournament_prize_pool
get_tournament_prize_pool(leagueid=None)
获取联赛奖金池信息
实例
{'prize_pool': 25532177,
'league_id': 9870,
'status': 200}
说明
prize_pool
奖金池总金额
update_game_items
update_game_items()
说明
将从get_game_items
方法得到的返回值保存,替代安装模块中的ref\items.json
文件
update_heroes
update_heroes()
说明
将从get_heroes
方法得到的返回值保存,替代安装模块中的ref\heroes.json
文件
get_live_league_games
get_live_league_games()
获取正在直播的比赛信息,也就是DOTA2客户端那个观战列表里的比赛
说明
见原文
get_top_live_games
get_top_live_games(partner='')
获取客户端观战人数排名前十的比赛
说明
见原文
dota2api的介绍与使用相关推荐
- 简单介绍互联网领域选择与营销方法
在我看来,互联网领域的选择是"安家",而营销方法的不同则表现了"定家"的方式多种多样,只有选对了,"家"才得以"安定". ...
- 常用开源协议介绍以及开源软件规范列表
1. 开源协议介绍 GPL: General Public License,开源项目最常用的许可证,衍生代码的分发需开源并且也要遵守此协议.该协议也有很多变种,不同变种要求会略微不同. MPL: MP ...
- python:Json模块dumps、loads、dump、load介绍
20210831 https://www.cnblogs.com/bigtreei/p/10466518.html json dump dumps 区别 python:Json模块dumps.load ...
- pytorch学习笔记(九):PyTorch结构介绍
PyTorch结构介绍 对PyTorch架构的粗浅理解,不能保证完全正确,但是希望可以从更高层次上对PyTorch上有个整体把握.水平有限,如有错误,欢迎指错,谢谢! 几个重要的类型 和数值相关的 T ...
- Python字节码介绍
了解 Python 字节码是什么,Python 如何使用它来执行你的代码,以及知道它是如何帮到你的. 如果你曾经编写过 Python,或者只是使用过 Python,你或许经常会看到 Python 源代 ...
- Pytest - 使用介绍
1. 概述 pytest是一个非常成熟的全功能的Python测试框架,主要特点有以下几点: 1.简单灵活,容易上手,文档丰富: 2.支持参数化,可以细粒度地控制要测试的测试用例: 3.能够支持简单的单 ...
- 遗传算法的简单介绍以及模式定理的简单证明
遗传算法 遗传算法(Genetic Algorithm,GA),最早是由美国的John holland在20世纪70年代提出.算法通过模拟达尔文生物进化论的自然选择以及遗传学机理的生物进化过程来搜 ...
- k8s核心组件详细介绍教程(配超详细实例演示)
本文实验环境基于上篇文章手把手从零开始搭建k8s集群超详细教程 本文根据B站课程云原生Java架构师的第一课K8s+Docker+KubeSphere+DevOps学习总结而来 k8s核心组件介绍 1 ...
- Tensorrt一些优化技术介绍
Tensorrt一些优化技术介绍 Figure 1. A quantizable AveragePool layer (in blue) is fused with a DQ layer and a ...
- 网路摄像头技术参数介绍
网路摄像头技术参数介绍 星光级图像传感器 4MP (2592 × 1520) @30fps SmartH.265 / H.265+ / H.265 / SmartH.264 / H.264+ / H. ...
最新文章
- android获取地址api,如果在Android中使用位置API给出纬度和经度,如何获取地址
- python教程课后答案-python程序设计教程课后答案
- IBM---Java 多线程与并发编程专题
- android studio无线真机调试
- 数据接口测试工具 Postman 介绍
- java双引号的转义字符_JAVA中转义字符
- 打印三角形之细节讲解
- cs231n__4. Backpropagation and Neural Network
- 如果把去掉数组里面重复的项
- Daily scrum 12.19
- Centos rsync配置
- Matplotlib简介和pyplot的简单使用——subplot
- appium+python实现手势密码
- 7-2 前序序列创建二叉树
- 畅捷支付显示连接服务器失败,畅捷支付POS机常见错误码解决方法!
- 楚留香ai人脸识别_《楚留香》评测掌中快意恩仇的世界
- android 圆形头像方案,android圆形头像实现
- 坐标转换系列三 基于开源的proj4,封装成工具
- 8. Django 模型(二)
- Linux下PS1、PS2、PS3、PS4使用详解