Merge branch 'bilibili' of https://github.com/PeterDing/youtube-dl into PeterDing...
[youtube-dl] / youtube_dl / extractor / turner.py
index 6df22fd24af7e7bacd81da4c33d8796a6e7364b4..b59dafda6dd88607659226cf9c9c81180e02dbde 100644 (file)
@@ -17,9 +17,12 @@ from ..utils import (
 
 
 class TurnerBaseIE(InfoExtractor):
+    def _extract_timestamp(self, video_data):
+        return int_or_none(xpath_attr(video_data, 'dateCreated', 'uts'))
+
     def _extract_cvp_info(self, data_src, video_id, path_data={}):
         video_data = self._download_xml(data_src, video_id)
-        video_id = video_data.attrib['id'].split('/')[-1].split('.')[0]
+        video_id = video_data.attrib['id']
         title = xpath_text(video_data, 'headline', fatal=True)
         # rtmp_src = xpath_text(video_data, 'akamai/src')
         # if rtmp_src:
@@ -140,7 +143,7 @@ class TurnerBaseIE(InfoExtractor):
         for source in video_data.findall('closedCaptions/source'):
             for track in source.findall('track'):
                 track_url = track.get('url')
-                if not track_url:
+                if not isinstance(track_url, compat_str) or track_url.endswith('/big'):
                     continue
                 lang = track.get('lang') or track.get('label') or 'en'
                 subtitles.setdefault(lang, []).append({
@@ -159,10 +162,6 @@ class TurnerBaseIE(InfoExtractor):
             'height': int_or_none(image.get('height')),
         } for image in video_data.findall('images/image')]
 
-        timestamp = None
-        if 'cnn.com' not in data_src:
-            timestamp = int_or_none(xpath_attr(video_data, 'dateCreated', 'uts'))
-
         return {
             'id': video_id,
             'title': title,
@@ -171,7 +170,7 @@ class TurnerBaseIE(InfoExtractor):
             'thumbnails': thumbnails,
             'description': xpath_text(video_data, 'description'),
             'duration': parse_duration(xpath_text(video_data, 'length') or xpath_text(video_data, 'trt')),
-            'timestamp': timestamp,
+            'timestamp': self._extract_timestamp(video_data),
             'upload_date': xpath_attr(video_data, 'metas', 'version'),
             'series': xpath_text(video_data, 'showTitle'),
             'season_number': int_or_none(xpath_text(video_data, 'seasonNumber')),