mirror of
				https://gitlab.com/ytdl-org/youtube-dl.git
				synced 2025-11-04 05:57:35 -05:00 
			
		
		
		
	[youtube] Move decrypt_sig out of _parse_dash_manifest
This commit is contained in:
		@@ -1035,22 +1035,7 @@ class YoutubeIE(YoutubeBaseInfoExtractor):
 | 
			
		||||
        url = 'https://www.youtube.com/annotations_invideo?features=1&legacy=1&video_id=%s' % video_id
 | 
			
		||||
        return self._download_webpage(url, video_id, note='Searching for annotations.', errnote='Unable to download video annotations.')
 | 
			
		||||
 | 
			
		||||
    def _parse_dash_manifest(
 | 
			
		||||
            self, video_id, dash_manifest_url, player_url, age_gate, fatal=True):
 | 
			
		||||
        def decrypt_sig(mobj):
 | 
			
		||||
            s = mobj.group(1)
 | 
			
		||||
            dec_s = self._decrypt_signature(s, video_id, player_url, age_gate)
 | 
			
		||||
            return '/signature/%s' % dec_s
 | 
			
		||||
        dash_manifest_url = re.sub(r'/s/([a-fA-F0-9\.]+)', decrypt_sig, dash_manifest_url)
 | 
			
		||||
        dash_doc = self._download_xml(
 | 
			
		||||
            dash_manifest_url, video_id,
 | 
			
		||||
            note='Downloading DASH manifest',
 | 
			
		||||
            errnote='Could not download DASH manifest',
 | 
			
		||||
            fatal=fatal)
 | 
			
		||||
 | 
			
		||||
        if dash_doc is False:
 | 
			
		||||
            return []
 | 
			
		||||
 | 
			
		||||
    def _parse_dash_manifest(self, video_id, dash_doc, fatal=True):
 | 
			
		||||
        formats = []
 | 
			
		||||
        for a in dash_doc.findall('.//{urn:mpeg:DASH:schema:MPD:2011}AdaptationSet'):
 | 
			
		||||
            mime_type = a.attrib.get('mimeType')
 | 
			
		||||
@@ -1533,8 +1518,19 @@ class YoutubeIE(YoutubeBaseInfoExtractor):
 | 
			
		||||
            for dash_manifest_url in dash_mpds:
 | 
			
		||||
                dash_formats = {}
 | 
			
		||||
                try:
 | 
			
		||||
                    for df in self._parse_dash_manifest(
 | 
			
		||||
                            video_id, dash_manifest_url, player_url, age_gate, dash_mpd_fatal):
 | 
			
		||||
                    def decrypt_sig(mobj):
 | 
			
		||||
                        s = mobj.group(1)
 | 
			
		||||
                        dec_s = self._decrypt_signature(s, video_id, player_url, age_gate)
 | 
			
		||||
                        return '/signature/%s' % dec_s
 | 
			
		||||
 | 
			
		||||
                    dash_manifest_url = re.sub(r'/s/([a-fA-F0-9\.]+)', decrypt_sig, dash_manifest_url)
 | 
			
		||||
                    dash_doc = self._download_xml(
 | 
			
		||||
                        dash_manifest_url, video_id,
 | 
			
		||||
                        note='Downloading DASH manifest',
 | 
			
		||||
                        errnote='Could not download DASH manifest',
 | 
			
		||||
                        fatal=dash_mpd_fatal)
 | 
			
		||||
 | 
			
		||||
                    for df in self._parse_dash_manifest(video_id, dash_doc, dash_mpd_fatal):
 | 
			
		||||
                        # Do not overwrite DASH format found in some previous DASH manifest
 | 
			
		||||
                        if df['format_id'] not in dash_formats:
 | 
			
		||||
                            dash_formats[df['format_id']] = df
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user