-        mobj = re.match(self._VALID_URL, url)
-        video_id = mobj.group('videoid')
-        url = 'http://www.' + mobj.group('url')
-
-        req = compat_urllib_request.Request(url)
-        req.add_header('Cookie', 'age_verified=1')
-        webpage = self._download_webpage(req, video_id)
-
-        video_title = self._html_search_regex(r'<h1 [^>]*?title="([^"]+)"[^>]*>\1<', webpage, u'title')
-        uploader = self._html_search_regex(r'>Posted by:(?=<)(?:\s|<[^>]*>)*(.+?)\|', webpage, u'uploader', fatal=False)
-        video_url = compat_urllib_parse.unquote(self._html_search_regex(r'video_url=(.+?)&', webpage, u'video_url'))
-        path = compat_urllib_parse_urlparse(video_url).path
-        extension = os.path.splitext(path)[1][1:]
-        format = path.split('/')[5].split('_')[:2]
-        format = "-".join(format)
-
-        return {
-            'id': video_id,
-            'title': video_title,
+        webpage, info = self._extract_info(url)
+
+        if not info['title']:
+            info['title'] = self._search_regex(
+                r'<h1[^>]+title="([^"]+)"[^>]*>', webpage, 'title')
+
+        uploader = self._html_search_regex(
+            r'Uploaded by:\s*</[^>]+>\s*<a[^>]+>(.+?)</a>',
+            webpage, 'uploader', fatal=False)
+        view_count = str_to_int(self._search_regex(
+            r'Views:\s*</[^>]+>\s*<[^>]+>([\d,\.]+)</',
+            webpage, 'view count', fatal=False))
+
+        info.update({