Browse Source

support additional attributes (other than size) on the

media resources...

support rtsp in addition to http resources..

[git-p4: depot-paths = "//depot/": change = 1574]
main
John-Mark Gurney 14 years ago
parent
commit
8d268f4567
1 changed files with 29 additions and 6 deletions
  1. +29
    -6
      item.py

+ 29
- 6
item.py View File

@@ -26,18 +26,41 @@ class ItemObject(FSObject, Item):


self.checkUpdate(dom=dom) 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): def doUpdate(self, dom=None):
if dom is None: if dom is None:
dom = xml.dom.minidom.parse(open(self.FSpath)) dom = xml.dom.minidom.parse(open(self.FSpath))
obj = dom.getElementsByTagName('Object')[0] obj = dom.getElementsByTagName('Object')[0]
self.res = ResourceList() self.res = ResourceList()
for i in obj.getElementsByTagName('res'): 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) self.res.append(r)


super(ItemObject, self).doUpdate() super(ItemObject, self).doUpdate()


Loading…
Cancel
Save