[vevo] Centralize timestamp handling
This commit is contained in:
parent
9b69af5342
commit
9d2ecdbc71
|
@ -4,6 +4,7 @@
|
||||||
from __future__ import absolute_import, unicode_literals
|
from __future__ import absolute_import, unicode_literals
|
||||||
|
|
||||||
import collections
|
import collections
|
||||||
|
import datetime
|
||||||
import errno
|
import errno
|
||||||
import io
|
import io
|
||||||
import json
|
import json
|
||||||
|
@ -688,6 +689,11 @@ class YoutubeDL(object):
|
||||||
if 'display_id' not in info_dict and 'id' in info_dict:
|
if 'display_id' not in info_dict and 'id' in info_dict:
|
||||||
info_dict['display_id'] = info_dict['id']
|
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
|
# This extractors handle format selection themselves
|
||||||
if info_dict['extractor'] in ['Youku']:
|
if info_dict['extractor'] in ['Youku']:
|
||||||
if download:
|
if download:
|
||||||
|
|
|
@ -97,7 +97,9 @@ class InfoExtractor(object):
|
||||||
thumbnail: Full URL to a video thumbnail image.
|
thumbnail: Full URL to a video thumbnail image.
|
||||||
description: One-line video description.
|
description: One-line video description.
|
||||||
uploader: Full name of the video uploader.
|
uploader: Full name of the video uploader.
|
||||||
|
upload_timestamp:UNIX timestamp of the upload moment.
|
||||||
upload_date: Video upload date (YYYYMMDD).
|
upload_date: Video upload date (YYYYMMDD).
|
||||||
|
If not explicitly set, calculated from update_timestamp.
|
||||||
uploader_id: Nickname or id of the video uploader.
|
uploader_id: Nickname or id of the video uploader.
|
||||||
location: Physical location of the video.
|
location: Physical location of the video.
|
||||||
subtitles: The subtitle file contents as a dictionary in the format
|
subtitles: The subtitle file contents as a dictionary in the format
|
||||||
|
|
|
@ -2,7 +2,6 @@ from __future__ import unicode_literals
|
||||||
|
|
||||||
import re
|
import re
|
||||||
import xml.etree.ElementTree
|
import xml.etree.ElementTree
|
||||||
import datetime
|
|
||||||
|
|
||||||
from .common import InfoExtractor
|
from .common import InfoExtractor
|
||||||
from ..utils import (
|
from ..utils import (
|
||||||
|
@ -57,7 +56,8 @@ class VevoIE(InfoExtractor):
|
||||||
'age_limit': 18,
|
'age_limit': 18,
|
||||||
'title': 'Tunnel Vision (Explicit)',
|
'title': 'Tunnel Vision (Explicit)',
|
||||||
'uploader': 'Justin Timberlake',
|
'uploader': 'Justin Timberlake',
|
||||||
'upload_date': '20130703',
|
'upload_date': '20130704',
|
||||||
|
'upload_timestamp': 1372906800,
|
||||||
},
|
},
|
||||||
'params': {
|
'params': {
|
||||||
'skip_download': 'true',
|
'skip_download': 'true',
|
||||||
|
@ -169,13 +169,13 @@ class VevoIE(InfoExtractor):
|
||||||
|
|
||||||
timestamp_ms = int(self._search_regex(
|
timestamp_ms = int(self._search_regex(
|
||||||
r'/Date\((\d+)\)/', video_info['launchDate'], 'launch date'))
|
r'/Date\((\d+)\)/', video_info['launchDate'], 'launch date'))
|
||||||
upload_date = datetime.datetime.utcfromtimestamp(timestamp_ms // 1000)
|
|
||||||
return {
|
return {
|
||||||
'id': video_id,
|
'id': video_id,
|
||||||
'title': video_info['title'],
|
'title': video_info['title'],
|
||||||
'formats': formats,
|
'formats': formats,
|
||||||
'thumbnail': video_info['imageUrl'],
|
'thumbnail': video_info['imageUrl'],
|
||||||
'upload_date': upload_date.strftime('%Y%m%d'),
|
'upload_timestamp': timestamp_ms // 1000,
|
||||||
'uploader': video_info['mainArtists'][0]['artistName'],
|
'uploader': video_info['mainArtists'][0]['artistName'],
|
||||||
'duration': video_info['duration'],
|
'duration': video_info['duration'],
|
||||||
'age_limit': age_limit,
|
'age_limit': age_limit,
|
||||||
|
|
Loading…
Reference in New Issue