EVEOnline ESI Excel教程
EVEOnline ESI Excel教程
A Chinese Guide on ESI request using Excel
1. 简介(博主的第一个MD文档,排版请见谅)
ESI是EVE Swagger Interface的简称。这篇博客将详细的介绍如何利用Excel中强大的Power Query功能调用ESI API,当然通过SSO验证是调用ESI功能的前提条件。目前能够找到的表格都是用Google Sheet实现的,Google嘛大家都了解,大局域网你就当他没有吧。有个问题来了,为什么ESI表格大多用Google Sheet?原因主要是:
ESI返回的是Json格式的数据
Google Sheet是可在线浏览和编辑的,原生支持Json文件的解析
Google Sheet可以添加触发器自动获取和更新ESI数据
使用Excel最大的缺点就是解析Json数据比较麻烦,但好在上手比较快,另外就是无法在线更新数据,这个给想获取实时数据的玩家带来了不便。不过Excel也不是完全一无是处,毕竟图形界面比较友好,普及率高。有句话说得好,高手在民间,本教程也就是抛砖引玉,希望有高手能够分享更漂亮的表格!
参考资料 SSO Authentication in Microsoft Power Query。
2. 准备工作
提醒:试玩账号!
1 | 必须至少有一个账号完成过至少一次储值,以具备开发者许可。 |
访问 EVEOnline API网页 可能需要代理,这里推荐一家稳定机场,点击链接 Glados Network 用邮箱注册即可。
- 该机场支持全平台代理(Windows,Linux,Ios,安卓),
- 支持自动切换节点、去广告、路由器代理等功能
- WireGuard VPN支持游戏代理,包括香港、日本、美国节点,稳定速度快
- Pro订阅仅需30元/月,价格适中,500G高速流量,可访问Google,Youtube,XBOX游戏平台,是游戏代理的完美替代品
- 提供免费试用,软件和完善的售后,支持支付宝、Paypal、银行卡支付。
2.1 软件
- Microsoft Excel 2016 或以上版本,Office 365
之所以要求Excel版本,是因为上述版本包含Power Query功能。
- Postman
完成账号的认证功能。Postman下载地址,根据自己的操作系统选择64bit或者32bit下载。
2.2 基本流程
使用上述软件完成ESI调用的基本流程如下:
使用账号登陆EVEOnline开发者网站
具有开发者账号需要至少完成过一次储值
使用Postman更新Token
更新代理请求
使用Power Query更新账号登入请求
每20mins就更新一次,这一步比较麻烦,需要使用到Postman生成的代码
使用Power Query创建ESI调用函数
具体调用函数可参考ESI网站
3. 指南
3.1 使用开发者账号创建一个应用
依次点击EVEOnline开发者网站–>Manage Applications管理应用,登入您的账号。
您可以看到Create New Application创建新的应用按钮。点击进入后,可以看到一个表格。
Name:随便取一个您喜欢的名字
Description: 一般都是描述这个应用的功能,可以随便填,比如“asdasdadad”都是可以的
CONNECTION TYPE: 这个很重要,必须选取Authentication & API Access ->会出现一个Permissions的新选项。
Permissions:这个是通过应用允许调用的ESI函数。如果想获取所有的ESI数据,完全可以全部都点上。
- CALLBACK URL: 由于使用的是Postman,这里需要填上 https://www.getpostman.com/oauth2/callback
填好上述信息后,点击页面最底部的Create Application按钮,提交应用。回到Applications页面,您将看到自己刚才创建的应用。
点击上图中的View Applicaiton按钮,您将看到以下信息, 这些信息很重要后面设置Postman需要使用:
至此,Application这边的设置就完成了。
3.2 通过Postman获取刷新识别码
首先您得注册一个Postman账号。填入Email,Username(账号名)和Password(密码),Create free account即可。完成注册后打开Postman软件登陆,Cancel取消,使用默认截面并点击下图中的Authorization标签。
点击Get New Access Token按钮,进入下图设置页面
图中显示为“粘贴过来”的几个空从Applications页面应用详细Application Settings获取,详见3.1节。
1 | 注意每个Scope,即以“esi开始的字符串”之间有一个空格。 |
设置完成后即可点击Request Token提交,会跳出一个EVE账号登陆窗口,输入您想查询的人物ID即可获取Access Token。
1 | 您可以使用同一个eve application应用,修改Postman的Token Name, |
点击Available Tokens下拉菜单,选取Manage Tokens,这个refresh_token后面会用到,如下图所示。
3.3 在EXCEL中获取登入权限token
打开一个新的Excel表格,确保是2016及以上版本。依次选择“数据”标签->“获取数据”(第一个ribbon)->“自其它源”->“空白查询”,打开Power Query编辑器。在开始标签下点击“高级编辑器”,粘贴下列代码,修改Headers=[ ]中的内容(如何修改见后文中的代码说明),保存后关闭。
1 | (refresh_token) => |
上面代码说明:
- (refresh_token) => 说明该代码是一个函数,输入参数为refresh_token,这个Token与3.2 Postman中最终获得的人物refresh_token相同。输入您的Postman token可以测试是否能够获得一行字符串,如“GuFSyLsTvbivY6v3qiwLptcbEbnUBpwv7-T3hH-_nFYQ3siXTBWaQUcbUtiwlL2B851ECP2Kwb7Dy7TaTHPo8A2”,该字符串可在ESI页面使用。
上面一系列操作都是为了获得这个Code,注意保存
#”User-Agent” 是一串请求,用于EVE ESI识别应用,实际上不影响代码功能,改成你的应用名或者人物名即可。
#”Authorization”比较关键,Basic不要修改,你会用到Base64,在页面中使用这个格式clientid:secretkey生成base64码。clientid和secretkey为3.1中设置EVE Applications页面得到的。比如你的clientid是123123asda123,secretkey是jasdqeouoq,则输入格式为123123asda123:jasdqeouoq,生成token代码MTIzMTIzYXNkYTEyM++8mmphc2RxZW91b3E=如下图所示
1 | 注意:Basic和生成的代码间有一个空格,其他保持默认即可。 |
4. 获取ESI数据
以获取忠诚点数为例演示如何使用第3节中获取的token。点击下图中的Try it out!可以看到输入的参数:
character_id * :必须的。
datasource:可选,“–”视为“tranquility”,“singularity”为测试服。建议选取”–”,可以压缩查询链接的长度
token :必须的,就是第3.3节最后得到的base64码。
id如何获取呢,既然用了ESI,那么就地取材吧。使用ESI的Get Search功能。Categories选择character,在search中填入你的id,返回Json格式数据,2113709067就是你的人物id。
1 | { |
填入所有信息后,点击蓝色的Execute可以得到Request URL:
1 | https://esi.evetech.net/latest/characters/2113709067/loyalty/points/?datasource=tranquility&token=yOuQh9Gi4ozcHoeRpAt9kw9lRW6rh37C7_D9wUA1TX0eF5ahcdzGiM12hlTC8LBl5KmhBdp-RGdHouFH6O3Arg2 |
Excel中可通过修改上述链接中的id(2113709067),以及对应的token值(yOuQh9Gi4ozcHoeRpAt9kw9lRW6rh37C7_D9wUA1TX0eF5ahcdzGiM12hlTC8LBl5KmhBdp-RGdHouFH6O3Arg2)获取ESI数据。每个Token的有效期为20分钟,ESI数据也有有效期,每种数据的有效期都不同,比如lp的介绍为“This route is cached for up to 3600 seconds”,表明ESI LP数据每个小时更新一次,而“/characters/{character_id}/wallet/
”cache只有120s,因此没有必要太快的获取实时数据。
5. EXCEL设置教程
教程2中提供了一个Tutorial供大家下载参考。