From 9d2ecdbc712d4e500dd0207041392b143082ad00 Mon Sep 17 00:00:00 2001 From: Philipp Hagemeister Date: Thu, 13 Mar 2014 15:30:25 +0100 Subject: [PATCH] [vevo] Centralize timestamp handling --- youtube_dl/YoutubeDL.py | 6 ++++++ youtube_dl/extractor/common.py | 2 ++ youtube_dl/extractor/vevo.py | 8 ++++---- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/youtube_dl/YoutubeDL.py b/youtube_dl/YoutubeDL.py index 63ed08abf..d9f83419e 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 @@ class YoutubeDL(object): 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 fed05ce02..103528414 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 888eb7402..7c97b9b36 100644 --- a/youtube_dl/extractor/vevo.py +++ b/youtube_dl/extractor/vevo.py @@ -2,7 +2,6 @@ from __future__ import unicode_literals 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 @@ class VevoIE(InfoExtractor): 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,