diff options
author | Sergey M․ <dstftw@gmail.com> | 2015-08-15 21:52:22 +0600 |
---|---|---|
committer | Sergey M․ <dstftw@gmail.com> | 2015-08-15 21:52:22 +0600 |
commit | 201ea3ee8e392d6c82bb8137b80b4328db40a399 (patch) | |
tree | 182a8964eb7208b91cadab75363b59388e3446f6 /youtube_dl | |
parent | 9303ce3e6969b5818982d6214a8d0ff4e3c95286 (diff) |
[extractor/common] Improve _hidden_inputs
Diffstat (limited to 'youtube_dl')
-rw-r--r-- | youtube_dl/extractor/common.py | 22 |
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( |