Browse Source

[utils] Add xpath_element and xpath_attr

totalwebcasting
Sergey M․ 9 years ago
parent
commit
a41fb80ce1
1 changed files with 19 additions and 2 deletions
  1. +19
    -2
      youtube_dl/utils.py

+ 19
- 2
youtube_dl/utils.py View File

@ -176,7 +176,7 @@ def xpath_with_ns(path, ns_map):
return '/'.join(replaced) return '/'.join(replaced)
def xpath_text(node, xpath, name=None, fatal=False, default=NO_DEFAULT):
def xpath_element(node, xpath, name=None, fatal=False, default=NO_DEFAULT):
if sys.version_info < (2, 7): # Crazy 2.6 if sys.version_info < (2, 7): # Crazy 2.6
xpath = xpath.encode('ascii') xpath = xpath.encode('ascii')
@ -189,7 +189,24 @@ def xpath_text(node, xpath, name=None, fatal=False, default=NO_DEFAULT):
raise ExtractorError('Could not find XML element %s' % name) raise ExtractorError('Could not find XML element %s' % name)
else: else:
return None return None
return n.text
return n
def xpath_text(node, xpath, name=None, fatal=False, default=NO_DEFAULT):
return xpath_element(node, xpath, name, fatal=fatal, default=default).text
def xpath_attr(node, xpath, key, name=None, fatal=False, default=NO_DEFAULT):
n = find_xpath_attr(node, xpath, key)
if n is None:
if default is not NO_DEFAULT:
return default
elif fatal:
name = '%s[@%s]' % (xpath, key) if name is None else name
raise ExtractorError('Could not find XML attribute %s' % name)
else:
return None
return n.attrib[key]
def get_element_by_id(id, html): def get_element_by_id(id, html):


Loading…
Cancel
Save