Merge branch 'ok-ru-datetime'
This commit is contained in:
commit
16e9c616ee
@ -1,6 +1,6 @@
|
|||||||
# coding: utf-8
|
# coding: utf-8
|
||||||
from __future__ import unicode_literals
|
from __future__ import unicode_literals
|
||||||
|
from datetime import datetime, timedelta
|
||||||
import re
|
import re
|
||||||
|
|
||||||
from .common import InfoExtractor
|
from .common import InfoExtractor
|
||||||
@ -17,6 +17,7 @@ from ..utils import (
|
|||||||
qualities,
|
qualities,
|
||||||
unescapeHTML,
|
unescapeHTML,
|
||||||
urlencode_postdata,
|
urlencode_postdata,
|
||||||
|
unified_timestamp
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@ -199,45 +200,7 @@ class OdnoklassnikiIE(InfoExtractor):
|
|||||||
|
|
||||||
upload_date = unified_strdate(self._html_search_meta(
|
upload_date = unified_strdate(self._html_search_meta(
|
||||||
'ya:ovs:upload_date', webpage, 'upload date', default=None))
|
'ya:ovs:upload_date', webpage, 'upload date', default=None))
|
||||||
|
upload_date, timestamp = self.resolve_timestamp_and_upload_date(upload_date, webpage)
|
||||||
if upload_date is None:
|
|
||||||
upload_date_str = self._search_regex(
|
|
||||||
r'vp-layer-info_date">(?P<date>.*?)<\/span>',
|
|
||||||
webpage, 'upload date', group='date')
|
|
||||||
if upload_date_str:
|
|
||||||
upload_date_str = upload_date_str.replace('Sept', 'Sep')
|
|
||||||
from datetime import datetime, timedelta
|
|
||||||
upload_date_time = None
|
|
||||||
try:
|
|
||||||
upload_date_time = datetime.strptime(upload_date_str, '%d %b %Y')
|
|
||||||
except:
|
|
||||||
pass
|
|
||||||
try:
|
|
||||||
upload_date_time = datetime.strptime(upload_date_str, '%d %b')
|
|
||||||
upload_date_time = upload_date_time.replace(year=datetime.utcnow().year)
|
|
||||||
except:
|
|
||||||
pass
|
|
||||||
try:
|
|
||||||
upload_date_time = datetime.strptime(upload_date_str, '%d %B')
|
|
||||||
upload_date_time = upload_date_time.replace(year=datetime.utcnow().year)
|
|
||||||
except:
|
|
||||||
pass
|
|
||||||
|
|
||||||
try:
|
|
||||||
if upload_date_str.find(':') >=0:
|
|
||||||
hour_and_minutes = upload_date_str.split(' ')[-1]
|
|
||||||
else:
|
|
||||||
hour_and_minutes = upload_date_str
|
|
||||||
upload_date_time = datetime.strptime(hour_and_minutes, '%H:%M')
|
|
||||||
upload_date_time = upload_date_time.replace(year=datetime.utcnow().year)
|
|
||||||
upload_date_time = upload_date_time.replace(day=datetime.utcnow().day)
|
|
||||||
if upload_date_str.find('yesterday') ==0:
|
|
||||||
upload_date_time = upload_date_time - timedelta(days=1)
|
|
||||||
except:
|
|
||||||
pass
|
|
||||||
|
|
||||||
if upload_date_time:
|
|
||||||
upload_date = upload_date_time.strftime('%Y%m%d')
|
|
||||||
|
|
||||||
age_limit = None
|
age_limit = None
|
||||||
adult = self._html_search_meta(
|
adult = self._html_search_meta(
|
||||||
@ -253,6 +216,7 @@ class OdnoklassnikiIE(InfoExtractor):
|
|||||||
'thumbnail': thumbnail,
|
'thumbnail': thumbnail,
|
||||||
'duration': duration,
|
'duration': duration,
|
||||||
'upload_date': upload_date,
|
'upload_date': upload_date,
|
||||||
|
'timestamp': timestamp,
|
||||||
'uploader': uploader,
|
'uploader': uploader,
|
||||||
'uploader_id': uploader_id,
|
'uploader_id': uploader_id,
|
||||||
'like_count': like_count,
|
'like_count': like_count,
|
||||||
@ -322,3 +286,62 @@ class OdnoklassnikiIE(InfoExtractor):
|
|||||||
|
|
||||||
info['formats'] = formats
|
info['formats'] = formats
|
||||||
return info
|
return info
|
||||||
|
|
||||||
|
def resolve_timestamp_and_upload_date(self, upload_date, webpage):
|
||||||
|
timestamp = None
|
||||||
|
upload_date_str = self._search_regex(
|
||||||
|
r'vp-layer-info_date">(?P<date>.*?)<\/span>',
|
||||||
|
webpage, 'upload date', group='date')
|
||||||
|
if upload_date_str:
|
||||||
|
if upload_date is None:
|
||||||
|
upload_date_time = None
|
||||||
|
upload_date_str = upload_date_str.replace('Sept', 'Sep')
|
||||||
|
try:
|
||||||
|
upload_date_time = datetime.strptime(upload_date_str, '%d %b %Y')
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
try:
|
||||||
|
upload_date_time = datetime.strptime(upload_date_str, '%d %b')
|
||||||
|
upload_date_time = upload_date_time.replace(year=datetime.utcnow().year)
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
try:
|
||||||
|
upload_date_time = datetime.strptime(upload_date_str, '%d %B')
|
||||||
|
upload_date_time = upload_date_time.replace(year=datetime.utcnow().year)
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
try:
|
||||||
|
upload_date_time = self._extract_hours_and_minutes(upload_date_str)
|
||||||
|
upload_date_time = upload_date_time.replace(year=datetime.utcnow().year)
|
||||||
|
upload_date_time = upload_date_time.replace(day=datetime.utcnow().day)
|
||||||
|
if upload_date_str.find('yesterday') == 0:
|
||||||
|
upload_date_time = upload_date_time - timedelta(days=1)
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
|
||||||
|
if upload_date_time:
|
||||||
|
upload_date = upload_date_time.strftime('%Y%m%d')
|
||||||
|
else:
|
||||||
|
upload_date_time = datetime.strptime(upload_date, '%Y%m%d')
|
||||||
|
upload_date_hours_and_minutes = self._extract_hours_and_minutes(upload_date_str)
|
||||||
|
if upload_date_hours_and_minutes:
|
||||||
|
upload_date_time = upload_date_time + timedelta(
|
||||||
|
hours=upload_date_hours_and_minutes.hour - 3, minutes=upload_date_hours_and_minutes.minute
|
||||||
|
)
|
||||||
|
timestamp = unified_timestamp(upload_date_time.isoformat())
|
||||||
|
if upload_date_time:
|
||||||
|
upload_date = upload_date_time.strftime('%Y%m%d')
|
||||||
|
|
||||||
|
return upload_date, timestamp
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def _extract_hours_and_minutes(upload_date_str):
|
||||||
|
try:
|
||||||
|
if upload_date_str.find(':') >= 0:
|
||||||
|
hour_and_minutes = upload_date_str.split(' ')[-1]
|
||||||
|
else:
|
||||||
|
hour_and_minutes = upload_date_str
|
||||||
|
upload_date_time = datetime.strptime(hour_and_minutes, '%H:%M')
|
||||||
|
return upload_date_time
|
||||||
|
except:
|
||||||
|
pass
|
Loading…
x
Reference in New Issue
Block a user