diff --git a/youtube_dl/YoutubeDL.py b/youtube_dl/YoutubeDL.py index 63ed08abfc..d9f83419e1 100644 --- a/youtube_dl/YoutubeDL.py +++ b/youtube_dl/YoutubeDL.py @@ -4,6 +4,7 @@ from __future__ import absolute_import, unicode_literals import collections +import datetime import errno import io import json @@ -688,6 +689,11 @@ def process_video_result(self, info_dict, download=True): if 'display_id' not in info_dict and 'id' in info_dict: info_dict['display_id'] = info_dict['id'] + if info_dict.get('upload_date') is None and info_dict.get('upload_timestamp') is not None: + upload_date = datetime.datetime.utcfromtimestamp( + info_dict['upload_timestamp']) + info_dict['upload_date'] = upload_date.strftime('%Y%m%d') + # This extractors handle format selection themselves if info_dict['extractor'] in ['Youku']: if download: diff --git a/youtube_dl/extractor/common.py b/youtube_dl/extractor/common.py index fed05ce02f..103528414c 100644 --- a/youtube_dl/extractor/common.py +++ b/youtube_dl/extractor/common.py @@ -97,7 +97,9 @@ class InfoExtractor(object): thumbnail: Full URL to a video thumbnail image. description: One-line video description. uploader: Full name of the video uploader. + upload_timestamp:UNIX timestamp of the upload moment. upload_date: Video upload date (YYYYMMDD). + If not explicitly set, calculated from update_timestamp. uploader_id: Nickname or id of the video uploader. location: Physical location of the video. subtitles: The subtitle file contents as a dictionary in the format diff --git a/youtube_dl/extractor/vevo.py b/youtube_dl/extractor/vevo.py index 888eb7402b..7c97b9b364 100644 --- a/youtube_dl/extractor/vevo.py +++ b/youtube_dl/extractor/vevo.py @@ -2,7 +2,6 @@ import re import xml.etree.ElementTree -import datetime from .common import InfoExtractor from ..utils import ( @@ -57,7 +56,8 @@ class VevoIE(InfoExtractor): 'age_limit': 18, 'title': 'Tunnel Vision (Explicit)', 'uploader': 'Justin Timberlake', - 'upload_date': '20130703', + 'upload_date': '20130704', + 'upload_timestamp': 1372906800, }, 'params': { 'skip_download': 'true', @@ -169,13 +169,13 @@ def _real_extract(self, url): timestamp_ms = int(self._search_regex( r'/Date\((\d+)\)/', video_info['launchDate'], 'launch date')) - upload_date = datetime.datetime.utcfromtimestamp(timestamp_ms // 1000) + return { 'id': video_id, 'title': video_info['title'], 'formats': formats, 'thumbnail': video_info['imageUrl'], - 'upload_date': upload_date.strftime('%Y%m%d'), + 'upload_timestamp': timestamp_ms // 1000, 'uploader': video_info['mainArtists'][0]['artistName'], 'duration': video_info['duration'], 'age_limit': age_limit,