mirror of
				https://gitlab.com/ytdl-org/youtube-dl.git
				synced 2025-11-04 07:47:08 -05:00 
			
		
		
		
	Add --prefer-insecure option (Fixes #2364)
This commit is contained in:
		@@ -148,6 +148,8 @@ class YoutubeDL(object):
 | 
			
		||||
                       again.
 | 
			
		||||
    cookiefile:        File name where cookies should be read from and dumped to.
 | 
			
		||||
    nocheckcertificate:Do not verify SSL certificates
 | 
			
		||||
    prefer_insecure:   Use HTTP instead of HTTPS to retrieve information.
 | 
			
		||||
                       At the moment, this is only supported by YouTube.
 | 
			
		||||
    proxy:             URL of the proxy server to use
 | 
			
		||||
    socket_timeout:    Time to wait for unresponsive hosts, in seconds
 | 
			
		||||
    bidi_workaround:   Work around buggy terminals without bidirectional text
 | 
			
		||||
 
 | 
			
		||||
@@ -237,6 +237,9 @@ def parseOpts(overrideArguments=None):
 | 
			
		||||
        '--proxy', dest='proxy', default=None, metavar='URL',
 | 
			
		||||
        help='Use the specified HTTP/HTTPS proxy. Pass in an empty string (--proxy "") for direct connection')
 | 
			
		||||
    general.add_option('--no-check-certificate', action='store_true', dest='no_check_certificate', default=False, help='Suppress HTTPS certificate validation.')
 | 
			
		||||
    general.add_option(
 | 
			
		||||
        '--prefer-insecure', action='store_true', dest='prefer_insecure',
 | 
			
		||||
        help='Use an unencrypted connection to retrieve information about the video. (Currently supported only for YouTube)')
 | 
			
		||||
    general.add_option(
 | 
			
		||||
        '--cache-dir', dest='cachedir', default=get_cachedir(), metavar='DIR',
 | 
			
		||||
        help='Location in the filesystem where youtube-dl can store some downloaded information permanently. By default $XDG_CACHE_HOME/youtube-dl or ~/.cache/youtube-dl . At the moment, only YouTube player files (for videos with obfuscated signatures) are cached, but that may change.')
 | 
			
		||||
@@ -257,7 +260,6 @@ def parseOpts(overrideArguments=None):
 | 
			
		||||
        action='store_true',
 | 
			
		||||
        help='Do not read configuration files. When given in the global configuration file /etc/youtube-dl.conf: do not read the user configuration in ~/.config/youtube-dl.conf (%APPDATA%/youtube-dl/config.txt on Windows)')
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    selection.add_option(
 | 
			
		||||
        '--playlist-start',
 | 
			
		||||
        dest='playliststart', metavar='NUMBER', default=1, type=int,
 | 
			
		||||
@@ -756,6 +758,7 @@ def _real_main(argv=None):
 | 
			
		||||
        'download_archive': download_archive_fn,
 | 
			
		||||
        'cookiefile': opts.cookiefile,
 | 
			
		||||
        'nocheckcertificate': opts.no_check_certificate,
 | 
			
		||||
        'prefer_insecure': opts.prefer_insecure,
 | 
			
		||||
        'proxy': opts.proxy,
 | 
			
		||||
        'socket_timeout': opts.socket_timeout,
 | 
			
		||||
        'bidi_workaround': opts.bidi_workaround,
 | 
			
		||||
 
 | 
			
		||||
@@ -1130,14 +1130,18 @@ class YoutubeIE(YoutubeBaseInfoExtractor, SubtitlesInfoExtractor):
 | 
			
		||||
        return self._download_webpage(url, video_id, note=u'Searching for annotations.', errnote=u'Unable to download video annotations.')
 | 
			
		||||
 | 
			
		||||
    def _real_extract(self, url):
 | 
			
		||||
        proto = (
 | 
			
		||||
            u'http' if self._downloader.params.get('prefer_insecure', False)
 | 
			
		||||
            else u'https')
 | 
			
		||||
 | 
			
		||||
        # Extract original video URL from URL with redirection, like age verification, using next_url parameter
 | 
			
		||||
        mobj = re.search(self._NEXT_URL_RE, url)
 | 
			
		||||
        if mobj:
 | 
			
		||||
            url = 'https://www.youtube.com/' + compat_urllib_parse.unquote(mobj.group(1)).lstrip('/')
 | 
			
		||||
            url = proto + '://www.youtube.com/' + compat_urllib_parse.unquote(mobj.group(1)).lstrip('/')
 | 
			
		||||
        video_id = self.extract_id(url)
 | 
			
		||||
 | 
			
		||||
        # Get video webpage
 | 
			
		||||
        url = 'https://www.youtube.com/watch?v=%s&gl=US&hl=en&has_verified=1' % video_id
 | 
			
		||||
        url = proto + '://www.youtube.com/watch?v=%s&gl=US&hl=en&has_verified=1' % video_id
 | 
			
		||||
        video_webpage = self._download_webpage(url, video_id)
 | 
			
		||||
 | 
			
		||||
        # Attempt to extract SWF player URL
 | 
			
		||||
@@ -1162,7 +1166,7 @@ class YoutubeIE(YoutubeBaseInfoExtractor, SubtitlesInfoExtractor):
 | 
			
		||||
                                                  'asv': 3,
 | 
			
		||||
                                                  'sts':'1588',
 | 
			
		||||
                                                  })
 | 
			
		||||
            video_info_url = 'https://www.youtube.com/get_video_info?' + data
 | 
			
		||||
            video_info_url = proto + '://www.youtube.com/get_video_info?' + data
 | 
			
		||||
            video_info_webpage = self._download_webpage(video_info_url, video_id,
 | 
			
		||||
                                    note=False,
 | 
			
		||||
                                    errnote='unable to download video info webpage')
 | 
			
		||||
@@ -1170,7 +1174,7 @@ class YoutubeIE(YoutubeBaseInfoExtractor, SubtitlesInfoExtractor):
 | 
			
		||||
        else:
 | 
			
		||||
            age_gate = False
 | 
			
		||||
            for el_type in ['&el=embedded', '&el=detailpage', '&el=vevo', '']:
 | 
			
		||||
                video_info_url = ('https://www.youtube.com/get_video_info?&video_id=%s%s&ps=default&eurl=&gl=US&hl=en'
 | 
			
		||||
                video_info_url = (proto + '://www.youtube.com/get_video_info?&video_id=%s%s&ps=default&eurl=&gl=US&hl=en'
 | 
			
		||||
                        % (video_id, el_type))
 | 
			
		||||
                video_info_webpage = self._download_webpage(video_info_url, video_id,
 | 
			
		||||
                                        note=False,
 | 
			
		||||
@@ -1445,7 +1449,7 @@ class YoutubeIE(YoutubeBaseInfoExtractor, SubtitlesInfoExtractor):
 | 
			
		||||
            'duration':     video_duration,
 | 
			
		||||
            'age_limit':    18 if age_gate else 0,
 | 
			
		||||
            'annotations':  video_annotations,
 | 
			
		||||
            'webpage_url': 'https://www.youtube.com/watch?v=%s' % video_id,
 | 
			
		||||
            'webpage_url': proto + '://www.youtube.com/watch?v=%s' % video_id,
 | 
			
		||||
            'view_count':   view_count,
 | 
			
		||||
            'like_count': like_count,
 | 
			
		||||
            'dislike_count': dislike_count,
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user