aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPhilipp Hagemeister <phihag@phihag.de>2014-03-24 01:40:09 +0100
committerPhilipp Hagemeister <phihag@phihag.de>2014-03-24 01:40:09 +0100
commit912b38b428e882c1ab79b6537b94b30e3e3c1def (patch)
treea1ce210e3af2767d3544d0c273437e3968366886
parent51fb2e98d2c8987f52abd57d77afc5c2972d203a (diff)
downloadyoutube-dl-912b38b428e882c1ab79b6537b94b30e3e3c1def.tar.xz
[instagram] Fix info_dict key name
-rw-r--r--test/test_playlists.py2
-rw-r--r--test/test_utils.py6
-rw-r--r--youtube_dl/extractor/__init__.py1
-rw-r--r--youtube_dl/extractor/instagram.py2
-rw-r--r--youtube_dl/utils.py36
5 files changed, 41 insertions, 6 deletions
diff --git a/test/test_playlists.py b/test/test_playlists.py
index b1e38e7e9..4af38632e 100644
--- a/test/test_playlists.py
+++ b/test/test_playlists.py
@@ -309,6 +309,8 @@ class TestPlaylists(unittest.TestCase):
'thumbnail': 're:^https?://.*\.jpg',
'uploader': 'Porsche',
'uploader_id': 'porsche',
+ 'timestamp': 1387486713,
+ 'upload_date': '20131219',
}
expect_info_dict(self, EXPECTED, test_video)
diff --git a/test/test_utils.py b/test/test_utils.py
index 7ee74e36c..e920d661f 100644
--- a/test/test_utils.py
+++ b/test/test_utils.py
@@ -35,6 +35,7 @@ from youtube_dl.utils import (
url_basename,
urlencode_postdata,
xpath_with_ns,
+ parse_iso8601,
)
if sys.version_info < (3, 0):
@@ -266,5 +267,10 @@ class TestUtil(unittest.TestCase):
data = urlencode_postdata({'username': 'foo@bar.com', 'password': '1234'})
self.assertTrue(isinstance(data, bytes))
+ def test_parse_iso8601(self):
+ self.assertEqual(parse_iso8601('2014-03-23T23:04:26+0100'), 1395612266)
+ self.assertEqual(parse_iso8601('2014-03-23T22:04:26+0000'), 1395612266)
+ self.assertEqual(parse_iso8601('2014-03-23T22:04:26Z'), 1395612266)
+
if __name__ == '__main__':
unittest.main()
diff --git a/youtube_dl/extractor/__init__.py b/youtube_dl/extractor/__init__.py
index 3e728e876..245860140 100644
--- a/youtube_dl/extractor/__init__.py
+++ b/youtube_dl/extractor/__init__.py
@@ -195,6 +195,7 @@ from .ro220 import Ro220IE
from .rottentomatoes import RottenTomatoesIE
from .roxwel import RoxwelIE
from .rtlnow import RTLnowIE
+from .rts import RTSIE
from .rutube import (
RutubeIE,
RutubeChannelIE,
diff --git a/youtube_dl/extractor/instagram.py b/youtube_dl/extractor/instagram.py
index 994f0e4ae..b5372bf7a 100644
--- a/youtube_dl/extractor/instagram.py
+++ b/youtube_dl/extractor/instagram.py
@@ -89,7 +89,7 @@ class InstagramUserIE(InfoExtractor):
'uploader': user.get('full_name'),
'uploader_id': user.get('username'),
'like_count': like_count,
- 'upload_timestamp': int_or_none(it.get('created_time')),
+ 'timestamp': int_or_none(it.get('created_time')),
})
if not page['items']:
diff --git a/youtube_dl/utils.py b/youtube_dl/utils.py
index 8b359cb77..68d590ba2 100644
--- a/youtube_dl/utils.py
+++ b/youtube_dl/utils.py
@@ -1,6 +1,7 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
+import calendar
import contextlib
import ctypes
import datetime
@@ -501,13 +502,13 @@ def orderedSet(iterable):
res.append(el)
return res
+
def unescapeHTML(s):
- """
- @param s a string
- """
- assert type(s) == type(u'')
+ if s is None:
+ return None
+ assert type(s) == compat_str
- result = re.sub(u'(?u)&(.+?);', htmlentity_transform, s)
+ result = re.sub(r'(?u)&(.+?);', htmlentity_transform, s)
return result
@@ -761,6 +762,31 @@ class YoutubeDLHandler(compat_urllib_request.HTTPHandler):
https_response = http_response
+def parse_iso8601(date_str):
+ """ Return a UNIX timestamp from the given date """
+
+ if date_str is None:
+ return None
+
+ m = re.search(
+ r'Z$| ?(?P<sign>\+|-)(?P<hours>[0-9]{2}):?(?P<minutes>[0-9]{2})$',
+ date_str)
+ if not m:
+ timezone = datetime.timedelta()
+ else:
+ date_str = date_str[:-len(m.group(0))]
+ if not m.group('sign'):
+ timezone = datetime.timedelta()
+ else:
+ sign = 1 if m.group('sign') == '+' else -1
+ timezone = datetime.timedelta(
+ hours=sign * int(m.group('hours')),
+ minutes=sign * int(m.group('minutes')))
+
+ dt = datetime.datetime.strptime(date_str, '%Y-%m-%dT%H:%M:%S') - timezone
+ return calendar.timegm(dt.timetuple())
+
+
def unified_strdate(date_str):
"""Return a string with the date in the format YYYYMMDD"""