大牛程序員利用Python開發王者榮耀帶妹神器,一路直奔上王者


王者榮耀 -很火的手游-簡直老少通吃-令人發指-雖然操作簡單-但為什么你還是會被虐, 其實 是有技巧的--本文Python大神帶你研究王者榮耀各類英雄的出裝小技巧,讓你成為大神般的存在

前期准備

環境:Python3+ Windows

IDE:隨意

模塊:

1 from urllib.request import urlretrieve
2 
3 import requests

首先找到三個接口

第一個是英雄武器的接口

# 武器URL地址
weapon_url = "http://gamehelper.gm825.com/wzry/equip/list?channel_id=90009a&app_id=h9044j&game_id=7622&game_name=%E7%8E%8B%E8%80%85%E8%8D%A3%E8%80%80&vcode=12.0.3&version_code=1203&cuid=2654CC14D2D3894DBF5808264AE2DAD7&ovr=6.0.1&device=Xiaomi_MI+5&net_type=1&client_id=1Yfyt44QSqu7PcVdDduBYQ%3D%3D&info_ms=fBzJ%2BCu4ZDAtl4CyHuZ%2FJQ%3D%3D&info_ma=XshbgIgi0V1HxXTqixI%2BKbgXtNtOP0%2Fn1WZtMWRWj5o%3D&mno=0&info_la=9AChHTMC3uW%2BfY8%2BCFhcFw%3D%3D&info_ci=9AChHTMC3uW%2BfY8%2BCFhcFw%3D%3D&mcc=0&clientversion=&bssid=VY%2BeiuZRJ%2FwaXmoLLVUrMODX1ZTf%2F2dzsWn2AOEM0I4%3D&os_level=23&os_id=dc451556fc0eeadb&resolution=1080_1920&dpi=480&client_ip=192.168.0.198&pdunid=a83d20d8"

第二個是英雄列表接口

# 英雄列表URL地址
heros_url = "http://gamehelper.gm825.com/wzry/hero/list?channel_id=90009a&app_id=h9044j&game_id=7622&game_name=%E7%8E%8B%E8%80%85%E8%8D%A3%E8%80%80&vcode=12.0.3&version_code=1203&cuid=2654CC14D2D3894DBF5808264AE2DAD7&ovr=6.0.1&device=Xiaomi_MI+5&net_type=1&client_id=1Yfyt44QSqu7PcVdDduBYQ%3D%3D&info_ms=fBzJ%2BCu4ZDAtl4CyHuZ%2FJQ%3D%3D&info_ma=XshbgIgi0V1HxXTqixI%2BKbgXtNtOP0%2Fn1WZtMWRWj5o%3D&mno=0&info_la=9AChHTMC3uW%2BfY8%2BCFhcFw%3D%3D&info_ci=9AChHTMC3uW%2BfY8%2BCFhcFw%3D%3D&mcc=0&clientversion=&bssid=VY%2BeiuZRJ%2FwaXmoLLVUrMODX1ZTf%2F2dzsWn2AOEM0I4%3D&os_level=23&os_id=dc451556fc0eeadb&resolution=1080_1920&dpi=480&client_ip=192.168.0.198&pdunid=a83d20d8"
第三個是英雄出裝的接口
第三個接口有點特殊,需要前面的英雄id,也就是hero_id
# 英雄出裝URL
hero_url = "http://gamehelper.gm825.com/wzry/hero/detail?hero_id={}&channel_id=90009a&app_id=h9044j&game_id=7622&game_name=%E7%8E%8B%E8%80%85%E8%8D%A3%E8%80%80&vcode=12.0.3&version_code=1203&cuid=2654CC14D2D3894DBF5808264AE2DAD7&ovr=6.0.1&device=Xiaomi_MI+5&net_type=1&client_id=1Yfyt44QSqu7PcVdDduBYQ%3D%3D&info_ms=fBzJ%2BCu4ZDAtl4CyHuZ%2FJQ%3D%3D&info_ma=XshbgIgi0V1HxXTqixI%2BKbgXtNtOP0%2Fn1WZtMWRWj5o%3D&mno=0&info_la=9AChHTMC3uW%2BfY8%2BCFhcFw%3D%3D&info_ci=9AChHTMC3uW%2BfY8%2BCFhcFw%3D%3D&mcc=0&clientversion=&bssid=VY%2BeiuZRJ%2FwaXmoLLVUrMODX1ZTf%2F2dzsWn2AOEM0I4%3D&os_level=23&os_id=dc451556fc0eeadb&resolution=1080_1920&dpi=480&client_ip=192.168.0.198&pdunid=a83d20d8".format(hero_id)

下面就是愉快的代碼之旅了~

先熱熱身,通過urllib下載王者榮耀得英雄圖片,下面是代碼部分:

 1 # 下載王者榮耀英雄圖片
 2 def hero_imgs_download(url,header):
 3     # 獲取文本.text 獲取圖片 .content
 4     req = requests.get(url = url,headers = header).json()
 5     # 字典格式
 6     # print((req))
 7     hero_num = len(req['list'])
 8     print("一共有%d個英雄"%hero_num)
 9     hero_images_path = 'hero_images'
10     hero_list = req['list']
11     for each_hero in hero_list:
12         # print(each_hero)
13         hero_photo_url = each_hero['cover']
14         hero_name = each_hero['name'] + '.jpg'
15         filename = hero_images_path + '/' + hero_name
16         print("正在下載 %s的圖片"%each_hero['name'])
17         # if hero_images_path not in os.listdir():
18         #     os.makedirs(hero_images_path)
19         # 下載圖片
20         urlretrieve(url = hero_photo_url,filename = filename)

運行后下載圖片:

接下來是獲取英雄的名字和ID,代碼如下:

 1 # 打印所有英雄的名字和ID
 2 def hero_list(url,header):
 3     print('*' * 100)
 4     print('\t\t\t\t歡迎使用《王者榮耀》出裝小助手!')
 5     print('*' * 100)
 6     req = requests.get(url = url,headers = header).json()
 7     flag = 0
 8     hero_list = req['list']
 9     for each_hero in hero_list:
10         flag += 1
11         # 為end傳遞一個\t,這樣print函數不會在字符串末尾添加一個換行符,而是添加一個\t
12         print("%s的ID為:%s"%(each_hero['name'],each_hero['hero_id']),end = '\t\t')
13         if flag == 3:
14             # 先不加end  在加end 看效果
15             print('\n',end='')
16             flag = 0

運行效果如圖所示:

接下來就是出裝的最主要部分
根據用戶輸入的英雄ID,查詢出英雄的出裝,以及總價
代碼如下:
 1 # 獲取並打印出裝信息
 2 #Python學習交流群:125240963
 3 # weapon_info  所有武器的字典
 4 def hero_info(url,header,weapon_info):
 5     req = requests.get(url=url, headers=header).json()
 6     print("\n歷史上的%s:\n %s"%(req['info']['name'],req['info']['history_intro']))
 7     for each_equip_choice in req['info']['equip_choice']:
 8         # print(each_equip_choice)
 9         print('\n%s:%s'%(each_equip_choice['title'],each_equip_choice['description']))
10         flag = 0
11         total_price = 0
12         for each_weapon in each_equip_choice['list']:
13             flag += 1
14             weapon = seek_weapon(each_weapon['equip_id'],weapon_info)
15             # print(weapon)
16             weapon_name = weapon[0]
17             weapon_price = weapon[1]
18             print('%s:%s' % (weapon_name, weapon_price), end='\t')
19             if flag == 3:
20                 print('\n', end='')
21                 flag = 0
22             total_price += int(weapon_price)
23         print("神裝套件共計:%d"%total_price)

這個時候運行會有一些問題,seek_weapon函數還沒有定義,接下來定義seek_weapon,代碼如下:

# 根據equip_id查詢武器名字和價格
# weapon_info - 存儲所有武器的字典
def seek_weapon(equip_id,weapon_info):
    for each_weapon in weapon_info:
        if each_weapon['equip_id'] == str(equip_id):
            weapon_name = each_weapon['name']
            weapon_price = each_weapon['price']
            return weapon_name,weapon_price

seek_weapon函數在調用的時候,需要weapon_info,也就是所有武器的字典,這個時候就需要在定義一個函數來獲取武器的字典

1 # 獲取武器信息
2 def hero_weapon(url,header):
3     req = requests.get(url=url, headers=header).json()
4     weapon_info_list = req['list']
5     return weapon_info_list

另附headers

headers = {
    'Accept-Charset': 'UTF-8',
    'Accept-Encoding': 'gzip,deflate',
    'User-Agent': 'Dalvik/2.1.0 (Linux; U; Android 6.0.1; MI 5 MIUI/V8.1.6.0.MAACNDI)',
    'X-Requested-With': 'XMLHttpRequest',
    'Content-type': 'application/x-www-form-urlencoded',
    'Connection': 'Keep-Alive',
    'Host': 'gamehelper.gm825.com'
}

最終的運行效果下圖:

源代碼獲取地址

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM