/[svn.andrew.net.au]/scripts/movies.py
ViewVC logotype

Diff of /scripts/movies.py

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 16 by apollock, Sat Nov 18 07:08:16 2006 UTC revision 49 by apollock, Sun Mar 21 16:14:37 2010 UTC
# Line 1  Line 1 
1  #!/usr/bin/python  #!/usr/bin/python
2    
3  from sgmllib import SGMLParser  import BeautifulSoup
4  import htmlentitydefs  import urllib2
 import urllib  
5  import time  import time
6  import datetime  import datetime
7  import xml.sax.saxutils  import xml.sax.saxutils
8    
 class BaseHTMLProcessor(SGMLParser):  
   
         def reset(self):  
                 self.pieces = []  
                 self.include = False  
                 self.nestlevel = 0  
                 SGMLParser.reset(self)  
   
         def unknown_starttag(self, tag, attrs):  
                 strattrs = "".join([' %s="%s"' % (key, value) for key, value in attrs])  
                 if tag == "table":  
                         #print "Saw a table"  
                         if 'class' in attrs[0] and 'movies' in attrs[0]:  
                                 self.include = True  
                         if self.include:  
                                 self.nestlevel += 1  
   
                 if self.include:  
                         self.pieces.append("<%(tag)s%(strattrs)s>" % locals())  
                           
   
         def unknown_endtag(self, tag):  
                 if self.include:  
                         self.pieces.append("</%(tag)s>" % locals())  
                         if tag == "table":  
                                 self.nestlevel -= 1  
                                 if self.nestlevel == 0:  
                                         self.include = False  
   
   
         def handle_charref(self, ref):  
                 if self.include:  
                         self.pieces.append("&#%(ref)s;" % locals())  
   
         def handle_entityref(self, ref):  
                 if self.include:  
                         self.pieces.append("&%(ref)s" % locals())  
                         if htmlentitydefs.entitydefs.has_key(ref):  
                                 self.pieces.append(";")  
   
         def handle_data(self, text):  
                 if self.include:  
                         self.pieces.append(text)  
   
         def handle_comment(self, text):  
                 if self.include:  
                         self.pieces.append("<!--%(text)s-->" % locals())  
   
         def handle_pi(self, text):  
                 if self.include:  
                         self.pieces.append("<?%(text)s>" % locals())  
   
         def handle_decl(self, text):  
                 if self.include:  
                         self.pieces.append("<!%(text)s>" % locals())  
   
         def output(self):  
                 return "".join(self.pieces)  
   
   
9  def main():  def main():
10          parser = BaseHTMLProcessor()          imdb = urllib2.urlopen("http://www.imdb.com/nowplaying/")
11          #html = open("index.html")          soup = BeautifulSoup.BeautifulSoup("".join(imdb.readlines()))
12          html = urllib.urlopen("http://www.imdb.com/nowplaying/")          moviestuff = soup.findAll("table")[0]
13          parser.feed(html.read())          moviestuff.table.extract()
14          html.close()          movies = xml.sax.saxutils.escape(moviestuff.prettify())
         movies = xml.sax.saxutils.escape(parser.output())  
         #movies = parser.output()  
15          print """<?xml version="1.0" encoding="utf-8"?>          print """<?xml version="1.0" encoding="utf-8"?>
16  <feed xmlns="http://www.w3.org/2005/Atom">  <feed xmlns="http://www.w3.org/2005/Atom">
17    
# Line 88  def main(): Line 25  def main():
25  <id>http://www.andrew.net.au/</id>  <id>http://www.andrew.net.au/</id>
26    
27  <entry>  <entry>
28  <id>%(timestamp)s</id>  <id>http://home.andrew.net.au/movies/%(timestamp)s</id>
29    
30  <updated>%(updated)sZ</updated>  <updated>%(updated)sZ</updated>
31  <title>This week's movies</title>  <title>This week's movies</title>

Legend:
Removed from v.16  
changed lines
  Added in v.49

  ViewVC Help
Powered by ViewVC 1.1.22