import urllib
import urllib2
import errno
+import re as regexp
from BeautifulSoup import BeautifulSoup
now = time.time()
+duties = ('Swordfighting/Bilging/Sailing/Rigging/Navigation'+
+ '/Battle Navigation/Carpentry/Rumble/Treasure Haul').split('/')
+
+standings = ('Able/Distinguished/Respected/Master/Renowned'+
+ '/Grand-Master/Legendary/Ultimate').split('/')
+
def fetch(url):
cache_corename = urllib.quote_plus(url)
cache_basename = "#%s#" % cache_corename
url = 'http://%s.puzzlepirates.com/yoweb/%s%s' % (ocean, kind, tail)
return fetch(url)
-def get_pirate_info(pirate):
- html = yoweb_fetch('pirate.wm?target=', pirate)
- soup = BeautifulSoup(html)
- return `soup`
+class PirateInfo:
+ def __init__(self, pirate):
+ html = yoweb_fetch('pirate.wm?target=', pirate)
+ soup = BeautifulSoup(html,
+# convertEntities=BeautifulSoup.HTML_ENTITIES
+ )
+ imgs = soup.findAll('img')
+ re = regexp.compile(
+u'\s*\S*/([-A-Za-z]+)\s*$|\s*\S*/\S*\s*\(ocean\-wide\ \;([-A-Za-z]+)\)\s*$'
+ )
+ skills = { }
+ for skill in duties:
+ skills[skill] = [ ]
+ for img in imgs:
+ try: duty = img['alt']
+ except KeyError: continue
+ print `duty`
+ if not duty in duties: continue
+ key = img.findParent('td')
+ if key is None: continue
+ valelem = key.findNextSibling('td')
+ if valelem is None: continue
+ valstr = ''.join(valelem.findAll(text=True))
+ print `duty`, `valstr`
+ match = re.match(valstr)
+ if match is None: continue
+ standing = match.group(1)
+ skills[duty] = standing
+
+# print `duty`, `standing`
+# if standing not in standings: continue
+# for i in range(0, len(standings)):
+# print `duty`, `standing`, i
+# if standing == standings[i]:
+# print `skills[duty]`
+# skills[duty].append(i)
+
+# self.skills = { }
+# for skill in duties:
+
+ self.skills = skills
+ def __str__(self):
+ return `self.skills`
def main():
os.chdir(os.getenv('HOME'))
# test program:
global ocean
ocean = 'midnight'
- test = get_pirate_info('Aristarchus')
+ test = PirateInfo('Anaplian')
print test
main()