diff options
Diffstat (limited to 'youtube_dl/extractor/common.py')
| -rw-r--r-- | youtube_dl/extractor/common.py | 29 | 
1 files changed, 16 insertions, 13 deletions
diff --git a/youtube_dl/extractor/common.py b/youtube_dl/extractor/common.py index 5982055be..65835d257 100644 --- a/youtube_dl/extractor/common.py +++ b/youtube_dl/extractor/common.py @@ -15,6 +15,7 @@ import xml.etree.ElementTree  from ..compat import (      compat_cookiejar,      compat_cookies, +    compat_getpass,      compat_HTTPError,      compat_http_client,      compat_urllib_error, @@ -610,7 +611,7 @@ class InfoExtractor(object):          return (username, password) -    def _get_tfa_info(self): +    def _get_tfa_info(self, note='two-factor verification code'):          """          Get the two-factor authentication info          TODO - asking the user will be required for sms/phone verify @@ -624,7 +625,7 @@ class InfoExtractor(object):          if downloader_params.get('twofactor', None) is not None:              return downloader_params['twofactor'] -        return None +        return compat_getpass('Type %s and press [Return]: ' % note)      # Helper functions for extracting OpenGraph info      @staticmethod @@ -640,7 +641,7 @@ class InfoExtractor(object):      @staticmethod      def _meta_regex(prop):          return r'''(?isx)<meta -                    (?=[^>]+(?:itemprop|name|property|id)=(["\']?)%s\1) +                    (?=[^>]+(?:itemprop|name|property|id|http-equiv)=(["\']?)%s\1)                      [^>]+?content=(["\'])(?P<content>.*?)\2''' % re.escape(prop)      def _og_search_property(self, prop, html, name=None, **kargs): @@ -724,16 +725,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(  | 
