Author: duncan
Date: Tue Feb 12 15:52:45 2008
New Revision: 10362
Log:
Converted tv.tvguide and util.misc.upsoon to use the kaa.rpc calls
Updated record_client with sync call to get the scheduled recordings
The changes are a bit "noisy" with print statements
Modified:
branches/rel-1/freevo/src/tv/record_client.py
branches/rel-1/freevo/src/tv/tvguide.py
branches/rel-1/freevo/src/util/misc.py
Modified: branches/rel-1/freevo/src/tv/record_client.py
==============================================================================
--- branches/rel-1/freevo/src/tv/record_client.py (original)
+++ branches/rel-1/freevo/src/tv/record_client.py Tue Feb 12 15:52:45 2008
@@ -71,15 +71,41 @@
def recordserver_rpc(self, cmd, *args, **kwargs):
""" call the record server command using kaa rpc """
+ def closed_handler():
+ self.server = None
+
_debug_('recordserver_rpc(cmd=%r, args=%r, kwargs=%r)' % (cmd, args,
kwargs), 2)
- return self.server.rpc(cmd, *args, **kwargs)
+ try:
+ if self.server is None:
+ try:
+ self.server = kaa.rpc.Client(self.socket, self.secret)
+ self.server.signals['closed'].connect(closed_handler)
+ _debug_('%r is up' % (self.socket,), DINFO)
+ except kaa.rpc.ConnectError, e:
+ _debug_('%r is down' % (self.socket,), DINFO)
+ self.server = None
+ return None
+ return self.server.rpc(cmd, *args, **kwargs)
+ except kaa.rpc.ConnectError, e:
+ _debug_('%r is down' % (self.socket,), DINFO)
+ self.server = None
+ return None
+ except IOError, e:
+ _debug_('%r is down' % (self.socket,), DINFO)
+ self.server = None
+ return None
- def getScheduledRecordings(self):
- """ get the scheduled recordings, returning an in process object """
- _debug_('getScheduledRecordings()', 2)
- inprogress = self.recordserver_rpc('getScheduledRecordings')
- print 'RecordClient.getScheduledRecordings.inprogress = %r' %
(inprogress)
- return inprogress
+
+ def getScheduledRecordingsNow(self):
+ """ get the scheduled recordings, returning the scheduled recordings
object """
+ _debug_('getScheduledRecordingsNow()', 2)
+ progress = self.recordserver_rpc('getScheduledRecordings')
+ if progress is None:
+ return None
+ progress.wait()
+ result = progress.get_result()
+ _debug_('getScheduledRecordingsNow.result=%r' % (result), 2)
+ return result
def server_rpc(self, cmd, callback, *args, **kwargs):
@@ -405,16 +431,19 @@
if __name__ == '__main__':
+ config.DEBUG = 2
+
+ def shutdown(result):
+ print "shutdown.result=%r" % (result)
+ raise SystemExit
def handler(result):
""" A callback handler for test functions """
_debug_('handler(result)=%r' % (result), 2)
- print 'result = %r' % (result)
+ print 'handler.result=%r' % (result)
raise SystemExit
rc = RecordClient()
- rc.getScheduledRecordings(handler)
- kaa.main.run()
if len(sys.argv) >= 2:
function = sys.argv[1].lower()
@@ -428,6 +457,14 @@
print 'result: %s, response: %s ' % (result, response)
+ if function == "getscheduledrecordingsnow":
+ result = rc.getScheduledRecordingsNow()
+ print 'result: %r' % (result)
+
+
+ if function == "getscheduledrecordings":
+ rc.getScheduledRecordings(handler)
+
if function == "updatefavoritesschedule":
(result, response) = updateFavoritesSchedule()
print '%r' % response
@@ -475,3 +512,6 @@
_debug_('%r' % response)
else:
print 'no data'
+
+ kaa.notifier.OneShotTimer(shutdown, 'bye').start(3)
+ kaa.main.run()
Modified: branches/rel-1/freevo/src/tv/tvguide.py
==============================================================================
--- branches/rel-1/freevo/src/tv/tvguide.py (original)
+++ branches/rel-1/freevo/src/tv/tvguide.py Tue Feb 12 15:52:45 2008
@@ -42,7 +42,7 @@
from event import *
import epg_xmltv, epg_types
-import record_client as ri
+import record_client
skin = skin.get_singleton()
skin.register('tv', ('screen', 'title', 'subtitle', 'view',
@@ -79,6 +79,7 @@
break
+ self.recordclient = record_client.RecordClient()
self.col_time = 30 # each col represents 30 minutes
self.n_cols = (stop_time - start_time) / 60 / self.col_time
self.player = player
@@ -99,12 +100,32 @@
menuw.pushmenu(self)
+ def update_schedules_cb(self, scheduledRecordings):
+ """ """
+ print 'update_schedules_cb(scheduledRecordings=%r)' %
(scheduledRecordings)
+ #upsoon = '%s/upsoon' % (config.FREEVO_CACHEDIR)
+ #if os.path.isfile(upsoon):
+ # os.unlink(upsoon)
+
+ util.misc.comingup(None, (True, scheduledRecordings))
+ progs = scheduledRecordings.getProgramList()
+
+ for k in progs:
+ prog = progs[k]
+ self.scheduled_programs.append(prog.str2utf())
+ if prog.overlap:
+ self.overlap_programs.append(prog.str2utf())
+ if hasattr(prog, 'isFavorite') and prog.isFavorite:
+ self.favorite_programs.append(prog.str2utf())
+
+
def update_schedules(self, force=False):
"""
update schedule
reload the list of scheduled programs and check for overlapping
"""
+ print 'update_schedules(force=%r)' % (force)
if not force and self.last_update + 60 > time.time():
return
@@ -112,31 +133,13 @@
#if self.last_update + 1 > time.time():
# return
- upsoon = '%s/upsoon' % (config.FREEVO_CACHEDIR)
- if os.path.isfile(upsoon):
- os.unlink(upsoon)
-
- _debug_('update schedule',2)
+ _debug_('update schedule', 2)
self.last_update = time.time()
self.scheduled_programs = []
self.overlap_programs = []
self.favorite_programs = []
- (got_schedule, schedule) = ri.getScheduledRecordings()
-
- util.misc.comingup(None, (got_schedule, schedule))
-
- if got_schedule:
- progs = schedule.getProgramList()
-
- for k in progs:
- prog = progs[k]
- self.scheduled_programs.append(prog.str2utf())
- if prog.overlap:
- self.overlap_programs.append(prog.str2utf())
- if hasattr(prog, 'isFavorite' ) and prog.isFavorite:
- self.favorite_programs.append(prog.str2utf())
+ self.recordclient.getScheduledRecordings(self.update_schedules_cb)
-### event handler
def eventhandler(self, event, menuw=None):
"""
@@ -290,7 +293,7 @@
def show(self):
""" show the guide"""
- _debug_('show',2)
+ _debug_('show', 2)
if not self.visible:
self.visible = 1
self.refresh()
@@ -298,7 +301,7 @@
def hide(self):
""" hide the guide"""
- _debug_('hide',2)
+ _debug_('hide', 2)
if self.visible:
self.visible = 0
skin.clear()
@@ -310,7 +313,7 @@
This function is called automatically by freevo whenever this menu is
opened or reopened.
"""
- _debug_('refresh',2)
+ _debug_('refresh', 2)
if self.menuw.children:
return
_debug_('tvguide: setting context to %s' % self.event_context, 2)
@@ -325,7 +328,7 @@
This function updates the scheduled and overlap flags for
all currently displayed programs.
"""
- _debug_('update',2)
+ _debug_('update', 2)
self.update_schedules(force)
if self.table:
for t in self.table:
@@ -395,7 +398,7 @@
else:
selected = None
- self.rebuild(new_start_time,new_end_time, start_channel, selected)
+ self.rebuild(new_start_time, new_end_time, start_channel, selected)
def rebuild(self, start_time, stop_time, start_channel, selected):
@@ -404,7 +407,7 @@
This is neccessary we change the set of programs that have to be
displayed, this is the case when the user moves around in the menu.
"""
- _debug_('reload',2)
+ _debug_('reload', 2)
self.guide = epg_xmltv.get_guide()
channels = self.guide.GetPrograms(start=start_time+1, stop=stop_time-1)
Modified: branches/rel-1/freevo/src/util/misc.py
==============================================================================
--- branches/rel-1/freevo/src/util/misc.py (original)
+++ branches/rel-1/freevo/src/util/misc.py Tue Feb 12 15:52:45 2008
@@ -393,30 +393,30 @@
return string
-#
-# Coming Up for TV schedule
-#
-
-def comingup(items=None, ScheduledRecordings=None):
- import tv.record_client as ri
+def comingup(items=None, scheduledRecordings=None):
+ """ Coming Up for TV schedule """
+ print 'comingup(items=%r, scheduledRecordings=%r)' % (items,
scheduledRecordings)
+ from tv.record_client import RecordClient
import time
import codecs
result = u''
cachefile = '%s/upsoon' % (config.FREEVO_CACHEDIR)
- if not ScheduledRecordings:
- if (os.path.exists(cachefile) and \
- (abs(time.time() - os.path.getmtime(cachefile)) < 600)):
+
+ if not scheduledRecordings:
+ if os.path.exists(cachefile) and abs(time.time() -
os.path.getmtime(cachefile)) < 600:
cache = codecs.open(cachefile,'r', config.encoding)
for a in cache.readlines():
result = result + a
cache.close()
return result
- (status, recordings) = ri.getScheduledRecordings()
+ (status, recordings) = (True,
RecordClient().getScheduledRecordingsNow())
+ if recordings is None:
+ return _('The recordserver is down')
else:
- (status, recordings) = ScheduledRecordings
+ (status, recordings) = scheduledRecordings
if not status:
result = _('The recordserver is down')
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Freevo-cvslog mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/freevo-cvslog