Change the way episodes are saved after being downloaded.
[gpodder.git] / doc / dev / daap2rss.py
blobba7adaa96b519621996b98de9ad6cfadbf30947e
1 #!/usr/bin/env python
3 from daap import DAAPClient
5 import sys
8 class DAAPProxy(object):
9 def __init__( self, host, port = 3689):
10 self.host = host
11 self.port = port
13 self.client = DAAPClient()
14 self.client.connect( host, port)
15 self.session = self.client.login()
16 self.databases = self.session.databases()
18 libid = self.session.library().id
19 self.database = None
20 for d in self.databases:
21 if str( d.id) == str( id):
22 self.database = d
24 if self.database is None:
25 self.database = d
27 self.tracks = self.database.tracks()
29 def generate_url( self, track):
30 return 'http://%s:%d/databases/%d/items/%d.%s?session-id=%d' % ( self.host, self.port, self.database.id, track.id, track.type, self.session.sessionid )
32 def print_rss( self, file = sys.stdout):
33 file.write( '<?xml version="1.0"?>\n')
34 file.write( '<rss version="2.0">\n')
35 file.write( '<channel>\n')
36 file.write( '<title>%s (daap)</title>\n' % ( self.host ))
37 file.write( '<description>Live RSS feed generated by DAAP-Proxy.</description>\n')
38 file.write( '<link>http://%s:%s/</link>\n' % ( self.host, self.port ))
39 for t in self.tracks:
40 try:
41 name = ascii( '%s - %s' % ( t.artist, t.name ))
42 except:
43 name = '%s - %s' % ( repr( t.artist), repr( t.name) )
45 file.write( '<item>\n')
46 file.write( '<title>%s</title>\n' % ( name ))
47 file.write( '<description>%s</description>\n' % ( name ))
48 file.write( '<enclosure url="%s" length="0" type="audio/mpeg"/>\n' % ( self.generate_url( t) ))
49 file.write( '</item>\n')
50 file.write( '</channel>\n')
53 # testing code
54 proxy = DAAPProxy( "ignition")
55 proxy.print_rss()
56 proxy.print_rss( open( "test.rss", "w"))
57 sys.stdin.readline()