Author: dmeyer
Date: Tue Mar 21 14:07:04 2006
New Revision: 8119
Modified:
trunk/core/src/ipc/tvserver.py
Log:
integrate epg into tvserver ipc code
Modified: trunk/core/src/ipc/tvserver.py
==============================================================================
--- trunk/core/src/ipc/tvserver.py (original)
+++ trunk/core/src/ipc/tvserver.py Tue Mar 21 14:07:04 2006
@@ -356,6 +356,7 @@
return False, 'Recordserver unavailable'
if prog.channel == 'ANY':
+ # FIXME: crash!!!!!!
channel = []
for c in kaa.epg.channels:
channel.append(c.id)
@@ -386,9 +387,77 @@
r.call()
+
+class EPG(object):
+ """
+ Handling of epg from the recordserver.
+ """
+ def __init__(self, instance):
+ self.auth = instance.cfg.hashkey.strip()
+ self.server = None
+ self.signals = {
+ 'connected' : kaa.notifier.Signal(),
+ 'disconnected' : kaa.notifier.Signal() }
+
+ instance.signals['new-entity'].connect(self.new_entity)
+ instance.signals['lost-entity'].connect(self.lost_entity)
+
+
+ def new_entity(self, entity):
+ if not entity.matches(SERVER):
+ return True
+ self.server = entity
+ self.guide = None
+ self.connect = self.server.rpc('home-theatre.epg.connect',
self.epg_cb).call
+ self.connect()
+ return True
+
+
+ def lost_entity(self, entity):
+ if entity == self.server:
+ self.server = None
+ self.guide = None
+ return True
+
+
+ def lost_guide(self):
+ if self.guide:
+ log.error('lost epg')
+ self.guide = None
+ self.signals['disconnected'].emit()
+
+
+ def epg_cb(self, result):
+ if not self.server:
+ return
+ if not result:
+ log.error(result)
+ return
+ host, port = result
+ if not host:
+ kaa.notifier.OneShotTimer(self.connect).start(0.01)
+ return
+ self.guide = kaa.epg.connect((host, port), self.auth)
+ self.guide.signals['disconnected'].connect(self.lost_guide)
+ log.info('connected to epg server')
+ self.signals['connected'].emit()
+
+
+ def get_channels(self):
+ if self.guide:
+ return self.guide.get_channels()
+ return []
+
+
+ def search(self, *args, **kwargs):
+ if self.guide:
+ return self.guide.search(*args, **kwargs)
+ return []
+
+
def ipc_connect(instance):
# the two objects handling recordings and favorites
return 'tvserver', dict(
recordings = Recordings(instance),
- favorites = Favorites(instance))
-
+ favorites = Favorites(instance),
+ epg = EPG(instance))
-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642
_______________________________________________
Freevo-cvslog mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/freevo-cvslog