Switch codebase to use sanitized_Request instead of
[youtube-dl] / youtube_dl / extractor / noco.py
index e44ece5a2823fc9418ce6c47876c64bd00e1e6f3..76bd21e6de74642362043183ab3288797e16ae46 100644 (file)
@@ -9,12 +9,14 @@ from .common import InfoExtractor
 from ..compat import (
     compat_str,
     compat_urllib_parse,
-    compat_urllib_request,
 )
 from ..utils import (
     clean_html,
     ExtractorError,
-    unified_strdate,
+    int_or_none,
+    float_or_none,
+    parse_iso8601,
+    sanitized_Request,
 )
 
 
@@ -48,7 +50,7 @@ class NocoIE(InfoExtractor):
                 'id': '12610',
                 'ext': 'mp4',
                 'title': 'The Guild #1 - Wake-Up Call',
-                'description': '',
+                'timestamp': 1403863200,
                 'upload_date': '20140627',
                 'uploader': 'LBL42',
                 'uploader_id': 'LBL',
@@ -72,7 +74,7 @@ class NocoIE(InfoExtractor):
             'username': username,
             'password': password,
         }
-        request = compat_urllib_request.Request(self._LOGIN_URL, compat_urllib_parse.urlencode(login_form))
+        request = sanitized_Request(self._LOGIN_URL, compat_urllib_parse.urlencode(login_form))
         request.add_header('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8')
 
         login = self._download_json(request, None, 'Logging in as %s' % username)
@@ -151,22 +153,26 @@ class NocoIE(InfoExtractor):
                     formats.append({
                         'url': file_url,
                         'format_id': format_id_extended,
-                        'width': fmt['res_width'],
-                        'height': fmt['res_lines'],
-                        'abr': fmt['audiobitrate'],
-                        'vbr': fmt['videobitrate'],
-                        'filesize': fmt['filesize'],
-                        'format_note': qualities[format_id]['quality_name'],
-                        'quality': qualities[format_id]['priority'],
+                        'width': int_or_none(fmt.get('res_width')),
+                        'height': int_or_none(fmt.get('res_lines')),
+                        'abr': int_or_none(fmt.get('audiobitrate')),
+                        'vbr': int_or_none(fmt.get('videobitrate')),
+                        'filesize': int_or_none(fmt.get('filesize')),
+                        'format_note': qualities[format_id].get('quality_name'),
+                        'quality': qualities[format_id].get('priority'),
                         'preference': preference,
                     })
 
         self._sort_formats(formats)
 
-        upload_date = unified_strdate(show['online_date_start_utc'])
-        uploader = show['partner_name']
-        uploader_id = show['partner_key']
-        duration = show['duration_ms'] / 1000.0
+        timestamp = parse_iso8601(show.get('online_date_start_utc'), ' ')
+
+        if timestamp is not None and timestamp < 0:
+            timestamp = None
+
+        uploader = show.get('partner_name')
+        uploader_id = show.get('partner_key')
+        duration = float_or_none(show.get('duration_ms'), 1000)
 
         thumbnails = []
         for thumbnail_key, thumbnail_url in show.items():
@@ -189,7 +195,7 @@ class NocoIE(InfoExtractor):
         if episode_number:
             title += ' #' + compat_str(episode_number)
         if episode:
-            title += ' - ' + episode
+            title += ' - ' + compat_str(episode)
 
         description = show.get('show_resume') or show.get('family_resume')
 
@@ -198,7 +204,7 @@ class NocoIE(InfoExtractor):
             'title': title,
             'description': description,
             'thumbnails': thumbnails,
-            'upload_date': upload_date,
+            'timestamp': timestamp,
             'uploader': uploader,
             'uploader_id': uploader_id,
             'duration': duration,