代碼教學(xué)之獲取王者榮耀語(yǔ)音包(附MarkDown格式文檔
PS:文章僅供代碼技術(shù)知識(shí)交流,不提供資源,如有任何問(wèn)題可以私信up刪除。
前期調(diào)研
我們?cè)陂e逛王者官網(wǎng)時(shí),意外發(fā)現(xiàn)了有公布全部角色語(yǔ)音的地方:
url:[語(yǔ)音鑒賞-世界觀體驗(yàn)站-王者榮耀官方網(wǎng)站-騰訊游戲 (qq.com)](https://pvp.qq.com/ip/voice.html)

每個(gè)語(yǔ)音都可以聽,并且每個(gè)英雄都有對(duì)應(yīng)語(yǔ)音(連夢(mèng)奇都有,除了盾山[笑])

接口分析
1.獲取音頻鏈接
那么我們很好奇這些數(shù)據(jù)是從哪里來(lái)的,打開F12開發(fā)者工具,首先在當(dāng)前頁(yè)找到對(duì)應(yīng)語(yǔ)音地址,打開看看能否直接加載/下載,如下圖所示,很棒,沒有任何限制


2.查找當(dāng)前英雄全部語(yǔ)音的接口
不一會(huì),我們就在F12里找到了疑似包含角色語(yǔ)音的鏈接接口:[https://pvp.qq.com/zlkdatasys/yuzhouzhan/herovoice/564.json]

點(diǎn)擊預(yù)覽,豁,還真是:

然后我們換一個(gè)英雄,發(fā)現(xiàn)只是換了個(gè)id,如下圖所示:

那么大膽猜測(cè),每個(gè)英雄的語(yǔ)音都可以從這里獲得;事實(shí)證明也是如此,那么問(wèn)題的中心就轉(zhuǎn)為了如何獲得這些英雄的id。
3.查找頁(yè)面上全部英雄的數(shù)據(jù)從哪兒來(lái)
畢竟網(wǎng)頁(yè)上有全部英雄,也可以點(diǎn)擊,所以必然是有個(gè)數(shù)據(jù)來(lái)源的,我們?cè)僬艺医涌?,果不其然,我們找到了:[https://pvp.qq.com/zlkdatasys/yuzhouzhan/list/heroList.json]

然后通過(guò)該接口我們就可以獲取到每個(gè)英雄的id/名稱/定位/所屬等信息。

代碼編寫(java
0.代碼基礎(chǔ)與基礎(chǔ)方法
首先呢,得有基礎(chǔ)的編程基礎(chǔ),了解json、循環(huán)判斷、變量設(shè)定、方法功能等。?
其次,我們需要提前構(gòu)造好一些基礎(chǔ)架構(gòu),比如構(gòu)建一個(gè)maven的項(xiàng)目(非必須,但mvn好引入第三方庫(kù)),引入阿里巴巴的fastjson庫(kù)等。
接著,我們自己寫好或引入請(qǐng)求頁(yè)面/下載文件等基礎(chǔ)方法(函數(shù))。
1.獲取全部英雄列表
獲取json的java代碼
2.循環(huán)獲取每個(gè)英雄語(yǔ)音列表
3.循環(huán)下載每個(gè)皮膚里的語(yǔ)音
4.多線程實(shí)現(xiàn)并行下載(附代碼
計(jì)算一下,一個(gè)英雄的全部語(yǔ)音大致100個(gè)上下,也可能更多,一共有114個(gè)英雄,那么起碼有1w條以上的語(yǔ)音待我們下載,時(shí)間太久了,因此我們加入多線程,此處我們使用25線程并行下載,用時(shí)大致為8分鐘。
成果展示
共計(jì)大?。?br>

按英雄分類:

英雄內(nèi)按皮膚分類:

語(yǔ)音按對(duì)話命名:

筆記文檔markdown(wolai筆記):https://www.wolai.com/jLf6UXEJsRWqQMMSJufMU8