home *** CD-ROM | disk | FTP | other *** search
/ Maximum CD 2011 October / maximum-cd-2011-10.iso / DiscContents / digsby_setup.exe / lib / yahoo / yahooprofile.pyo (.txt) < prev    next >
Encoding:
Python Compiled Bytecode  |  2011-06-22  |  3.4 KB  |  77 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyo (Python 2.6)
  3.  
  4. from __future__ import with_statement
  5. from util import threaded, soupify, odict, scrape_clean
  6. from util.primitives.funcs import do
  7. from util.BeautifulSoup import BeautifulStoneSoup
  8. from itertools import izip
  9. from logging import getLogger
  10. log = getLogger('yahooprofile')
  11. from urllib2 import urlopen
  12. profile_url = 'http://profiles.yahoo.com/%s?warn=1'
  13.  
  14. def get(yahooid):
  15.     data = urlopen(profile_url % yahooid).read().decode('utf-8')
  16.     return scrape_profile(data)
  17.  
  18. get = threaded(get)
  19.  
  20. def scrape_profile(s):
  21.     s = s.replace(u' ', u' ').replace(u'Hobbies:</dd>', u'Hobbies:</dt>')
  22.     soup = BeautifulStoneSoup(s, convertEntities = BeautifulStoneSoup.ALL_ENTITIES, fromEncoding = 'utf-8')
  23.     profile = odict()
  24.     for section in ('basics', 'more'):
  25.         div = soup('div', id = 'ypfl-' + section)[0].dl
  26.         if div is not None:
  27.             info = _[1]
  28.             profile.update(dictfrompairs(info))
  29.             continue
  30.         []
  31.     
  32.     links = [](_[2])
  33.     linktuples = _[3]
  34.     finallinks = []
  35.     for i, tuple in enumerate(linktuples):
  36.         finallinks.append(tuple)
  37.         if i != len(linktuples) - 1:
  38.             finallinks.append(u'\n')
  39.             continue
  40.         []
  41.     
  42.     links['Links:'] = finallinks
  43.     (do,)((lambda .0: for k in .0:
  44. if k.startswith('Cool Link'):
  45. links.pop(k)continue)(links.keys()))
  46.     profile.update(links)
  47.     for p in soup.findAll('p', attrs = {
  48.         'class': 'footnote' }):
  49.         c = p.renderContents(None)
  50.         for hdr in ('Member Since ', 'Last Update: '):
  51.             if c.startswith(hdr):
  52.                 profile[hdr] = c[len(hdr):]
  53.                 continue
  54.             []
  55.         
  56.     
  57.     for k, v in dict(profile).iteritems():
  58.         if isinstance(v, basestring):
  59.             [] if 'Home Page:' in links else dictfrompairs(dict.__setitem__, profile, k if v.strip() in ('', 'No Answer') else scrape_clean(v))
  60.             continue
  61.     
  62.     profile.pop('Yahoo! ID:', None)
  63.     return profile
  64.  
  65.  
  66. def dictfrompairs(info):
  67.     return dict(izip(info[::2], info[1::2]))
  68.  
  69.  
  70. def anchor2tuple(s):
  71.     if not s:
  72.         return None
  73.     a = soupify(s).a
  74.     if a:
  75.         return (a['href'], a.renderContents())
  76.  
  77.