home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / usr / lib / rhythmbox / plugins / jamendo / JamendoSaxHandler.pyc (.txt) < prev    next >
Encoding:
Python Compiled Bytecode  |  2009-04-20  |  5.0 KB  |  140 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.6)
  3.  
  4. import xml.sax as xml
  5. import xml.sax.handler as xml
  6. markups = [
  7.     'JamendoData',
  8.     'Artists',
  9.     'artist',
  10.     'Albums',
  11.     'album',
  12.     'Tracks',
  13.     'track']
  14. ignore = [
  15.     'location',
  16.     'country',
  17.     'state',
  18.     'city',
  19.     'latitude',
  20.     'longitude']
  21.  
  22. class JamendoSaxHandler(xml.sax.handler.ContentHandler):
  23.     
  24.     def __init__(self):
  25.         xml.sax.handler.ContentHandler.__init__(self)
  26.         self.current = { }
  27.  
  28.     
  29.     def startElement(self, name, attrs):
  30.         self._JamendoSaxHandler__text = ''
  31.         self._JamendoSaxHandler__ignore = False
  32.         if name in markups:
  33.             fct = getattr(self, 'start' + name)
  34.             fct(attrs)
  35.         
  36.         if name in ignore:
  37.             self._JamendoSaxHandler__ignore = True
  38.         
  39.  
  40.     
  41.     def endElement(self, name):
  42.         if name in markups:
  43.             fct = getattr(self, 'end' + name)
  44.             fct()
  45.         elif self._JamendoSaxHandler__ignore is False:
  46.             self.current[name] = self._JamendoSaxHandler__text
  47.         
  48.  
  49.     
  50.     def characters(self, content):
  51.         if self._JamendoSaxHandler__ignore is False:
  52.             self._JamendoSaxHandler__text = self._JamendoSaxHandler__text + content
  53.         
  54.  
  55.     
  56.     def startJamendoData(self, attrs):
  57.         pass
  58.  
  59.     
  60.     def startArtists(self, attrs):
  61.         self.artists = { }
  62.  
  63.     
  64.     def startartist(self, attrs):
  65.         self.artist = { }
  66.         for attr in attrs.getNames():
  67.             self.artist[attr] = attrs[attr]
  68.         
  69.         self.current = self.artist
  70.  
  71.     
  72.     def startAlbums(self, attrs):
  73.         self.albums = { }
  74.  
  75.     
  76.     def startalbum(self, attrs):
  77.         self.album = { }
  78.         for attr in attrs.getNames():
  79.             self.album[attr] = attrs[attr]
  80.         
  81.         self.current = self.album
  82.  
  83.     
  84.     def startTracks(self, attrs):
  85.         self.tracks = { }
  86.  
  87.     
  88.     def starttrack(self, attrs):
  89.         self.track = { }
  90.         for attr in attrs.getNames():
  91.             self.track[attr] = attrs[attr]
  92.         
  93.         self.current = self.track
  94.  
  95.     
  96.     def endJamendoData(self):
  97.         pass
  98.  
  99.     
  100.     def endArtists(self):
  101.         pass
  102.  
  103.     
  104.     def endartist(self):
  105.         self.artists[self.artist['id']] = self.artist
  106.  
  107.     
  108.     def endAlbums(self):
  109.         self.artist['ALBUMS'] = self.albums
  110.  
  111.     
  112.     def endalbum(self):
  113.         self.albums[self.album['id']] = self.album
  114.  
  115.     
  116.     def endTracks(self):
  117.         self.album['TRACKS'] = self.tracks
  118.  
  119.     
  120.     def endtrack(self):
  121.         self.tracks[self.track['id']] = self.track
  122.  
  123.  
  124. if __name__ == '__main__':
  125.     parser = xml.sax.make_parser()
  126.     handler = JamendoSaxHandler()
  127.     parser.setContentHandler(handler)
  128.     datasource = open('/tmp/dbdump.en.xml')
  129.     parser.parse(datasource)
  130.     tracks = handler.tracks
  131.     artists = handler.artists
  132.     albums = handler.albums
  133.     for track_key in tracks.keys():
  134.         track = tracks[track_key]
  135.         album = albums[track['albumID']]
  136.         artist = artists[album['artistID']]
  137.         print album['P2PLinks']
  138.     
  139.  
  140.