]>
Raphaƫl G. Git Repositories - youtubedl/blob - youtube_dl/extractor/cartoonnetwork.py
   2 from __future__ 
import unicode_literals
 
   4 from .turner 
import TurnerBaseIE
 
   5 from ..utils 
import int_or_none
 
   8 class CartoonNetworkIE(TurnerBaseIE
): 
   9     _VALID_URL 
= r
'https?://(?:www\.)?cartoonnetwork\.com/video/(?:[^/]+/)+(?P<id>[^/?#]+)-(?:clip|episode)\.html' 
  11         'url': 'https://www.cartoonnetwork.com/video/ben-10/how-to-draw-upgrade-episode.html', 
  13             'id': '6e3375097f63874ebccec7ef677c1c3845fa850e', 
  15             'title': 'How to Draw Upgrade', 
  16             'description': 'md5:2061d83776db7e8be4879684eefe8c0f', 
  20             'skip_download': True, 
  24     def _real_extract(self
, url
): 
  25         display_id 
= self
._match
_id
(url
) 
  26         webpage 
= self
._download
_webpage
(url
, display_id
) 
  28         def find_field(global_re
, name
, content_re
=None, value_re
='[^"]+', fatal
=False): 
  31                 metadata_re 
= r
'|video_metadata\.content_' + content_re
 
  32             return self
._search
_regex
( 
  33                 r
'(?:_cnglobal\.currentVideo\.%s%s)\s*=\s*"(%s)";' % (global_re
, metadata_re
, value_re
), 
  34                 webpage
, name
, fatal
=fatal
) 
  36         media_id 
= find_field('mediaId', 'media id', 'id', '[0-9a-f]{40}', True) 
  37         title 
= find_field('episodeTitle', 'title', '(?:episodeName|name)', fatal
=True) 
  39         info 
= self
._extract
_ngtv
_info
( 
  40             media_id
, {'networkId': 'cartoonnetwork'}, { 
  42                 'site_name': 'CartoonNetwork', 
  43                 'auth_required': find_field('authType', 'auth type') != 'unauth', 
  47             'propertyName', 'series', 'showName') or self
._html
_search
_meta
('partOfSeries', webpage
) 
  50             'display_id': display_id
, 
  52             'description': self
._html
_search
_meta
('description', webpage
), 
  57         for field 
in ('season', 'episode'): 
  58             field_name 
= field 
+ 'Number' 
  59             info
[field 
+ '_number'] = int_or_none(find_field( 
  60                 field_name
, field 
+ ' number', value_re
=r
'\d+') or self
._html
_search
_meta
(field_name
, webpage
))