mirror of
				https://github.com/yt-dlp/yt-dlp.git
				synced 2025-10-31 14:45:14 +00:00 
			
		
		
		
	Merge pull request #6306 from jaimeMF/extract_start_time
[youtube] Extract start_time
This commit is contained in:
		| @@ -183,6 +183,10 @@ class InfoExtractor(object): | ||||
|                     ["Sports", "Berlin"] | ||||
|     is_live:        True, False, or None (=unknown). Whether this video is a | ||||
|                     live stream that goes on instead of a fixed-length video. | ||||
|     start_time:     Time in seconds where the reproduction should start, as | ||||
|                     specified in the url. | ||||
|     end_time:       Time in seconds where the reproduction should end, as | ||||
|                     specified in the url. | ||||
|  | ||||
|     Unless mentioned otherwise, the fields should be Unicode strings. | ||||
|  | ||||
|   | ||||
| @@ -19,6 +19,7 @@ from ..compat import ( | ||||
|     compat_urllib_parse, | ||||
|     compat_urllib_parse_unquote, | ||||
|     compat_urllib_parse_unquote_plus, | ||||
|     compat_urllib_parse_urlparse, | ||||
|     compat_urllib_request, | ||||
|     compat_urlparse, | ||||
|     compat_str, | ||||
| @@ -31,6 +32,7 @@ from ..utils import ( | ||||
|     get_element_by_id, | ||||
|     int_or_none, | ||||
|     orderedSet, | ||||
|     parse_duration, | ||||
|     str_to_int, | ||||
|     unescapeHTML, | ||||
|     unified_strdate, | ||||
| @@ -317,7 +319,7 @@ class YoutubeIE(YoutubeBaseInfoExtractor): | ||||
|     IE_NAME = 'youtube' | ||||
|     _TESTS = [ | ||||
|         { | ||||
|             'url': 'http://www.youtube.com/watch?v=BaW_jenozKc', | ||||
|             'url': 'http://www.youtube.com/watch?v=BaW_jenozKcj&t=1s&end=9', | ||||
|             'info_dict': { | ||||
|                 'id': 'BaW_jenozKc', | ||||
|                 'ext': 'mp4', | ||||
| @@ -329,6 +331,8 @@ class YoutubeIE(YoutubeBaseInfoExtractor): | ||||
|                 'categories': ['Science & Technology'], | ||||
|                 'like_count': int, | ||||
|                 'dislike_count': int, | ||||
|                 'start_time': 1, | ||||
|                 'end_time': 9, | ||||
|             } | ||||
|         }, | ||||
|         { | ||||
| @@ -889,6 +893,18 @@ class YoutubeIE(YoutubeBaseInfoExtractor): | ||||
|             'http' if self._downloader.params.get('prefer_insecure', False) | ||||
|             else 'https') | ||||
|  | ||||
|         start_time = None | ||||
|         end_time = None | ||||
|         parsed_url = compat_urllib_parse_urlparse(url) | ||||
|         for component in [parsed_url.fragment, parsed_url.query]: | ||||
|             query = compat_parse_qs(component) | ||||
|             if start_time is None and 't' in query: | ||||
|                 start_time = parse_duration(query['t'][0]) | ||||
|             if start_time is None and 'start' in query: | ||||
|                 start_time = parse_duration(query['start'][0]) | ||||
|             if end_time is None and 'end' in query: | ||||
|                 end_time = parse_duration(query['end'][0]) | ||||
|  | ||||
|         # 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: | ||||
| @@ -1256,6 +1272,8 @@ class YoutubeIE(YoutubeBaseInfoExtractor): | ||||
|             'average_rating': float_or_none(video_info.get('avg_rating', [None])[0]), | ||||
|             'formats': formats, | ||||
|             'is_live': is_live, | ||||
|             'start_time': start_time, | ||||
|             'end_time': end_time, | ||||
|         } | ||||
|  | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Sergey M.
					Sergey M.