mirror of
				https://gitlab.com/ytdl-org/youtube-dl.git
				synced 2025-11-04 08:37:07 -05:00 
			
		
		
		
	[yandexvideo] Add support for DASH formats (#21971)
This commit is contained in:
		@@ -3,6 +3,7 @@ from __future__ import unicode_literals
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
from .common import InfoExtractor
 | 
					from .common import InfoExtractor
 | 
				
			||||||
from ..utils import (
 | 
					from ..utils import (
 | 
				
			||||||
 | 
					    determine_ext,
 | 
				
			||||||
    int_or_none,
 | 
					    int_or_none,
 | 
				
			||||||
    url_or_none,
 | 
					    url_or_none,
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
@@ -47,6 +48,10 @@ class YandexVideoIE(InfoExtractor):
 | 
				
			|||||||
        # episode, sports
 | 
					        # episode, sports
 | 
				
			||||||
        'url': 'https://yandex.ru/?stream_channel=1538487871&stream_id=4132a07f71fb0396be93d74b3477131d',
 | 
					        'url': 'https://yandex.ru/?stream_channel=1538487871&stream_id=4132a07f71fb0396be93d74b3477131d',
 | 
				
			||||||
        'only_matching': True,
 | 
					        'only_matching': True,
 | 
				
			||||||
 | 
					    }, {
 | 
				
			||||||
 | 
					        # DASH with DRM
 | 
				
			||||||
 | 
					        'url': 'https://yandex.ru/portal/video?from=morda&stream_id=485a92d94518d73a9d0ff778e13505f8',
 | 
				
			||||||
 | 
					        'only_matching': True,
 | 
				
			||||||
    }]
 | 
					    }]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def _real_extract(self, url):
 | 
					    def _real_extract(self, url):
 | 
				
			||||||
@@ -59,13 +64,22 @@ class YandexVideoIE(InfoExtractor):
 | 
				
			|||||||
                'disable_trackings': 1,
 | 
					                'disable_trackings': 1,
 | 
				
			||||||
            })['content']
 | 
					            })['content']
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        m3u8_url = url_or_none(content.get('content_url')) or url_or_none(
 | 
					        content_url = url_or_none(content.get('content_url')) or url_or_none(
 | 
				
			||||||
            content['streams'][0]['url'])
 | 
					            content['streams'][0]['url'])
 | 
				
			||||||
        title = content.get('title') or content.get('computed_title')
 | 
					        title = content.get('title') or content.get('computed_title')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        formats = self._extract_m3u8_formats(
 | 
					        ext = determine_ext(content_url)
 | 
				
			||||||
            m3u8_url, video_id, 'mp4', entry_protocol='m3u8_native',
 | 
					
 | 
				
			||||||
            m3u8_id='hls')
 | 
					        if ext == 'm3u8':
 | 
				
			||||||
 | 
					            formats = self._extract_m3u8_formats(
 | 
				
			||||||
 | 
					                content_url, video_id, 'mp4', entry_protocol='m3u8_native',
 | 
				
			||||||
 | 
					                m3u8_id='hls')
 | 
				
			||||||
 | 
					        elif ext == 'mpd':
 | 
				
			||||||
 | 
					            formats = self._extract_mpd_formats(
 | 
				
			||||||
 | 
					                content_url, video_id, mpd_id='dash')
 | 
				
			||||||
 | 
					        else:
 | 
				
			||||||
 | 
					            formats = [{'url': content_url}]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        self._sort_formats(formats)
 | 
					        self._sort_formats(formats)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        description = content.get('description')
 | 
					        description = content.get('description')
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user