def upnp_ready(self):
     self.av_trans.set_variable("TransportState", "NO_MEDIA_PRESENT")
     self.av_trans.set_variable("TransportStatus", "OK")
     self.av_trans.set_variable("TransportPlaySpeed", 1)
     
     self.av_trans.set_variable("NumberOfTracks", 0)
     self.av_trans.set_variable("CurrentMediaDuration", format_duration(0))
     self.av_trans.set_variable("AVTransportURI", "")
     self.av_trans.set_variable("AVTransportURIMetaData", "")
     self.av_trans.set_variable("NextAVTransportURI", "")
     self.av_trans.set_variable("NextAVTransportURIMetaData", "")
     self.av_trans.set_variable("PlaybackStorageMedium", "NONE")
     self.av_trans.set_variable("RecordStorageMedium", "NOT_IMPLEMENTED")
     self.av_trans.set_variable("RecordMediumWriteStatus", "NOT_IMPLEMENTED")
     
     
     self.render_ctl.set_variable("Volume", 100)
 def handle_AVT_Seek(self, service, action, args):
     if self.av_trans.variable("TransportState").value() not in ["PLAYING", "STOPPED", "PAUSED_PLAYBACK"]:
         return 701
     
     target = parse_duration(args['Target'])
     
     if args['Unit'] == "ABS_TIME":
         # for now assume it is absolute
         #TODO correct for relative time
         pass
     
     if target > parse_duration(self.av_trans.variable("CurrentTrackDuration").value()):
         pass 
         # return 711
     
     self.av_trans.set_variable("AbsoluteTimePosition", format_duration(target))
     
     self.do_action("seek", target)
     
     return True
 def set_media_duration(self, duration):
     self.av_trans.set_variable("CurrentMediaDuration", format_duration(duration))
     self.av_trans.set_variable("CurrentTrackDuration", format_duration(duration))
 def set_media_position(self, position):
     self.av_trans.set_variable("AbsoluteTimePosition", format_duration(position))