]> Raphaƫl G. Git Repositories - youtubedl/blobdiff - youtube_dl/extractor/xboxclips.py
debian/control: Drop really ancient Recommends to have ffprobe.
[youtubedl] / youtube_dl / extractor / xboxclips.py
index a9aa72e73cc67fc380a38a56c62b967e7db01e08..236ff403bd08f941a2eb023cd41c3bb21c49d4c3 100644 (file)
@@ -1,46 +1,42 @@
 # encoding: utf-8
 from __future__ import unicode_literals
 
 # encoding: utf-8
 from __future__ import unicode_literals
 
-import re
-
 from .common import InfoExtractor
 from ..utils import (
 from .common import InfoExtractor
 from ..utils import (
-    parse_iso8601,
-    float_or_none,
     int_or_none,
     int_or_none,
+    parse_filesize,
+    unified_strdate,
 )
 
 
 class XboxClipsIE(InfoExtractor):
 )
 
 
 class XboxClipsIE(InfoExtractor):
-    _VALID_URL = r'https?://(?:www\.)?xboxclips\.com/video\.php\?.*vid=(?P<id>[\w-]{36})'
+    _VALID_URL = r'https?://(?:www\.)?xboxclips\.com/(?:video\.php\?.*vid=|[^/]+/)(?P<id>[\w-]{36})'
     _TEST = {
         'url': 'https://xboxclips.com/video.php?uid=2533274823424419&gamertag=Iabdulelah&vid=074a69a9-5faf-46aa-b93b-9909c1720325',
         'md5': 'fbe1ec805e920aeb8eced3c3e657df5d',
         'info_dict': {
             'id': '074a69a9-5faf-46aa-b93b-9909c1720325',
             'ext': 'mp4',
     _TEST = {
         'url': 'https://xboxclips.com/video.php?uid=2533274823424419&gamertag=Iabdulelah&vid=074a69a9-5faf-46aa-b93b-9909c1720325',
         'md5': 'fbe1ec805e920aeb8eced3c3e657df5d',
         'info_dict': {
             'id': '074a69a9-5faf-46aa-b93b-9909c1720325',
             'ext': 'mp4',
-            'title': 'Iabdulelah playing Upload Studio',
-            'filesize_approx': 28101836.8,
-            'timestamp': 1407388500,
+            'title': 'Iabdulelah playing Titanfall',
+            'filesize_approx': 26800000,
             'upload_date': '20140807',
             'duration': 56,
         }
     }
 
     def _real_extract(self, url):
             'upload_date': '20140807',
             'duration': 56,
         }
     }
 
     def _real_extract(self, url):
-        mobj = re.match(self._VALID_URL, url)
-        video_id = mobj.group('id')
+        video_id = self._match_id(url)
 
         webpage = self._download_webpage(url, video_id)
 
         video_url = self._html_search_regex(
 
         webpage = self._download_webpage(url, video_id)
 
         video_url = self._html_search_regex(
-            r'>Link: <a href="([^"]+)">', webpage, 'video URL')
+            r'>(?:Link|Download): <a[^>]+href="([^"]+)"', webpage, 'video URL')
         title = self._html_search_regex(
             r'<title>XboxClips \| ([^<]+)</title>', webpage, 'title')
         title = self._html_search_regex(
             r'<title>XboxClips \| ([^<]+)</title>', webpage, 'title')
-        timestamp = parse_iso8601(self._html_search_regex(
+        upload_date = unified_strdate(self._html_search_regex(
             r'>Recorded: ([^<]+)<', webpage, 'upload date', fatal=False))
             r'>Recorded: ([^<]+)<', webpage, 'upload date', fatal=False))
-        filesize = float_or_none(self._html_search_regex(
-            r'>Size: ([\d\.]+)MB<', webpage, 'file size', fatal=False), invscale=1024 * 1024)
+        filesize = parse_filesize(self._html_search_regex(
+            r'>Size: ([^<]+)<', webpage, 'file size', fatal=False))
         duration = int_or_none(self._html_search_regex(
             r'>Duration: (\d+) Seconds<', webpage, 'duration', fatal=False))
         view_count = int_or_none(self._html_search_regex(
         duration = int_or_none(self._html_search_regex(
             r'>Duration: (\d+) Seconds<', webpage, 'duration', fatal=False))
         view_count = int_or_none(self._html_search_regex(
@@ -50,7 +46,7 @@ class XboxClipsIE(InfoExtractor):
             'id': video_id,
             'url': video_url,
             'title': title,
             'id': video_id,
             'url': video_url,
             'title': title,
-            'timestamp': timestamp,
+            'upload_date': upload_date,
             'filesize_approx': filesize,
             'duration': duration,
             'view_count': view_count,
             'filesize_approx': filesize,
             'duration': duration,
             'view_count': view_count,