Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # Purpose: Gather threads and save to text for data parsing
- from socket import socket
- from urllib import urlopen
- import urllib2, re
- import urllib, re
- pokemonlist = {}
- tier = "XY OU"
- week = 9
- savefile = file(r'C:\Users\Chester Yap\Documents\TourProject\\splstats.txt', "w")
- url = "http://www.smogon.com/forums/threads/spl-5-logs-replays.3497301/"
- smogonpage = urlopen(url).read().split('\n')
- #smogonpage = smogonpage[700:] # Week 2
- #smogonpage = smogonpage[1000:] # Week 3
- #smogonpage = smogonpage[1200:] # Week 4
- #smogonpage = smogonpage[1335:] # Week 5
- #smogonpage = smogonpage[1425:] # Week 6
- y = 0
- start = 0
- for entry in smogonpage:
- if "Week 9" in entry:
- print entry
- start = y
- if "Semifinals" in entry:
- print entry
- break
- y += 1
- smogonpage = smogonpage[start:y]
- #print smogonpage
- for entry in smogonpage:
- if "Semifinals" in entry:
- break
- if "pastebin" in entry:
- winlist = []
- loselist = []
- replayurl = entry.split('"')[1]
- print replayurl
- replaycontent = urlopen(replayurl).read()
- replaycontent = replaycontent.split('\n')
- for i in range(len(replaycontent)-1,0,-1):
- #print replaycontent[i]
- if ("won the battle!") in replaycontent[i]:
- winner = replaycontent[i].split(" won the battle!")[0].strip(" ")
- loser = 0
- break
- if "forfeited against" in replaycontent[i]:
- winner = replaycontent[i].split(" forfeited against ")[1]
- if "!<" in winner:
- winner = winner.split("!<")[0]
- loser = replaycontent[i].split(" forfeited against ")[0]
- if '"<' in loser:
- loser = loser.split('"<')[1]
- if '<li class="li2"><div class="de2">' in loser:
- loser = loser.split('<li class="li2"><div class="de2">')[1]
- if '<li class="li1"><div class="de1">' in loser:
- loser = loser.split('<li class="li1"><div class="de1">')[1]
- break
- if week == 4:
- if "Delta" in entry:
- winner = "199 Lives"
- loser = "Delta 2777"
- elif "Vinc" in entry:
- winner = "DracoMalfoy"
- loser = "Vinc2612"
- elif "Karrot" in entry:
- winner = "Karrot"
- loser = "woot"
- if week == 5:
- if "Ojama" in entry:
- winner = "VisionarY"
- loser = "genesectite"
- if week == 6:
- if "High Impulse" in entry:
- winner = "High Impulse"
- loser = "Clara.M"
- if "Blue Eon" in entry:
- winner = "Bedschibaer"
- loser = "B Eon"
- if "idiotfrommars" in entry:
- winner = "absurd"
- loser = "IFM"
- if "Ojama" in entry:
- winner = "]V[ajinTupacZ"
- loser = "TJ Oshie"
- if week == 7:
- if "High Impulse" in entry:
- winner = "blueprint"
- loser = "XLR8"
- for line in replaycontent:
- #print line
- if "Battle between " in line and loser == 0:
- print line
- loser = line.split("between ")[1]
- if " is underway!" in line:
- loser = loser.split(" is underway!")[0]
- else:
- loser = loser.split(" started!")[0]
- if winner+" and " in line:
- loser = loser.split(winner+" and ")[1]
- player1 = winner
- else:
- loser = loser.split(" and "+winner)[0]
- player1 = loser
- loser = loser.strip(" ")
- print loser
- elif " sent out " in line or "Go!" in line:
- if " sent out " in line:
- subject = line.split(" sent out ")
- player = subject[0]
- if "! (" in line:
- pokemon = subject[1].split("! (")[1].split(")")[0]
- #print pokemon
- else:
- pokemon = subject[1].strip("!\r").split("!</div></li>")[0].split(">")[0]
- #elif "was dragged" in line:
- #subject = line.split("was dragged")
- else:
- pokemon = line.split(" (")[1].split(")")[0]
- player = player1
- if pokemon.startswith("Mega "):
- pokemon = pokemon.split(" ")[1].strip(" X").strip(" Y")
- if player == winner:
- if pokemon not in winlist:
- winlist.append(pokemon)
- elif player == loser:
- if pokemon not in loselist:
- loselist.append(pokemon)
- if tier not in pokemonlist:
- pokemonlist[tier] = {}
- for pokemon in winlist:
- print "1", pokemon
- if pokemon == "Rotom-H":
- pokemon = "Rotom-Heat"
- if pokemon == "Rotom-C":
- pokemon = "Rotom-Cut"
- if pokemon == "Rotom-W":
- pokemon = "Rotom-Wash"
- if pokemon == "Keldeo-Resolute" or pokemon == "Keldeo-R":
- pokemon = "Keldeo"
- if pokemon == "Deoxys-S":
- pokemon = "Deoxys-Speed"
- if pokemon == "Kyurem-B":
- pokemon = "Kyurem-Black"
- if "-T" in pokemon:
- #print pokemon
- pokemon = pokemon.replace("-T","-Therian")
- if pokemon not in pokemonlist[tier]:
- pokemonlist[tier][pokemon] = {}
- pokemonlist[tier][pokemon]["usage"] = 1
- pokemonlist[tier][pokemon]["win"] = 1
- pokemonlist[tier][pokemon]["loss"] = 0
- else:
- pokemonlist[tier][pokemon]["usage"] += 1
- pokemonlist[tier][pokemon]["win"] += 1
- for pokemon in loselist:
- print "2", pokemon
- if pokemon == "Rotom-W":
- pokemon = "Rotom-Wash"
- if pokemon == "Keldeo-Resolute" or pokemon == "Keldeo-R":
- pokemon = "Keldeo"
- if pokemon == "Deoxys-S":
- pokemon = "Deoxys-Speed"
- if pokemon == "Kyurem-B":
- pokemon = "Kyurem-Black"
- if pokemon == "Rotom-H":
- pokemon = "Rotom-Heat"
- if pokemon == "Rotom-C":
- pokemon = "Rotom-Cut"
- if "-T" in pokemon:
- pokemon = pokemon.replace("-T","-Therian")
- if pokemon.startswith("Mega "):
- pokemon = pokemon.split(" ")[1].strip(" X").strip(" Y")
- if pokemon not in pokemonlist[tier]:
- pokemonlist[tier][pokemon] = {}
- pokemonlist[tier][pokemon]["usage"] = 1
- pokemonlist[tier][pokemon]["win"] = 0
- pokemonlist[tier][pokemon]["loss"] = 1
- else:
- pokemonlist[tier][pokemon]["usage"] += 1
- pokemonlist[tier][pokemon]["loss"] += 1
- elif "replay.pokemonshowdown" in entry:
- if week == 9:
- if "-Tsunami-" in entry:
- continue
- winner = 0
- arcount = 0
- p1poke = []
- p2poke = []
- #print entry
- replayurl = entry.split('"')[1]#+".src"
- replaycontent = urlopen(replayurl).read().split('\n')
- #print replaycontent
- if tier not in pokemonlist:
- pokemonlist[tier] = {}
- if "XY" in tier or "BW" in tier:
- for line in replaycontent:
- if line.startswith("|player|p1|"):
- p1 = line.split("|")[3]
- if line.startswith("|player|p2|"):
- p2 = line.split("|")[3]
- if line.startswith("|poke|p1|"):
- p1poke.append(line.lstrip("|poke|p1|").split(",")[0])
- if "Arceus" in line:
- arcount += 1
- elif line.startswith("|poke|p2|"):
- p2poke.append(line.lstrip("|poke|p2|").split(",")[0])
- if "Arceus" in line:
- arcount += 1
- if len(p2poke) == 6:
- break
- if ("XY" not in tier and "BW" not in tier) or "Uber" in tier:
- for line in replaycontent:
- if line.startswith("|switch|"):
- pokemon = line.split("|")[3].split(",")[0]
- if line.startswith("|switch|p1") and pokemon not in p1poke:
- p1poke.append(pokemon)
- if "Arceus" in pokemon:
- p1poke.remove("Arceus-*")
- arcount -= 1
- elif line.startswith("|switch|p2") and pokemon not in p2poke:
- p2poke.append(pokemon)
- if "Arceus" in pokemon:
- p2poke.remove("Arceus-*")
- arcount -= 1
- if len(p1poke) == 6 and len(p2poke) == 6 and arcount == 0:
- break
- for i in range(len(replaycontent)-1,0,-1):
- if replaycontent[i].startswith("|win|"):
- winner = replaycontent[i].lstrip("|win|")
- #print winner
- break
- #print winner
- if winner == 0:
- if week == 4:
- if p1 == "PSYCHOTIC":
- winner = p1
- if week == 6:
- if p1 == "Misery Business":
- winner = p1
- if winner == p1:
- #print winner
- winlist = p1poke
- loselist = p2poke
- else:
- winlist = p2poke
- loselist = p1poke
- print "win", winlist
- print "lose", loselist
- for pokemon in winlist:
- if "-Resolute" in pokemon:
- pokemon = "Keldeo"
- if pokemon not in pokemonlist[tier]:
- pokemonlist[tier][pokemon] = {}
- pokemonlist[tier][pokemon]["usage"] = 1
- if week == 4 and winner == "Karrot":
- pokemonlist[tier][pokemon]["win"] = 0.5
- else:
- pokemonlist[tier][pokemon]["win"] = 1
- pokemonlist[tier][pokemon]["loss"] = 0
- else:
- pokemonlist[tier][pokemon]["usage"] += 1
- if week == 4 and winner == "Karrot":
- pokemonlist[tier][pokemon]["win"] += 0.5
- else:
- pokemonlist[tier][pokemon]["win"] += 1
- for pokemon in loselist:
- if "-Resolute" in pokemon:
- pokemon = "Keldeo"
- if pokemon not in pokemonlist[tier]:
- pokemonlist[tier][pokemon] = {}
- pokemonlist[tier][pokemon]["usage"] = 1
- if week == 4 and winner == "Karrot":
- pokemonlist[tier][pokemon]["win"] = 0.5
- else:
- pokemonlist[tier][pokemon]["win"] = 0
- pokemonlist[tier][pokemon]["loss"] = 1
- else:
- pokemonlist[tier][pokemon]["usage"] += 1
- if week == 4 and winner == "Karrot":
- pokemonlist[tier][pokemon]["win"] = 0.5
- else:
- pokemonlist[tier][pokemon]["loss"] += 1
- elif "[" in entry:
- tier = entry.split("[")[1].split("]")[0]
- for tier in pokemonlist:
- for pokemon in pokemonlist[tier]:
- pokemonlist[tier][pokemon]["winpercent"] = float(pokemonlist[tier][pokemon]["win"]) / pokemonlist[tier][pokemon]["usage"]
- #print pokemon, pokemonlist[tier][pokemon]["winpercent"]
- vlist = ["usage"]
- #tierlist = ["XY OU"]
- tierlist = ["XY OU", "XY Uber", "XY LC", "XY Doubles", "BW OU", "BW UU", "BW RU", "BW NU", "DPP OU", "ADV OU", "GSC OU"]
- dexmap = file(r'C:\Users\Chester Yap\Documents\TourProject\\dexmap.txt',"r").readlines()
- for variable in vlist:
- for tier in tierlist:
- numlist = {}
- order = []
- rank = 1
- net = 0
- for pokemon in pokemonlist[tier]:
- num = pokemonlist[tier][pokemon][variable]
- if num not in numlist:
- numlist[num] = []
- order.append(num)
- numlist[num].append(pokemon)
- #print order
- order.sort()
- order.reverse()
- sprite = numlist[order[0]][0]
- for line in dexmap:
- if sprite in line:
- spritenum = line.split("#")[1]
- if int(spritenum) > 493:
- sprite = "[IMG]http://www.serebii.net/pokedex-xy/icon/"+spritenum+".png[/IMG]"
- else:
- sprite = "[IMG]http://www.serebii.net/pokedex-bw/icon/"+spritenum+".gif[/IMG]"
- break
- #print numlist
- savefile.write('\n'+sprite+'[B]'+tier+'[/B]'+sprite+'\n')
- savefile.write('[CODE]')
- savefile.write('Rnk | Pokemon | Use | Use % | Win %\n')
- for integer in order:
- for pokemon in numlist[integer]:
- savefile.write(str(rank)+' '*(4-len(str(rank)))+'| ')
- savefile.write(pokemon+' '*(20-len(pokemon))+'| ')
- usage = str(pokemonlist[tier][pokemon][variable])
- #if variable == "winpercent":
- #usage = str(round(float(usage)*100))+'%'
- savefile.write(usage)
- net += int(usage)
- if variable == "usage":
- if week == 4 and tier == "ADV OU":
- total = 8
- if week == 8 and tier == "XY LC":
- total = 8
- if week == 9:
- if tier == "XY OU":
- total = 16
- elif tier == "BW UU" or tier == "DPP OU":
- total = 8
- elif tier == "BW RU" or tier == "ADV OU":
- total = 6
- else:
- total = 10
- elif tier == "XY OU":
- total = 20
- else:
- total = 10
- savefile.write(" "*(4-len(usage))+'| ')
- percent = str(int(100*float(pokemonlist[tier][pokemon][variable])/total))#.rstrip(".0")
- savefile.write(percent+'%'+' '*(5-len(percent))+'| ')
- savefile.write(str(int(round(float((pokemonlist[tier][pokemon]["winpercent"]))*100)))+'%')
- #print pokemon, tier, pokemonlist[tier][pokemon]["winpercent"]
- savefile.write('\n')
- rank += len(numlist[integer])
- savefile.write('[/CODE]')
- print net
- #for pokemon in pokemonlist[tier]:
- savefile.close()
- #winner = |win|LET EM HAVE IT L'
- #print replaycontent
- #page = str(entrylist)
- #page = "http://replay.pokemonshowdown.com/"
- #pagecontent = urlopen(page).read()
- #pagecontent = pagecontent.split('\n')
- #print pagecontent
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement