From 8d268f4567bf0781cd365450c035e8cbf08c3614 Mon Sep 17 00:00:00 2001 From: John-Mark Gurney Date: Sat, 4 Dec 2010 10:25:20 -0800 Subject: [PATCH] support additional attributes (other than size) on the media resources... support rtsp in addition to http resources.. [git-p4: depot-paths = "//depot/": change = 1574] --- item.py | 35 +++++++++++++++++++++++++++++------ 1 file changed, 29 insertions(+), 6 deletions(-) diff --git a/item.py b/item.py index 7206403..9ff1e2f 100644 --- a/item.py +++ b/item.py @@ -26,18 +26,41 @@ class ItemObject(FSObject, Item): self.checkUpdate(dom=dom) + _attrconv = [ + ('size', 'size', int), + ('bitrate', 'bitrate', int), + ('sampleFrequency', 'sampleFrequency', int), + ('nrAudioChannels', 'nrAudioChannels', int), + ] + + @staticmethod + def _addattrib(res, attr, dom, element, fun=lambda x: x): + data = dom.getElementsByTagName(element) + if data: + setattr(res, attr, fun(getElementText(data[0]))) + def doUpdate(self, dom=None): if dom is None: dom = xml.dom.minidom.parse(open(self.FSpath)) obj = dom.getElementsByTagName('Object')[0] self.res = ResourceList() for i in obj.getElementsByTagName('res'): - mt = getElementText(i.getElementsByTagName('mimetype')[0]) - r = Resource(getElementText(i.getElementsByTagName( - 'url')[0]), 'http-get:*:%s:*' % mt) - size = i.getElementsByTagName('size') - if size: - r.size = int(getElementText(size[0])) + mtel = i.getElementsByTagName('mimetype') + rtpel = i.getElementsByTagName('rtppayloadtype') + if mtel: + mt = getElementText(mtel[0]) + pi = 'http-get:*:%s:*' % mt + elif rtpel: + pt = getElementText(rtpel[0]) + pi = 'rtsp-rtp-udp:*:%s:*' % pt + else: + print 'missing mimetype or rtppayloadtype element, skipping...' + continue + + url = getElementText(i.getElementsByTagName('url')[0]) + r = Resource(url, pi) + for j in self._attrconv: + self._addattrib(r, j[0], i, j[1], *j[2:]) self.res.append(r) super(ItemObject, self).doUpdate()