1 from __future__ 
import unicode_literals
 
   5 from .common 
import InfoExtractor
 
   7     compat_urllib_parse_unquote
, 
   8     compat_urllib_parse_unquote_plus
, 
  16 class PlayvidIE(InfoExtractor
): 
  17     _VALID_URL 
= r
'https?://(?:www\.)?playvid\.com/watch(\?v=|/)(?P<id>.+?)(?:#|$)' 
  19         'url': 'http://www.playvid.com/watch/RnmBNgtrrJu', 
  20         'md5': 'ffa2f6b2119af359f544388d8c01eb6c', 
  24             'title': 'md5:9256d01c6317e3f703848b5906880dc8', 
  28         'skip': 'Video removed due to ToS', 
  30         'url': 'http://www.playvid.com/watch/hwb0GpNkzgH', 
  31         'md5': '39d49df503ad7b8f23a4432cbf046477', 
  35             'title': 'Ellen Euro Cutie Blond Takes a Sexy Survey Get Facial in The Park', 
  37             'thumbnail': r
're:^https?://.*\.jpg$', 
  41     def _real_extract(self
, url
): 
  42         video_id 
= self
._match
_id
(url
) 
  43         webpage 
= self
._download
_webpage
(url
, video_id
) 
  46             r
'<div class="block-error">\s*<div class="heading">\s*<div>(?P<msg>.+?)</div>\s*</div>', webpage
) 
  48             raise ExtractorError(clean_html(m_error
.group('msg')), expected
=True) 
  52         video_thumbnail 
= None 
  55         # most of the information is stored in the flashvars 
  56         flashvars 
= self
._html
_search
_regex
( 
  57             r
'flashvars="(.+?)"', webpage
, 'flashvars') 
  59         infos 
= compat_urllib_parse_unquote(flashvars
).split(r
'&') 
  61             videovars_match 
= re
.match(r
'^video_vars\[(.+?)\]=(.+?)$', info
) 
  63                 key 
= videovars_match
.group(1) 
  64                 val 
= videovars_match
.group(2) 
  67                     video_title 
= compat_urllib_parse_unquote_plus(val
) 
  73                 if key 
== 'big_thumb': 
  76                 videourl_match 
= re
.match( 
  77                     r
'^video_urls\]\[(?P<resolution>[0-9]+)p', key
) 
  79                     height 
= int(videourl_match
.group('resolution')) 
  84         self
._sort
_formats
(formats
) 
  86         # Extract title - should be in the flashvars; if not, look elsewhere 
  87         if video_title 
is None: 
  88             video_title 
= self
._html
_search
_regex
( 
  89                 r
'<title>(.*?)</title', webpage
, 'title') 
  95             'thumbnail': video_thumbnail
,