Skip to content

Instantly share code, notes, and snippets.

@Lanjelin
Last active April 18, 2017 00:58
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 3 You must be signed in to fork a gist
  • Save Lanjelin/809b74f95a25b9ae3284a155b0134167 to your computer and use it in GitHub Desktop.
Save Lanjelin/809b74f95a25b9ae3284a155b0134167 to your computer and use it in GitHub Desktop.
WoW Armory
# -*- coding: utf-8 -*-
import urllib2, json
from multiprocessing.dummy import Pool as ThreadPool
from chars import chars
from charInfo import *
from createImg import *
from fetchChar import *
# Make the Pool of workers
pool = ThreadPool(int(len(chars)/3))
print "Workers: " + str(int(len(chars)/3))
def grabChars(chars):
return fetchChar(chars[0],chars[1],chars[2])
results = pool.map(grabChars, chars)
pool.close()
pool.join()
level = 0
num = 0
miss = 0
for x in range(0, int(len(results))):
if results[x] == "404":
miss += 1
else:
level += int(results[x][1])
num += 1
print "No. chars: " + str(num)
print "Avg level: " + str(level/num)
print "Tot level: " + str(level)
print ""
print "Chars 404: " + str(miss)
print ""
cf, cl, cr, cc, ct = [],[],[],[],[]
for char in sorted(results, key=lambda stuff: stuff[1], reverse=True):
if char == "404":
continue
else:
c_name, c_level, c_gender, c_race, c_class, c_spec, c_realm = char #Splitting items returned
cf.append(int(getNumFaction(c_race)))
cl.append(str(c_level))
cr.append(str(c_race) + "_" + str(c_gender))
cc.append(str(c_class))
if isinstance(c_spec,(int,long)):
ct.append(str(c_class) + "_" + str(c_spec))
else:
ct.append("0")
c_faction, c_gender, c_race, c_spec, c_class = getCharInfo(c_gender,c_race,c_class,c_spec) #Getting string values
print c_name.ljust(10, " ") + "\t" + str(c_level) + "\t" + c_faction.ljust(8, " ") + "\t" + c_gender + "\t" + c_race.ljust(10, " ") + "\t" + c_spec.ljust(13, " ") + "\t" + c_class
img = createImg(cf, cl, cr, cc, ct)
img.save('test.jpg')
# -*- coding: utf-8 -*-
#Translate numerical value to gender name of the character
def getGender(c_gender):
if (c_gender == 0):
return "Male"
elif (c_gender == 1):
return "Female"
#Translate numerical value to race name of the character
def getRace(c_race):
races = {
1:"Human",
2:"Orc",
3:"Dwarf",
4:"Night Elf",
5:"Undead",
6:"Tauren",
7:"Gnome",
8:"Troll",
9:"Goblin",
10:"Blood Elf",
11:"Draenei",
22:"Worgen",
24:"Pandaren", #Neutral
25:"Pandaren", #Alliance
26:"Pandaren" #Horde
}
if (races[c_race]):
return races[c_race]
#Translate numerical value to class name of the character
def getClass(c_class):
classes = {
1:"Warrior",
2:"Paladin",
3:"Hunter",
4:"Rogue",
5:"Priest",
6:"Death Knight",
7:"Shaman",
8:"Mage",
9:"Warlock",
10:"Monk",
11:"Druid",
12:"Demon Hunter"
}
if (classes[c_class]):
return classes[c_class]
#Translate numerical vale of class and spec into the name of spec of that character
def getSpec(c_class, c_spec):
specs = {
1:["Arms","Fury","Protection"],
2:["Holy","Protection","Retribution"],
3:["Beast Master","Marksmanship","Survival"],
4:["Assassination","Outlaw","Subtley"],
5:["Discipline","Holy","Shadow"],
6:["Blood","Frost","Unholy"],
7:["Elemental","Enhancement","Restoration"],
8:["Arcane","Fire","Frost"],
9:["Affliction","Demonology","Destruction"],
10:["Brewmaster","Mistweaver","Windwalker"],
11:["Balance","Feral","Guardian","Restoration"],
12:["Havoc","Vengeance"]
}
if (specs[c_class][c_spec]):
return specs[c_class][c_spec]
def getFaction(c_race):
ally = [1,3,4,7,11,22,25]
horde = [2,5,6,8,9,10,26]
if c_race in ally:
return "Alliance"
elif c_race in horde:
return "Horde"
else: #Should be num 24 aka Panda only
return "Neutral"
def getNumFaction(c_race):
ally = [1,3,4,7,11,22,25]
horde = [2,5,6,8,9,10,26]
if c_race in ally:
return 1
elif c_race in horde:
return 2
else:
return 0
def getCharInfo(in_gender, in_race, in_class, in_spec):
return getFaction(in_race), getGender(in_gender), getRace(in_race), getSpec(in_class, in_spec), getClass(in_class)
#c_faction, c_gender, c_race, c_spec, c_class = getCharInfo(1,1,9,1)
#print c_faction + c_gender + c_race + c_spec + c_class
#info = getCharInfo(1,1,9,1)
#print info[0]
# -*- coding: utf-8 -*-
chars = [
("Lanjelin","Stormreaver","EU"),
("Slemmingen","Stormreaver","EU"),
("Mutator","Stormreaver","EU"),
("Tengle","Stormreaver","EU"),
("Thil","Stormreaver","EU"),
("Verberatus","Stormreaver","EU"),
("Badingo","Stormreaver","EU"),
("Lillija","Stormreaver","EU"),
("Minch","Stormreaver","EU"),
("Thraag","Stormreaver","EU"),
("Zanglia","Stormreaver","EU"),
("Zefonith","Stormreaver","EU"),
("Abeo","Frostmane","EU"),
("Clones","Frostmane","EU"),
("Venath","Frostmane","EU"),
("Zefonith","Frostmane","EU"),
("Zèrg","Frostmane","EU"),
("Lanjelin","Frostmane","EU"),
("Minath","Frostmane","EU"),
("Insomnium","Frostmane","EU"),
("Ilil","Frostmane","EU"),
("Zodila","Frostmane","EU"),
("Zanglia","Frostmane","EU"),
("Flazago","Aszune","EU"),
("Wulver","Aszune","EU"),
("Knoplia","Aszune","EU"),
("Kemek","Aszune","EU"),
("Sulia","Aszune","EU"),
("Tigia","Aszune","EU"),
("Whoper","Aszune","EU"),
("Waldek","Aszune","EU"),
("Mythisio","Aszune","EU"),
("Comala","Aszune","EU"),
("Solab","Aszune","EU"),
("Heilageku","Grim Batol","EU"),
("Kalyps","Grim Batol","EU"),
("Cili","Grim Batol","EU"),
("Corali","Grim Batol","EU"),
("Kaliti","Grim Batol","EU"),
("Awry","Grim Batol","EU"),
("Daunakken","Grim Batol","EU"),
("Qant","Grim Batol","EU"),
("Minitaur","Grim Batol","EU"),
("Colossia","Grim Batol","EU"),
("Klandaia","Grim Batol","EU"),
("Zorkia","Defias Brotherhood","EU"),
("Invictu","Defias Brotherhood","EU"),
("Carlyps","Defias Brotherhood","EU"),
("Tilath","Defias Brotherhood","EU"),
("Dorgul","Defias Brotherhood","EU")
]
# -*- coding: utf-8 -*-
from PIL import Image
from PIL import ImageDraw
#from PIL import ImageFont
imloc = "./wow/"
def createImg(cf, cl, cr, cc, ct): #faction, level, race, class, talent
tot_w = int(len(cr)) * 18
tot_h = 72 #4 img height
new_im = Image.new('RGB', (tot_w, tot_h))
offset_x = 0
draw = ImageDraw.Draw(new_im)
#font = ImageFont.truetype("RobotoCondensed-Bold.ttf", 16) # throws error, missing lib
fcolors = {
0:"yellow",
1:"blue",
2:"red"
}
for cfac, clev, crace, cclass, ctalent in zip(cf, cl, cr, cc, ct):
draw.rectangle([(offset_x * 18, 0),(offset_x * 18 + 18, 18)], (fcolors[int(cfac)]), outline=None)
draw.text((offset_x * 18 + 9 - (len(clev)*3), 3),clev,(255,255,255))
new_im.paste(Image.open(imloc + "r_" + crace + ".jpg"), (offset_x * 18, 18))
new_im.paste(Image.open(imloc + "c_" + cclass + ".jpg"), (offset_x * 18, 36))
new_im.paste(Image.open(imloc + "t_" + ctalent + ".jpg"), (offset_x * 18, 54))
offset_x += 1
draw.line(((offset_x * 18)-1,0, (offset_x * 18)-1,tot_h), fill="black", width=1)
draw.line(((offset_x - 1) * 18,18, offset_x * 18,18), fill="black", width=1)
draw.line(((offset_x - 1) * 18,36, offset_x * 18,36), fill="black", width=1)
draw.line(((offset_x - 1) * 18,54, offset_x * 18,54), fill="black", width=1)
draw.line((0,0, 0,tot_h), fill="black", width=1)
draw.line((0,0, tot_w,0), fill="black", width=1)
draw.line((0,tot_h, tot_w,tot_h), fill="black", width=1)
draw.line((tot_w,0, tot_w,tot_h), fill="black", width=1)
return new_im
cfac = ["1","2","1",1]
clev = ["1","76","109", "12"]
crac = ["5_1","4_0","8_1", "2_1"]
ccla = ["4","7","11", "12"]
ctal = ["5_2","4_1","3_1","7_1"]
#createImg(cfac, clev, crac, ccla, ctal).save('test.jpg')
# -*- coding: utf-8 -*-
import os
from urllib2 import urlopen, URLError, HTTPError, build_opener
def Download(url, file):
name = file
try:
o = build_opener()
o.addheaders = [('User-agent', 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:33.0) Gecko/20120101 Firefox/33.0')]
get = o.open(url)
with open(file, "wb") as file:
file.write(get.read())
file.close()
return os.path.basename(file.name) + " saved successfully."
except HTTPError, e:
return "HTTP Error: " + str(e.code) + " - " + name #url
except URLError, e:
return "URL Error: " + str(e.reason) + " - " + name #url
def Down(url):
file = url.split('/')[-1]
return Download(url, file)
#print downloadSimple("http://placehold.it/350x150")
# -*- coding: utf-8 -*-
import urllib2, json
apikey = "m7ec9xtrvn6p3fj8bpndt978um8m78g6"
def fetchChar(name, realm, loc):
if loc.upper() == "CN":
#Still not working though, see dev forum.
url = "https://api.battlenet.com.cn/wow/character/"+realm+"/"+name+"?fields=talents&locale=en_GB&apikey="+apikey
else:
url = "https://"+loc+".api.battle.net/wow/character/"+realm+"/"+name+"?fields=talents&locale=en_GB&apikey="+apikey
try:
response = urllib2.urlopen(url)
except:
print "Couldn't find "+name+" - "+realm+" - "+loc
return "404"
else:
data = json.load(response)
for item in data["talents"]:
if item["calcSpec"]:
try:
if item["selected"]:
talent = item["spec"]["order"]
except:
continue
return data['name'].encode("utf-8"), data['level'], data['gender'], data['race'], data['class'], talent, data['realm'].encode("utf-8")
#print fetchChar("Lanjelin","Stormreaver","EU")
# -*- coding: utf-8 -*-
from download import *
path = "./wow/"
print Download("http://wow.zamimg.com/images/wow/icons/small/class_warrior.jpg", path+"c_1.jpg")
print Download("http://wow.zamimg.com/images/wow/icons/small/class_paladin.jpg", path+"c_2.jpg")
print Download("http://wow.zamimg.com/images/wow/icons/small/class_hunter.jpg", path+"c_3.jpg")
print Download("http://wow.zamimg.com/images/wow/icons/small/class_rogue.jpg", path+"c_4.jpg")
print Download("http://wow.zamimg.com/images/wow/icons/small/class_priest.jpg", path+"c_5.jpg")
print Download("http://wow.zamimg.com/images/wow/icons/small/class_deathknight.jpg", path+"c_6.jpg")
print Download("http://wow.zamimg.com/images/wow/icons/small/class_shaman.jpg", path+"c_7.jpg")
print Download("http://wow.zamimg.com/images/wow/icons/small/class_mage.jpg", path+"c_8.jpg")
print Download("http://wow.zamimg.com/images/wow/icons/small/class_warlock.jpg", path+"c_9.jpg")
print Download("http://wow.zamimg.com/images/wow/icons/small/class_monk.jpg", path+"c_10.jpg")
print Download("http://wow.zamimg.com/images/wow/icons/small/class_druid.jpg", path+"c_11.jpg")
print Download("http://wow.zamimg.com/images/wow/icons/small/class_demonhunter.jpg", path+"c_12.jpg")
print Download("http://wow.zamimg.com/images/wow/icons/small/race_human_male.jpg", path+"r_1_0.jpg")
print Download("http://wow.zamimg.com/images/wow/icons/small/race_human_female.jpg", path+"r_1_1.jpg")
print Download("http://wow.zamimg.com/images/wow/icons/small/race_orc_male.jpg", path+"r_2_0.jpg")
print Download("http://wow.zamimg.com/images/wow/icons/small/race_orc_female.jpg", path+"r_2_1.jpg")
print Download("http://wow.zamimg.com/images/wow/icons/small/race_dwarf_male.jpg", path+"r_3_0.jpg")
print Download("http://wow.zamimg.com/images/wow/icons/small/race_dwarf_female.jpg", path+"r_3_1.jpg")
print Download("http://wow.zamimg.com/images/wow/icons/small/race_nightelf_male.jpg", path+"r_4_0.jpg")
print Download("http://wow.zamimg.com/images/wow/icons/small/race_nightelf_female.jpg", path+"r_4_1.jpg")
print Download("http://wow.zamimg.com/images/wow/icons/small/race_scourge_male.jpg", path+"r_5_0.jpg")
print Download("http://wow.zamimg.com/images/wow/icons/small/race_scourge_female.jpg", path+"r_5_1.jpg")
print Download("http://wow.zamimg.com/images/wow/icons/small/race_tauren_male.jpg", path+"r_6_0.jpg")
print Download("http://wow.zamimg.com/images/wow/icons/small/race_tauren_female.jpg", path+"r_6_1.jpg")
print Download("http://wow.zamimg.com/images/wow/icons/small/race_gnome_male.jpg", path+"r_7_0.jpg")
print Download("http://wow.zamimg.com/images/wow/icons/small/race_gnome_female.jpg", path+"r_7_1.jpg")
print Download("http://wow.zamimg.com/images/wow/icons/small/race_troll_male.jpg", path+"r_8_0.jpg")
print Download("http://wow.zamimg.com/images/wow/icons/small/race_troll_female.jpg", path+"r_8_1.jpg")
print Download("http://wow.zamimg.com/images/wow/icons/small/race_goblin_male.jpg", path+"r_9_0.jpg")
print Download("http://wow.zamimg.com/images/wow/icons/small/race_goblin_female.jpg", path+"r_9_1.jpg")
print Download("http://wow.zamimg.com/images/wow/icons/small/race_bloodelf_male.jpg", path+"r_10_0.jpg")
print Download("http://wow.zamimg.com/images/wow/icons/small/race_bloodelf_female.jpg", path+"r_10_1.jpg")
print Download("http://wow.zamimg.com/images/wow/icons/small/race_draenei_male.jpg", path+"r_11_0.jpg")
print Download("http://wow.zamimg.com/images/wow/icons/small/race_draenei_female.jpg", path+"r_11_1.jpg")
print Download("http://wow.zamimg.com/images/wow/icons/small/race_worgen_male.jpg", path+"r_22_0.jpg")
print Download("http://wow.zamimg.com/images/wow/icons/small/race_worgen_female.jpg", path+"r_22_1.jpg")
print Download("http://wow.zamimg.com/images/wow/icons/small/race_pandaren_male.jpg", path+"r_24_0.jpg")
print Download("http://wow.zamimg.com/images/wow/icons/small/race_pandaren_female.jpg", path+"r_24_1.jpg")
print Download("http://wow.zamimg.com/images/wow/icons/small/race_pandaren_male.jpg", path+"r_25_0.jpg")
print Download("http://wow.zamimg.com/images/wow/icons/small/race_pandaren_female.jpg", path+"r_25_1.jpg")
print Download("http://wow.zamimg.com/images/wow/icons/small/race_pandaren_male.jpg", path+"r_26_0.jpg")
print Download("http://wow.zamimg.com/images/wow/icons/small/race_pandaren_female.jpg", path+"r_26_1.jpg")
print Download("http://wow.zamimg.com/images/wow/icons/small/ability_warrior_savageblow.jpg", path+"t_1_0.jpg")
print Download("http://wow.zamimg.com/images/wow/icons/small/ability_warrior_innerrage.jpg", path+"t_1_1.jpg")
print Download("http://wow.zamimg.com/images/wow/icons/small/ability_warrior_defensivestance.jpg", path+"t_1_2.jpg")
print Download("http://wow.zamimg.com/images/wow/icons/small/spell_holy_holybolt.jpg", path+"t_2_0.jpg")
print Download("http://wow.zamimg.com/images/wow/icons/small/ability_paladin_shieldofthetemplar.jpg", path+"t_2_1.jpg")
print Download("http://wow.zamimg.com/images/wow/icons/small/spell_holy_auraoflight.jpg", path+"t_2_2.jpg")
print Download("http://wow.zamimg.com/images/wow/icons/small/ability_hunter_bestialdiscipline.jpg", path+"t_3_0.jpg")
print Download("http://wow.zamimg.com/images/wow/icons/small/ability_hunter_focusedaim.jpg", path+"t_3_1.jpg")
print Download("http://wow.zamimg.com/images/wow/icons/small/ability_hunter_camouflage.jpg", path+"t_3_2.jpg")
print Download("http://wow.zamimg.com/images/wow/icons/small/ability_rogue_eviscerate.jpg", path+"t_4_0.jpg")
print Download("http://wow.zamimg.com/images/wow/icons/small/ability_backstab.jpg", path+"t_4_1.jpg")
print Download("http://wow.zamimg.com/images/wow/icons/small/ability_stealth.jpg", path+"t_4_2.jpg")
print Download("http://wow.zamimg.com/images/wow/icons/small/spell_holy_powerwordshield.jpg", path+"t_5_0.jpg")
print Download("http://wow.zamimg.com/images/wow/icons/small/spell_holy_guardianspirit.jpg", path+"t_5_1.jpg")
print Download("http://wow.zamimg.com/images/wow/icons/small/spell_shadow_shadowwordpain.jpg", path+"t_5_2.jpg")
print Download("http://wow.zamimg.com/images/wow/icons/small/spell_deathknight_bloodpresence.jpg", path+"t_6_0.jpg")
print Download("http://wow.zamimg.com/images/wow/icons/small/spell_deathknight_frostpresence.jpg", path+"t_6_1.jpg")
print Download("http://wow.zamimg.com/images/wow/icons/small/spell_deathknight_unholypresence.jpg", path+"t_6_2.jpg")
print Download("http://wow.zamimg.com/images/wow/icons/small/spell_nature_lightning.jpg", path+"t_7_0.jpg")
print Download("http://wow.zamimg.com/images/wow/icons/small/spell_nature_lightningshield.jpg", path+"t_7_1.jpg")
print Download("http://wow.zamimg.com/images/wow/icons/small/spell_nature_magicimmunity.jpg", path+"t_7_2.jpg")
print Download("http://wow.zamimg.com/images/wow/icons/small/spell_holy_magicalsentry.jpg", path+"t_8_0.jpg")
print Download("http://wow.zamimg.com/images/wow/icons/small/spell_fire_firebolt02.jpg", path+"t_8_1.jpg")
print Download("http://wow.zamimg.com/images/wow/icons/small/spell_frost_frostbolt02.jpg", path+"t_8_2.jpg")
print Download("http://wow.zamimg.com/images/wow/icons/small/spell_shadow_deathcoil.jpg", path+"t_9_0.jpg")
print Download("http://wow.zamimg.com/images/wow/icons/small/spell_shadow_metamorphosis.jpg", path+"t_9_1.jpg")
print Download("http://wow.zamimg.com/images/wow/icons/small/spell_shadow_rainoffire.jpg", path+"t_9_2.jpg")
print Download("http://wow.zamimg.com/images/wow/icons/small/monk_stance_drunkenox.jpg", path+"t_10_0.jpg")
print Download("http://wow.zamimg.com/images/wow/icons/small/monk_stance_wiseserpent.jpg", path+"t_10_1.jpg")
print Download("http://wow.zamimg.com/images/wow/icons/small/monk_stance_whitetiger.jpg", path+"t_10_2.jpg")
print Download("http://wow.zamimg.com/images/wow/icons/small/spell_nature_starfall.jpg", path+"t_11_0.jpg")
print Download("http://wow.zamimg.com/images/wow/icons/small/ability_druid_catform.jpg", path+"t_11_1.jpg")
print Download("http://wow.zamimg.com/images/wow/icons/small/ability_racial_bearform.jpg", path+"t_11_2.jpg")
print Download("http://wow.zamimg.com/images/wow/icons/small/spell_nature_healingtouch.jpg", path+"t_11_3.jpg")
print Download("http://wow.zamimg.com/images/wow/icons/small/ability_demonhunter_specdps.jpg", path+"t_12_0.jpg")
print Download("http://wow.zamimg.com/images/wow/icons/small/ability_demonhunter_spectank.jpg", path+"t_12_1.jpg")
print Download("http://wow.zamimg.com/images/wow/icons/small/inv_misc_questionmark.jpg", path+"t_0.jpg")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment