import os,sys,re,urllib,string
reg = 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('','').replace('','').replace('
','')
return(s)
titleReg = re.compile(r'
(.*)<.*?')
directorsReg = re.compile(r'.*?Directed by.*')
writersReg = re.compile(r'.*?Writing credits.*')
genresReg = re.compile(r'.*?Genre:.*')
yearReg = re.compile(r'.*?(.*?).*')
taglineReg = re.compile(r'.*?Tagline:(.*?)()?$')
plotReg = re.compile(r'.*?Plot Outline:(.*?).*)')
countriesReg = re.compile(r'.*?Country:.*')
languagesReg = re.compile(r'.*?Language:.*')
mpaaReg = re.compile(r'.*?/mpaa">MPAA:(.*?)
')
details = re.compile(r'(.*?)
')
cover = re.compile(r'.*?src="(http://.*?m.jpg)" height="(.*?)" width="(.*?)">.*')
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 += 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'(.*?)<.*?(?:top|middle)">(.*?)')
self.Cast = {}
l = page[i].replace(' |
|
(.*?)')
i += 1
self.Countries = in_countries.findall(page[i])
if languagesReg.match(page[i]):
in_languages = re.compile(r'(.*?)')
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()
break
class 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('(.*?)((.*?))')
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