mirror of
				https://github.com/yt-dlp/yt-dlp.git
				synced 2025-11-04 00:25:15 +00:00 
			
		
		
		
	[youtube] Extract DASH formats from player response (closes #18804)
This commit is contained in:
		@@ -1545,6 +1545,13 @@ class YoutubeIE(YoutubeBaseInfoExtractor):
 | 
				
			|||||||
            if dash_mpd and dash_mpd[0] not in dash_mpds:
 | 
					            if dash_mpd and dash_mpd[0] not in dash_mpds:
 | 
				
			||||||
                dash_mpds.append(dash_mpd[0])
 | 
					                dash_mpds.append(dash_mpd[0])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        def add_dash_mpd_pr(pl_response):
 | 
				
			||||||
 | 
					            dash_mpd = url_or_none(try_get(
 | 
				
			||||||
 | 
					                pl_response, lambda x: x['streamingData']['dashManifestUrl'],
 | 
				
			||||||
 | 
					                compat_str))
 | 
				
			||||||
 | 
					            if dash_mpd and dash_mpd not in dash_mpds:
 | 
				
			||||||
 | 
					                dash_mpds.append(dash_mpd)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        is_live = None
 | 
					        is_live = None
 | 
				
			||||||
        view_count = None
 | 
					        view_count = None
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -1602,6 +1609,7 @@ class YoutubeIE(YoutubeBaseInfoExtractor):
 | 
				
			|||||||
                        if isinstance(pl_response, dict):
 | 
					                        if isinstance(pl_response, dict):
 | 
				
			||||||
                            player_response = pl_response
 | 
					                            player_response = pl_response
 | 
				
			||||||
            if not video_info or self._downloader.params.get('youtube_include_dash_manifest', True):
 | 
					            if not video_info or self._downloader.params.get('youtube_include_dash_manifest', True):
 | 
				
			||||||
 | 
					                add_dash_mpd_pr(player_response)
 | 
				
			||||||
                # We also try looking in get_video_info since it may contain different dashmpd
 | 
					                # We also try looking in get_video_info since it may contain different dashmpd
 | 
				
			||||||
                # URL that points to a DASH manifest with possibly different itag set (some itags
 | 
					                # URL that points to a DASH manifest with possibly different itag set (some itags
 | 
				
			||||||
                # are missing from DASH manifest pointed by webpage's dashmpd, some - from DASH
 | 
					                # are missing from DASH manifest pointed by webpage's dashmpd, some - from DASH
 | 
				
			||||||
@@ -1633,6 +1641,7 @@ class YoutubeIE(YoutubeBaseInfoExtractor):
 | 
				
			|||||||
                        pl_response = get_video_info.get('player_response', [None])[0]
 | 
					                        pl_response = get_video_info.get('player_response', [None])[0]
 | 
				
			||||||
                        if isinstance(pl_response, dict):
 | 
					                        if isinstance(pl_response, dict):
 | 
				
			||||||
                            player_response = pl_response
 | 
					                            player_response = pl_response
 | 
				
			||||||
 | 
					                            add_dash_mpd_pr(player_response)
 | 
				
			||||||
                    add_dash_mpd(get_video_info)
 | 
					                    add_dash_mpd(get_video_info)
 | 
				
			||||||
                    if view_count is None:
 | 
					                    if view_count is None:
 | 
				
			||||||
                        view_count = extract_view_count(get_video_info)
 | 
					                        view_count = extract_view_count(get_video_info)
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user