]>
Raphaƫl G. Git Repositories - youtubedl/blob - youtube_dl/extractor/collegehumor.py
   1 from __future__ 
import unicode_literals
 
   6 from .common 
import InfoExtractor
 
   7 from ..utils 
import int_or_none
 
  10 class CollegeHumorIE(InfoExtractor
): 
  11     _VALID_URL 
= r
'^(?:https?://)?(?:www\.)?collegehumor\.com/(video|embed|e)/(?P<videoid>[0-9]+)/?(?P<shorttitle>.*)$' 
  14         'url': 'http://www.collegehumor.com/video/6902724/comic-con-cosplay-catastrophe', 
  15         'md5': 'dcc0f5c1c8be98dc33889a191f4c26bd', 
  19             'title': 'Comic-Con Cosplay Catastrophe', 
  20             'description': "Fans get creative this year at San Diego.  Too creative.  And yes, that's really Joss Whedon.", 
  26         'url': 'http://www.collegehumor.com/video/3505939/font-conference', 
  27         'md5': '72fa701d8ef38664a4dbb9e2ab721816', 
  31             'title': 'Font Conference', 
  32             'description': "This video wasn't long enough, so we made it double-spaced.", 
  37     # embedded youtube video 
  39         'url': 'http://www.collegehumor.com/embed/6950306', 
  43             'title': 'Young Americans Think President John F. Kennedy Died THIS MORNING IN A CAR ACCIDENT!!!', 
  44             'uploader': 'Mark Dice', 
  45             'uploader_id': 'MarkDice', 
  46             'description': 'md5:62c3dab9351fac7bb44b53b69511d87f', 
  47             'upload_date': '20140127', 
  50             'skip_download': True, 
  52         'add_ie': ['Youtube'], 
  56     def _real_extract(self
, url
): 
  57         mobj 
= re
.match(self
._VALID
_URL
, url
) 
  58         video_id 
= mobj
.group('videoid') 
  60         jsonUrl 
= 'http://www.collegehumor.com/moogaloop/video/' + video_id 
+ '.json' 
  61         data 
= json
.loads(self
._download
_webpage
( 
  62             jsonUrl
, video_id
, 'Downloading info JSON')) 
  64         if vdata
.get('youtubeId') is not None: 
  67                 'url': vdata
['youtubeId'], 
  71         AGE_LIMITS 
= {'nc17': 18, 'r': 18, 'pg13': 13, 'pg': 10, 'g': 0} 
  72         rating 
= vdata
.get('rating') 
  74             age_limit 
= AGE_LIMITS
.get(rating
.lower()) 
  76             age_limit 
= None  # None = No idea 
  78         PREFS 
= {'high_quality': 2, 'low_quality': 0} 
  80         for format_key 
in ('mp4', 'webm'): 
  81             for qname
, qurl 
in vdata
.get(format_key
, {}).items(): 
  83                     'format_id': format_key 
+ '_' + qname
, 
  86                     'preference': PREFS
.get(qname
), 
  88         self
._sort
_formats
(formats
) 
  90         duration 
= int_or_none(vdata
.get('duration'), 1000) 
  91         like_count 
= int_or_none(vdata
.get('likes')) 
  95             'title': vdata
['title'], 
  96             'description': vdata
.get('description'), 
  97             'thumbnail': vdata
.get('thumbnail'), 
  99             'age_limit': age_limit
, 
 100             'duration': duration
, 
 101             'like_count': like_count
,