浏览代码

[youtube] Extract end_time

Jaime Marquínez Ferrándiz 10 年之前
父节点
当前提交
297a564bee
共有 2 个文件被更改,包括 9 次插入3 次删除
  1. 2 0
      youtube_dl/extractor/common.py
  2. 7 3
      youtube_dl/extractor/youtube.py

+ 2 - 0
youtube_dl/extractor/common.py

@@ -185,6 +185,8 @@ class InfoExtractor(object):
                     live stream that goes on instead of a fixed-length video.
                     live stream that goes on instead of a fixed-length video.
     start_time:     Time in seconds where the reproduction should start, as
     start_time:     Time in seconds where the reproduction should start, as
                     specified in the url.
                     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.
     Unless mentioned otherwise, the fields should be Unicode strings.
 
 

+ 7 - 3
youtube_dl/extractor/youtube.py

@@ -319,7 +319,7 @@ class YoutubeIE(YoutubeBaseInfoExtractor):
     IE_NAME = 'youtube'
     IE_NAME = 'youtube'
     _TESTS = [
     _TESTS = [
         {
         {
-            'url': 'http://www.youtube.com/watch?v=BaW_jenozKcj&t=1s',
+            'url': 'http://www.youtube.com/watch?v=BaW_jenozKcj&t=1s&end=9',
             'info_dict': {
             'info_dict': {
                 'id': 'BaW_jenozKc',
                 'id': 'BaW_jenozKc',
                 'ext': 'mp4',
                 'ext': 'mp4',
@@ -332,6 +332,7 @@ class YoutubeIE(YoutubeBaseInfoExtractor):
                 'like_count': int,
                 'like_count': int,
                 'dislike_count': int,
                 'dislike_count': int,
                 'start_time': 1,
                 'start_time': 1,
+                'end_time': 9,
             }
             }
         },
         },
         {
         {
@@ -893,12 +894,14 @@ class YoutubeIE(YoutubeBaseInfoExtractor):
             else 'https')
             else 'https')
 
 
         start_time = None
         start_time = None
+        end_time = None
         parsed_url = compat_urllib_parse_urlparse(url)
         parsed_url = compat_urllib_parse_urlparse(url)
         for component in [parsed_url.fragment, parsed_url.query]:
         for component in [parsed_url.fragment, parsed_url.query]:
             query = compat_parse_qs(component)
             query = compat_parse_qs(component)
-            if 't' in query:
+            if start_time is None and 't' in query:
                 start_time = parse_duration(query['t'][0])
                 start_time = parse_duration(query['t'][0])
-                break
+            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
         # Extract original video URL from URL with redirection, like age verification, using next_url parameter
         mobj = re.search(self._NEXT_URL_RE, url)
         mobj = re.search(self._NEXT_URL_RE, url)
@@ -1267,6 +1270,7 @@ class YoutubeIE(YoutubeBaseInfoExtractor):
             'formats': formats,
             'formats': formats,
             'is_live': is_live,
             'is_live': is_live,
             'start_time': start_time,
             'start_time': start_time,
+            'end_time': end_time,
         }
         }