3 from daap
import DAAPClient
8 class DAAPProxy(object):
9 def __init__( self
, host
, port
= 3689):
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
20 for d
in self
.databases
:
21 if str( d
.id) == str( id):
24 if self
.database
is None:
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
))
41 name
= ascii( '%s - %s' % ( t
.artist
, t
.name
))
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')
54 proxy
= DAAPProxy( "ignition")
56 proxy
.print_rss( open( "test.rss", "w"))