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(';','')))) return(s) def Search(search): search = search.strip().translate(string.maketrans('',''),'~!@#$%^&*()_+`-={}|[]\:";\'<>?,./').replace(' ','+') in_src = re.compile('0" href="(.*?)\?.*?">(.*?)<') source = urllib.urlopen('http://www.tv.com/search.php?type=11&stype=program&qs=' + search + '&tag=filter;tv_shows').read() Titles = [] Links = [] info = in_src.findall(source) for a in info: Titles.append(a[1]) Links.append(a[0] + '?full_summary=1&tag=showspace_links;full_summary') return Titles, Links class Info: def __init__(self, url, Info=False): if Info == True: fromInfo = urllib.urlopen(url).read() self.fromInfo = fix(fromInfo) def Title(fromInfo): in_title = re.compile('>(.*?) ') return in_title.findall(fromInfo) def Cover(fromInfo): in_cover = re.compile('="(.*?)" alt="(.*?)" /> ') for a in in_cover.findall(fromInfo): return a[0] def Airs(fromInfo): in_airs = re.compile('t: .*?>(.*?)<') return in_airs.findall(fromInfo) def Status(fromInfo): in_status = re.compile('us:\n.*\n(.*)') for a in in_status.findall(fromInfo): return [str(a).strip()] def Premiered(fromInfo): in_prem = re.compile('ered:\n.*\n(.*)') for a in in_prem.findall(fromInfo): return [str(a).strip()] def LastAired(fromInfo): in_last = re.compile(' Aired:.*\n.*\n(.*)') for a in in_last.findall(fromInfo): return [str(a).strip()] def Genres(fromInfo): in_genre = re.compile('".*?nre">(.*?)<') return in_genre.findall(fromInfo) def Rating(fromInfo): in_rating = re.compile('8">(.*?)(.*?)\n.*?(.*?)"(.*?)"(.*?)<') rDetails = [] for a in in_rDetails.findall(fromInfo): join = '%s:\n%s' % (a[0].strip(), a[1].strip()) rDetails.append(join) return rDetails def rRatings(fromInfo): in_review = re.compile('re">(.*?)(.*?)', re.DOTALL) #in_details = re.compile('>*\n(.*?)
.*\n
') Details = [] for a in in_details.findall(fromInfo): Details.append(str(a).strip().replace('','').replace('','').replace('','(').replace('',')').replace('
','').replace('((','(').replace('))',')')) return Details Titles, Links = Search('family') selection = 6 #print Titles[selection] #print Links[selection] tv = Info(Links[selection], Info=True) #print Title(tv.fromInfo) #print Cover(tv.fromInfo) #print Airs(tv.fromInfo) #print Status(tv.fromInfo) #print Premiered(tv.fromInfo) #print LastAired(tv.fromInfo) #print Genres(tv.fromInfo) #print Rating(tv.fromInfo) print rDetails(tv.fromInfo) print rRatings(tv.fromInfo) try: LTitle, LDetails = LastEpisode(tv.fromInfo) print LTitle print LDetails except: print "Last Episode Not Available" #print Details(tv.fromInfo)