Advertisement
Guest User

Untitled

a guest
Mar 29th, 2014
17
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 12.02 KB | None | 0 0
  1. # Purpose: Gather threads and save to text for data parsing
  2.  
  3. from socket import socket
  4. from urllib import urlopen
  5. import urllib2, re
  6. import urllib, re
  7.  
  8. pokemonlist = {}
  9.  
  10. tier = "XY OU"
  11. week = 9
  12. savefile = file(r'C:\Users\Chester Yap\Documents\TourProject\\splstats.txt', "w")
  13. url = "http://www.smogon.com/forums/threads/spl-5-logs-replays.3497301/"
  14. smogonpage = urlopen(url).read().split('\n')
  15. #smogonpage = smogonpage[700:] # Week 2
  16. #smogonpage = smogonpage[1000:] # Week 3
  17. #smogonpage = smogonpage[1200:] # Week 4
  18. #smogonpage = smogonpage[1335:] # Week 5
  19. #smogonpage = smogonpage[1425:] # Week 6
  20.  
  21. y = 0
  22. start = 0
  23. for entry in smogonpage:
  24. if "Week 9" in entry:
  25. print entry
  26. start = y
  27. if "Semifinals" in entry:
  28. print entry
  29. break
  30. y += 1
  31. smogonpage = smogonpage[start:y]
  32.  
  33. #print smogonpage
  34. for entry in smogonpage:
  35.  
  36. if "Semifinals" in entry:
  37. break
  38.  
  39. if "pastebin" in entry:
  40. winlist = []
  41. loselist = []
  42. replayurl = entry.split('"')[1]
  43. print replayurl
  44. replaycontent = urlopen(replayurl).read()
  45. replaycontent = replaycontent.split('\n')
  46.  
  47. for i in range(len(replaycontent)-1,0,-1):
  48. #print replaycontent[i]
  49.  
  50. if ("won the battle!") in replaycontent[i]:
  51. winner = replaycontent[i].split(" won the battle!")[0].strip(" ")
  52. loser = 0
  53. break
  54.  
  55. if "forfeited against" in replaycontent[i]:
  56. winner = replaycontent[i].split(" forfeited against ")[1]
  57. if "!<" in winner:
  58. winner = winner.split("!<")[0]
  59. loser = replaycontent[i].split(" forfeited against ")[0]
  60. if '"<' in loser:
  61. loser = loser.split('"<')[1]
  62. if '<li class="li2"><div class="de2">' in loser:
  63. loser = loser.split('<li class="li2"><div class="de2">')[1]
  64. if '<li class="li1"><div class="de1">' in loser:
  65. loser = loser.split('<li class="li1"><div class="de1">')[1]
  66. break
  67.  
  68. if week == 4:
  69.  
  70. if "Delta" in entry:
  71. winner = "199 Lives"
  72. loser = "Delta 2777"
  73. elif "Vinc" in entry:
  74. winner = "DracoMalfoy"
  75. loser = "Vinc2612"
  76. elif "Karrot" in entry:
  77. winner = "Karrot"
  78. loser = "woot"
  79.  
  80. if week == 5:
  81. if "Ojama" in entry:
  82. winner = "VisionarY"
  83. loser = "genesectite"
  84.  
  85. if week == 6:
  86. if "High Impulse" in entry:
  87. winner = "High Impulse"
  88. loser = "Clara.M"
  89. if "Blue Eon" in entry:
  90. winner = "Bedschibaer"
  91. loser = "B Eon"
  92. if "idiotfrommars" in entry:
  93. winner = "absurd"
  94. loser = "IFM"
  95. if "Ojama" in entry:
  96. winner = "]V[ajinTupacZ"
  97. loser = "TJ Oshie"
  98.  
  99. if week == 7:
  100. if "High Impulse" in entry:
  101. winner = "blueprint"
  102. loser = "XLR8"
  103.  
  104.  
  105. for line in replaycontent:
  106. #print line
  107. if "Battle between " in line and loser == 0:
  108. print line
  109. loser = line.split("between ")[1]
  110. if " is underway!" in line:
  111. loser = loser.split(" is underway!")[0]
  112. else:
  113. loser = loser.split(" started!")[0]
  114.  
  115. if winner+" and " in line:
  116. loser = loser.split(winner+" and ")[1]
  117. player1 = winner
  118. else:
  119. loser = loser.split(" and "+winner)[0]
  120. player1 = loser
  121.  
  122. loser = loser.strip(" ")
  123. print loser
  124.  
  125. elif " sent out " in line or "Go!" in line:
  126.  
  127. if " sent out " in line:
  128. subject = line.split(" sent out ")
  129. player = subject[0]
  130. if "! (" in line:
  131. pokemon = subject[1].split("! (")[1].split(")")[0]
  132. #print pokemon
  133. else:
  134. pokemon = subject[1].strip("!\r").split("!</div></li>")[0].split(">")[0]
  135.  
  136. #elif "was dragged" in line:
  137. #subject = line.split("was dragged")
  138.  
  139. else:
  140. pokemon = line.split(" (")[1].split(")")[0]
  141. player = player1
  142.  
  143. if pokemon.startswith("Mega "):
  144. pokemon = pokemon.split(" ")[1].strip(" X").strip(" Y")
  145.  
  146. if player == winner:
  147. if pokemon not in winlist:
  148. winlist.append(pokemon)
  149. elif player == loser:
  150. if pokemon not in loselist:
  151. loselist.append(pokemon)
  152.  
  153.  
  154. if tier not in pokemonlist:
  155. pokemonlist[tier] = {}
  156.  
  157. for pokemon in winlist:
  158. print "1", pokemon
  159.  
  160. if pokemon == "Rotom-H":
  161. pokemon = "Rotom-Heat"
  162.  
  163. if pokemon == "Rotom-C":
  164. pokemon = "Rotom-Cut"
  165.  
  166. if pokemon == "Rotom-W":
  167. pokemon = "Rotom-Wash"
  168.  
  169. if pokemon == "Keldeo-Resolute" or pokemon == "Keldeo-R":
  170. pokemon = "Keldeo"
  171.  
  172. if pokemon == "Deoxys-S":
  173. pokemon = "Deoxys-Speed"
  174.  
  175. if pokemon == "Kyurem-B":
  176. pokemon = "Kyurem-Black"
  177.  
  178. if "-T" in pokemon:
  179. #print pokemon
  180. pokemon = pokemon.replace("-T","-Therian")
  181.  
  182. if pokemon not in pokemonlist[tier]:
  183. pokemonlist[tier][pokemon] = {}
  184. pokemonlist[tier][pokemon]["usage"] = 1
  185. pokemonlist[tier][pokemon]["win"] = 1
  186. pokemonlist[tier][pokemon]["loss"] = 0
  187. else:
  188. pokemonlist[tier][pokemon]["usage"] += 1
  189. pokemonlist[tier][pokemon]["win"] += 1
  190.  
  191. for pokemon in loselist:
  192. print "2", pokemon
  193.  
  194. if pokemon == "Rotom-W":
  195. pokemon = "Rotom-Wash"
  196.  
  197. if pokemon == "Keldeo-Resolute" or pokemon == "Keldeo-R":
  198. pokemon = "Keldeo"
  199.  
  200. if pokemon == "Deoxys-S":
  201. pokemon = "Deoxys-Speed"
  202.  
  203. if pokemon == "Kyurem-B":
  204. pokemon = "Kyurem-Black"
  205.  
  206. if pokemon == "Rotom-H":
  207. pokemon = "Rotom-Heat"
  208.  
  209. if pokemon == "Rotom-C":
  210. pokemon = "Rotom-Cut"
  211.  
  212. if "-T" in pokemon:
  213. pokemon = pokemon.replace("-T","-Therian")
  214.  
  215. if pokemon.startswith("Mega "):
  216. pokemon = pokemon.split(" ")[1].strip(" X").strip(" Y")
  217.  
  218. if pokemon not in pokemonlist[tier]:
  219. pokemonlist[tier][pokemon] = {}
  220. pokemonlist[tier][pokemon]["usage"] = 1
  221. pokemonlist[tier][pokemon]["win"] = 0
  222. pokemonlist[tier][pokemon]["loss"] = 1
  223. else:
  224. pokemonlist[tier][pokemon]["usage"] += 1
  225. pokemonlist[tier][pokemon]["loss"] += 1
  226.  
  227. elif "replay.pokemonshowdown" in entry:
  228. if week == 9:
  229. if "-Tsunami-" in entry:
  230. continue
  231. winner = 0
  232. arcount = 0
  233. p1poke = []
  234. p2poke = []
  235. #print entry
  236. replayurl = entry.split('"')[1]#+".src"
  237. replaycontent = urlopen(replayurl).read().split('\n')
  238. #print replaycontent
  239.  
  240. if tier not in pokemonlist:
  241. pokemonlist[tier] = {}
  242.  
  243. if "XY" in tier or "BW" in tier:
  244. for line in replaycontent:
  245. if line.startswith("|player|p1|"):
  246. p1 = line.split("|")[3]
  247. if line.startswith("|player|p2|"):
  248. p2 = line.split("|")[3]
  249.  
  250. if line.startswith("|poke|p1|"):
  251. p1poke.append(line.lstrip("|poke|p1|").split(",")[0])
  252. if "Arceus" in line:
  253. arcount += 1
  254. elif line.startswith("|poke|p2|"):
  255. p2poke.append(line.lstrip("|poke|p2|").split(",")[0])
  256. if "Arceus" in line:
  257. arcount += 1
  258. if len(p2poke) == 6:
  259. break
  260.  
  261.  
  262. if ("XY" not in tier and "BW" not in tier) or "Uber" in tier:
  263. for line in replaycontent:
  264. if line.startswith("|switch|"):
  265. pokemon = line.split("|")[3].split(",")[0]
  266. if line.startswith("|switch|p1") and pokemon not in p1poke:
  267. p1poke.append(pokemon)
  268. if "Arceus" in pokemon:
  269. p1poke.remove("Arceus-*")
  270. arcount -= 1
  271. elif line.startswith("|switch|p2") and pokemon not in p2poke:
  272. p2poke.append(pokemon)
  273. if "Arceus" in pokemon:
  274. p2poke.remove("Arceus-*")
  275. arcount -= 1
  276.  
  277. if len(p1poke) == 6 and len(p2poke) == 6 and arcount == 0:
  278. break
  279.  
  280.  
  281. for i in range(len(replaycontent)-1,0,-1):
  282. if replaycontent[i].startswith("|win|"):
  283. winner = replaycontent[i].lstrip("|win|")
  284. #print winner
  285. break
  286.  
  287. #print winner
  288. if winner == 0:
  289. if week == 4:
  290. if p1 == "PSYCHOTIC":
  291. winner = p1
  292. if week == 6:
  293. if p1 == "Misery Business":
  294. winner = p1
  295.  
  296. if winner == p1:
  297. #print winner
  298. winlist = p1poke
  299. loselist = p2poke
  300. else:
  301. winlist = p2poke
  302. loselist = p1poke
  303. print "win", winlist
  304. print "lose", loselist
  305.  
  306. for pokemon in winlist:
  307. if "-Resolute" in pokemon:
  308. pokemon = "Keldeo"
  309. if pokemon not in pokemonlist[tier]:
  310. pokemonlist[tier][pokemon] = {}
  311. pokemonlist[tier][pokemon]["usage"] = 1
  312. if week == 4 and winner == "Karrot":
  313. pokemonlist[tier][pokemon]["win"] = 0.5
  314. else:
  315. pokemonlist[tier][pokemon]["win"] = 1
  316. pokemonlist[tier][pokemon]["loss"] = 0
  317. else:
  318. pokemonlist[tier][pokemon]["usage"] += 1
  319. if week == 4 and winner == "Karrot":
  320. pokemonlist[tier][pokemon]["win"] += 0.5
  321. else:
  322. pokemonlist[tier][pokemon]["win"] += 1
  323.  
  324. for pokemon in loselist:
  325. if "-Resolute" in pokemon:
  326. pokemon = "Keldeo"
  327. if pokemon not in pokemonlist[tier]:
  328. pokemonlist[tier][pokemon] = {}
  329. pokemonlist[tier][pokemon]["usage"] = 1
  330. if week == 4 and winner == "Karrot":
  331. pokemonlist[tier][pokemon]["win"] = 0.5
  332. else:
  333. pokemonlist[tier][pokemon]["win"] = 0
  334. pokemonlist[tier][pokemon]["loss"] = 1
  335. else:
  336. pokemonlist[tier][pokemon]["usage"] += 1
  337. if week == 4 and winner == "Karrot":
  338. pokemonlist[tier][pokemon]["win"] = 0.5
  339. else:
  340. pokemonlist[tier][pokemon]["loss"] += 1
  341.  
  342. elif "[" in entry:
  343. tier = entry.split("[")[1].split("]")[0]
  344.  
  345. for tier in pokemonlist:
  346. for pokemon in pokemonlist[tier]:
  347. pokemonlist[tier][pokemon]["winpercent"] = float(pokemonlist[tier][pokemon]["win"]) / pokemonlist[tier][pokemon]["usage"]
  348. #print pokemon, pokemonlist[tier][pokemon]["winpercent"]
  349.  
  350. vlist = ["usage"]
  351. #tierlist = ["XY OU"]
  352. tierlist = ["XY OU", "XY Uber", "XY LC", "XY Doubles", "BW OU", "BW UU", "BW RU", "BW NU", "DPP OU", "ADV OU", "GSC OU"]
  353. dexmap = file(r'C:\Users\Chester Yap\Documents\TourProject\\dexmap.txt',"r").readlines()
  354.  
  355. for variable in vlist:
  356. for tier in tierlist:
  357. numlist = {}
  358. order = []
  359. rank = 1
  360. net = 0
  361. for pokemon in pokemonlist[tier]:
  362. num = pokemonlist[tier][pokemon][variable]
  363. if num not in numlist:
  364. numlist[num] = []
  365. order.append(num)
  366. numlist[num].append(pokemon)
  367. #print order
  368. order.sort()
  369. order.reverse()
  370. sprite = numlist[order[0]][0]
  371. for line in dexmap:
  372. if sprite in line:
  373. spritenum = line.split("#")[1]
  374. if int(spritenum) > 493:
  375. sprite = "[IMG]http://www.serebii.net/pokedex-xy/icon/"+spritenum+".png[/IMG]"
  376. else:
  377. sprite = "[IMG]http://www.serebii.net/pokedex-bw/icon/"+spritenum+".gif[/IMG]"
  378. break
  379. #print numlist
  380. savefile.write('\n'+sprite+'[B]'+tier+'[/B]'+sprite+'\n')
  381. savefile.write('[CODE]')
  382. savefile.write('Rnk | Pokemon | Use | Use % | Win %\n')
  383. for integer in order:
  384. for pokemon in numlist[integer]:
  385. savefile.write(str(rank)+' '*(4-len(str(rank)))+'| ')
  386. savefile.write(pokemon+' '*(20-len(pokemon))+'| ')
  387. usage = str(pokemonlist[tier][pokemon][variable])
  388. #if variable == "winpercent":
  389. #usage = str(round(float(usage)*100))+'%'
  390. savefile.write(usage)
  391. net += int(usage)
  392. if variable == "usage":
  393. if week == 4 and tier == "ADV OU":
  394. total = 8
  395. if week == 8 and tier == "XY LC":
  396. total = 8
  397. if week == 9:
  398. if tier == "XY OU":
  399. total = 16
  400. elif tier == "BW UU" or tier == "DPP OU":
  401. total = 8
  402. elif tier == "BW RU" or tier == "ADV OU":
  403. total = 6
  404. else:
  405. total = 10
  406. elif tier == "XY OU":
  407. total = 20
  408. else:
  409. total = 10
  410. savefile.write(" "*(4-len(usage))+'| ')
  411. percent = str(int(100*float(pokemonlist[tier][pokemon][variable])/total))#.rstrip(".0")
  412. savefile.write(percent+'%'+' '*(5-len(percent))+'| ')
  413. savefile.write(str(int(round(float((pokemonlist[tier][pokemon]["winpercent"]))*100)))+'%')
  414. #print pokemon, tier, pokemonlist[tier][pokemon]["winpercent"]
  415. savefile.write('\n')
  416. rank += len(numlist[integer])
  417. savefile.write('[/CODE]')
  418. print net
  419.  
  420.  
  421.  
  422. #for pokemon in pokemonlist[tier]:
  423.  
  424.  
  425. savefile.close()
  426.  
  427. #winner = |win|LET EM HAVE IT L'
  428. #print replaycontent
  429. #page = str(entrylist)
  430.  
  431. #page = "http://replay.pokemonshowdown.com/"
  432. #pagecontent = urlopen(page).read()
  433. #pagecontent = pagecontent.split('\n')
  434.  
  435. #print pagecontent
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement