All pastes #99362 Raw Edit

Unnamed

public python v1 · immutable
#99362 ·published 2006-07-25 07:26 UTC
rendered paste body
import os,sys,re,urllib,stringreg = re.compile(r"&#[0-9]{1,3};")def fix(s):    codes = reg.findall(s)    for i in codes:        s = s.replace(i,'%c'%(int(i.replace('&#','').replace(';','')))).replace('<em>','').replace('</em>','').replace('<br>','')    return(s)titleReg       = re.compile(r'<title>(.*)<.*?')directorsReg   = re.compile(r'.*?Directed by.*')writersReg     = re.compile(r'.*?Writing credits.*')genresReg      = re.compile(r'.*?Genre:.*')yearReg        = re.compile(r'.*?<a href="/Sections/Years/.*">(.*?)</a>.*')taglineReg     = re.compile(r'.*?Tagline:</b>(.*?)(<a href.*>)?$')plotReg        = re.compile(r'.*?Plot Outline:</b>(.*?)<a href.*')ratingReg      = re.compile(r'.*?User Rating.*')runtimeReg     = re.compile(r'.*?Runtime.*')castReg        = re.compile(r'.*?(?:Cast overview, first billed only|Complete credited cast).*?(<tr>.*)')countriesReg   = re.compile(r'.*?Country:.*')languagesReg   = re.compile(r'.*?Language:.*')mpaaReg        = re.compile(r'.*?/mpaa">MPAA</a>:</b>(.*?)<br>')details        = re.compile(r'<p class="plotpar">(.*?)</p>')cover          = re.compile(r'.*?src="(http://.*?m.jpg)" height="(.*?)" width="(.*?)"></a>.*')class IMDb:   def __init__(self,url):      self.Title           = 'N/A'      self.Directors       = 'N/A'      self.Writers         = 'N/A'      self.Genres          = 'N/A'      self.Details         = 'N/A'      self.Year            = 'N/A'      self.Tagline         = 'N/A'      self.Plot            = 'N/A'      self.Rating          = 'N/A'      self.MPAA            = 'N/A'      self.Runtime         = 'N/A'      self.Cast            = 'N/A'      self.Countries       = 'N/A'      self.Languages       = 'N/A'      self.Searchresults   = 'N/A'      self.CoverURL        = 'N/A'      self.CoverSize       = 'N/A'      sock = urllib.urlopen(url)      page = sock.readlines()      sock.close()      i = 0      while i < len(page):          if titleReg.match(page[i]):              self.Title = titleReg.search(page[i]).group(1).strip()          if directorsReg.match(page[i]):              in_directors = re.compile(r'.*?">(.*?)</.*?')              i += 1              self.Directors = in_directors.findall(page[i])          if writersReg.match(page[i]):              in_writers = re.compile(r'<a href="/name/.*?>(.*?)<')              i += 3              if in_writers.search(page[i]) != None:                  self.Writers = in_writers.findall(page[i])          if genresReg.match(page[i]):              in_genres = re.compile(r'<a href="/Sections/Genres/.*?>(.*?)<')              i += 1              self.Genres = in_genres.findall(page[i])          if yearReg.match(page[i]):              self.Year = yearReg.search(page[i]).group(1).strip()          if taglineReg.match(page[i]):              self.Tagline = taglineReg.search(page[i]).group(1).strip()          if plotReg.match(page[i]):              self.Plot = plotReg.search(page[i]).group(1).strip()          if ratingReg.match(page[i]):              in_rating = re.compile(r'<b>(.*?)</b> (.*)')              i += 4              ratings_all = in_rating.findall(page[i])              for rate in ratings_all:                  self.Rating = '%s %s' % (rate[0],rate[1])          if mpaaReg.match(page[i]):              self.MPAA = mpaaReg.search(page[i]).group(1).strip()          if runtimeReg.match(page[i]):              in_runtime = re.compile(r'(.*)\n')              i += 1              self.Runtime = in_runtime.findall(page[i])          if castReg.match(page[i]):              in_cast = re.compile(r'.*?<a href="/name.*?>(.*?)<.*?(?:top|middle)">(.*?)</td>')              self.Cast = {}              l = page[i].replace('</tr> <tr','</tr><tr').split('</tr><tr')              for j in l:                  r = in_cast.search(j)                  if r != None:                      self.Cast[r.group(1).strip()] = r.group(2).strip()          if cover.match(page[i]):              self.CoverSize = {}              Cover = cover.findall(page[i])              for a in Cover:                  self.CoverURL = a[0]                  self.CoverSize[a[1]] = a[2]          if countriesReg.match(page[i]):              in_countries = re.compile(r'<a href=.*?>(.*?)</a>')              i += 1              self.Countries = in_countries.findall(page[i])          if languagesReg.match(page[i]):              in_languages = re.compile(r'<a href=.*?>(.*?)</a>')              i += 1              self.Languages = in_languages.findall(page[i])          i+=1      try:          sock = urllib.urlopen(url+'plotsummary')          page = sock.readlines()          sock.close()      except:          pass      for i in page:          match = details.search(i)          self.Details = []          if match != None:              self.Details = match.group(1).strip()              breakclass IMDbSearch:    def __init__(self, find):        find = find.strip().translate(string.maketrans('',''),'~!@#$%^&*()_+`-={}|[]\:";\'<>?,./').replace(' ','+')        self.SearchResults = {}        sock = urllib.urlopen('http://www.imdb.com/find?s=tt&q=' + find)        page = sock.read()        sock.close()        search = re.compile('<a href="/title/(.*?)/.*?">(.*?)</a>((.*?))</li>')        title = search.findall(page)        if title != None:            for a in title:                b = "%s%s" % (a[1],a[2])                url = "http://www.imdb.com/title/%s/" % (a[0])                Title = fix(str(b))                self.SearchResults[Title] = url