代码教学之获取王者荣耀语音包(附MarkDown格式文档
PS:文章仅供代码技术知识交流,不提供资源,如有任何问题可以私信up删除。
前期调研
我们在闲逛王者官网时,意外发现了有公布全部角色语音的地方:
url:[语音鉴赏-世界观体验站-王者荣耀官方网站-腾讯游戏 (qq.com)](https://pvp.qq.com/ip/voice.html)

每个语音都可以听,并且每个英雄都有对应语音(连梦奇都有,除了盾山[笑])

接口分析
1.获取音频链接
那么我们很好奇这些数据是从哪里来的,打开F12开发者工具,首先在当前页找到对应语音地址,打开看看能否直接加载/下载,如下图所示,很棒,没有任何限制


2.查找当前英雄全部语音的接口
不一会,我们就在F12里找到了疑似包含角色语音的链接接口:[https://pvp.qq.com/zlkdatasys/yuzhouzhan/herovoice/564.json]

点击预览,豁,还真是:

然后我们换一个英雄,发现只是换了个id,如下图所示:

那么大胆猜测,每个英雄的语音都可以从这里获得;事实证明也是如此,那么问题的中心就转为了如何获得这些英雄的id。
3.查找页面上全部英雄的数据从哪儿来
毕竟网页上有全部英雄,也可以点击,所以必然是有个数据来源的,我们再找找接口,果不其然,我们找到了:[https://pvp.qq.com/zlkdatasys/yuzhouzhan/list/heroList.json]

然后通过该接口我们就可以获取到每个英雄的id/名称/定位/所属等信息。

代码编写(java
0.代码基础与基础方法
首先呢,得有基础的编程基础,了解json、循环判断、变量设定、方法功能等。
其次,我们需要提前构造好一些基础架构,比如构建一个maven的项目(非必须,但mvn好引入第三方库),引入阿里巴巴的fastjson库等。
接着,我们自己写好或引入请求页面/下载文件等基础方法(函数)。
1.获取全部英雄列表
获取json的java代码
2.循环获取每个英雄语音列表
3.循环下载每个皮肤里的语音
4.多线程实现并行下载(附代码
计算一下,一个英雄的全部语音大致100个上下,也可能更多,一共有114个英雄,那么起码有1w条以上的语音待我们下载,时间太久了,因此我们加入多线程,此处我们使用25线程并行下载,用时大致为8分钟。
成果展示
共计大小:

按英雄分类:

英雄内按皮肤分类:

语音按对话命名:

笔记文档markdown(wolai笔记):https://www.wolai.com/jLf6UXEJsRWqQMMSJufMU8