summary refs log tree commit diff
diff options
context:
space:
mode:
authorSergey M․ <dstftw@gmail.com>2015-08-15 21:52:22 +0600
committerSergey M․ <dstftw@gmail.com>2015-08-15 21:52:22 +0600
commit201ea3ee8e392d6c82bb8137b80b4328db40a399 (patch)
tree182a8964eb7208b91cadab75363b59388e3446f6
parent9303ce3e6969b5818982d6214a8d0ff4e3c95286 (diff)
downloadyoutube-dl-201ea3ee8e392d6c82bb8137b80b4328db40a399.tar.gz
youtube-dl-201ea3ee8e392d6c82bb8137b80b4328db40a399.tar.xz
youtube-dl-201ea3ee8e392d6c82bb8137b80b4328db40a399.zip
[extractor/common] Improve _hidden_inputs
-rw-r--r--youtube_dl/extractor/common.py22
1 files changed, 12 insertions, 10 deletions
diff --git a/youtube_dl/extractor/common.py b/youtube_dl/extractor/common.py
index 16ae4b98f..e2ace827f 100644
--- a/youtube_dl/extractor/common.py
+++ b/youtube_dl/extractor/common.py
@@ -724,16 +724,18 @@ class InfoExtractor(object):
 
     @staticmethod
     def _hidden_inputs(html):
-        return dict([
-            (input.group('name'), input.group('value')) for input in re.finditer(
-                r'''(?x)
-                    <input\s+
-                        type=(?P<q_hidden>["\'])hidden(?P=q_hidden)\s+
-                        name=(?P<q_name>["\'])(?P<name>.+?)(?P=q_name)\s+
-                        (?:id=(?P<q_id>["\']).+?(?P=q_id)\s+)?
-                        value=(?P<q_value>["\'])(?P<value>.*?)(?P=q_value)
-                ''', html)
-        ])
+        hidden_inputs = {}
+        for input in re.findall(r'<input([^>]+)>', html):
+            if not re.search(r'type=(["\'])hidden\1', input):
+                continue
+            name = re.search(r'name=(["\'])(?P<value>.+?)\1', input)
+            if not name:
+                continue
+            value = re.search(r'value=(["\'])(?P<value>.*?)\1', input)
+            if not value:
+                continue
+            hidden_inputs[name.group('value')] = value.group('value')
+        return hidden_inputs
 
     def _form_hidden_inputs(self, form_id, html):
         form = self._search_regex(