[Lecture2Go] Add new extractor
[youtube-dl] / youtube_dl / extractor / sockshare.py
index cbf2d7abefad8d6d594a33c6dcaa214031cd8d3e..b5fa6f1da203c993873622a9ee80c923300eebb2 100644 (file)
@@ -1,13 +1,16 @@
 # coding: utf-8
 from __future__ import unicode_literals
 
-from ..utils import (
-    ExtractorError,
+import re
+
+from ..compat import (
     compat_urllib_parse,
     compat_urllib_request,
+)
+from ..utils import (
     determine_ext,
+    ExtractorError,
 )
-import re
 
 from .common import InfoExtractor
 
@@ -22,19 +25,16 @@ class SockshareIE(InfoExtractor):
             'id': '437BE28B89D799D7',
             'title': 'big_buck_bunny_720p_surround.avi',
             'ext': 'avi',
-            'thumbnail': 're:^http://.*\.jpg$',
         }
     }
 
     def _real_extract(self, url):
-        mobj = re.match(self._VALID_URL, url)
-        video_id = mobj.group('id')
-
+        video_id = self._match_id(url)
         url = 'http://sockshare.com/file/%s' % video_id
         webpage = self._download_webpage(url, video_id)
 
         if re.search(self._FILE_DELETED_REGEX, webpage) is not None:
-            raise ExtractorError(u'Video %s does not exist' % video_id,
+            raise ExtractorError('Video %s does not exist' % video_id,
                                  expected=True)
 
         confirm_hash = self._html_search_regex(r'''(?x)<input\s+
@@ -44,7 +44,7 @@ class SockshareIE(InfoExtractor):
             ''', webpage, 'hash')
 
         fields = {
-            "hash": confirm_hash,
+            "hash": confirm_hash.encode('utf-8'),
             "confirm": "Continue as Free User"
         }
 
@@ -54,19 +54,25 @@ class SockshareIE(InfoExtractor):
         req.add_header('Host', 'www.sockshare.com')
         req.add_header('Content-type', 'application/x-www-form-urlencoded')
 
-        webpage = self._download_webpage(req, video_id, 'Downloading video page')
+        webpage = self._download_webpage(
+            req, video_id, 'Downloading video page')
 
-        video_url = self._html_search_regex(r'<a href="([^"]*)".+class="download_file_link"', webpage, 'file url')
+        video_url = self._html_search_regex(
+            r'<a href="([^"]*)".+class="download_file_link"',
+            webpage, 'file url')
         video_url = "http://www.sockshare.com" + video_url
-        title = self._html_search_regex(r'<h1>(.+)<strong>', webpage, 'title')
-        thumbnail = self._html_search_regex(r'<img\ssrc="([^"]*)".+name="bg"',
-                                            webpage, 'thumbnail')
-        ext = determine_ext(title)
+        title = self._html_search_regex((
+            r'<h1>(.+)<strong>',
+            r'var name = "([^"]+)";'),
+            webpage, 'title', default=None)
+        thumbnail = self._html_search_regex(
+            r'<img\s+src="([^"]*)".+?name="bg"',
+            webpage, 'thumbnail', default=None)
 
         formats = [{
             'format_id': 'sd',
             'url': video_url,
-            'ext': ext,
+            'ext': determine_ext(title),
         }]
 
         return {