second commit
This commit is contained in:
78
env/lib/python3.11/site-packages/mpegdash/utils.py
vendored
Normal file
78
env/lib/python3.11/site-packages/mpegdash/utils.py
vendored
Normal file
@ -0,0 +1,78 @@
|
||||
from xml.dom import minidom
|
||||
|
||||
import re
|
||||
|
||||
|
||||
def _find_child_nodes_by_name(parent, name):
|
||||
nodes = []
|
||||
for node in parent.childNodes:
|
||||
if node.nodeType == node.ELEMENT_NODE and (node.localName == name or node.nodeName == name):
|
||||
nodes.append(node)
|
||||
return nodes
|
||||
|
||||
|
||||
def parse_child_nodes(xmlnode, tag_name, node_type):
|
||||
elements = _find_child_nodes_by_name(xmlnode, tag_name)
|
||||
if not elements:
|
||||
return None
|
||||
|
||||
nodes = []
|
||||
for elem in elements:
|
||||
if isinstance(node_type, str):
|
||||
node = xmlnode.firstChild.nodeValue
|
||||
else:
|
||||
node = node_type()
|
||||
node.parse(elem)
|
||||
nodes.append(node)
|
||||
|
||||
return nodes
|
||||
|
||||
|
||||
def parse_node_value(xmlnode, value_type):
|
||||
node_val = xmlnode.firstChild.nodeValue if xmlnode.firstChild else None
|
||||
if node_val:
|
||||
return value_type(node_val)
|
||||
return None
|
||||
|
||||
|
||||
def parse_attr_value(xmlnode, attr_name, value_type):
|
||||
if attr_name not in xmlnode.attributes.keys():
|
||||
return None
|
||||
|
||||
attr_val = xmlnode.attributes[attr_name].nodeValue
|
||||
if isinstance(value_type, list):
|
||||
attr_type = value_type[0] if len(value_type) > 0 else str
|
||||
return [attr_type(elem) for elem in re.split(r'[, ]', attr_val)]
|
||||
|
||||
return value_type(attr_val)
|
||||
|
||||
|
||||
def write_child_node(xmlnode, tag_name, node):
|
||||
if node:
|
||||
xmldoc = xmlnode if isinstance(xmlnode, minidom.Document) else xmlnode.ownerDocument
|
||||
if isinstance(node, list):
|
||||
for n in node:
|
||||
new_elem = xmldoc.createElement(tag_name)
|
||||
n.write(new_elem)
|
||||
xmlnode.appendChild(new_elem)
|
||||
else:
|
||||
new_elem = xmldoc.createElement(tag_name)
|
||||
node.write(new_elem)
|
||||
xmlnode.appendChild(new_elem)
|
||||
|
||||
|
||||
def write_node_value(xmlnode, node_val):
|
||||
if node_val:
|
||||
xmldoc = xmlnode if isinstance(xmlnode, minidom.Document) else xmlnode.ownerDocument
|
||||
text_node = xmldoc.createTextNode(str(node_val))
|
||||
xmlnode.appendChild(text_node)
|
||||
|
||||
|
||||
def write_attr_value(xmlnode, attr_name, attr_val):
|
||||
if attr_name and attr_val is not None:
|
||||
if isinstance(type(attr_val), list):
|
||||
attr_val = ' '.join([str(val) for val in attr_val])
|
||||
val = str(attr_val)
|
||||
if type(attr_val) is bool:
|
||||
val = val.lower()
|
||||
xmlnode.setAttribute(attr_name, val)
|
Reference in New Issue
Block a user