]>
Raphaƫl G. Git Repositories - youtubedl/blob - youtube_dl/extractor/americastestkitchen.py
   2 from __future__ 
import unicode_literals
 
   4 from .common 
import InfoExtractor
 
  13 class AmericasTestKitchenIE(InfoExtractor
): 
  14     _VALID_URL 
= r
'https?://(?:www\.)?americastestkitchen\.com/(?:episode|videos)/(?P<id>\d+)' 
  16         'url': 'https://www.americastestkitchen.com/episode/548-summer-dinner-party', 
  17         'md5': 'b861c3e365ac38ad319cfd509c30577f', 
  20             'title': 'Summer Dinner Party', 
  22             'description': 'md5:858d986e73a4826979b6a5d9f8f6a1ec', 
  23             'thumbnail': r
're:^https?://.*\.jpg', 
  24             'timestamp': 1497285541, 
  25             'upload_date': '20170612', 
  26             'uploader_id': 'roger.metcalf@americastestkitchen.com', 
  27             'release_date': '20170617', 
  28             'series': "America's Test Kitchen", 
  30             'episode': 'Summer Dinner Party', 
  34             'skip_download': True, 
  37         'url': 'https://www.americastestkitchen.com/videos/3420-pan-seared-salmon', 
  38         'only_matching': True, 
  41     def _real_extract(self
, url
): 
  42         video_id 
= self
._match
_id
(url
) 
  44         webpage 
= self
._download
_webpage
(url
, video_id
) 
  46         video_data 
= self
._parse
_json
( 
  48                 r
'window\.__INITIAL_STATE__\s*=\s*({.+?})\s*;\s*</script>', 
  49                 webpage
, 'initial context'), 
  54             (lambda x
: x
['episodeDetail']['content']['data'], 
  55              lambda x
: x
['videoDetail']['content']['data']), dict) 
  56         ep_meta 
= ep_data
.get('full_video', {}) 
  58         zype_id 
= ep_meta
.get('zype_id') 
  60             embed_url 
= 'https://player.zype.com/embed/%s.js?api_key=jZ9GUhRmxcPvX7M3SlfejB6Hle9jyHTdk2jVxG7wOHPLODgncEKVdPYBhuz9iWXQ' % zype_id
 
  63             partner_id 
= self
._search
_regex
( 
  64                 r
'src=["\'](?
:https?
:)?
//(?
:[^
/]+\
.)kaltura\
.com
/(?
:[^
/]+/)*(?
:p|partner_id
)/(\d
+)', 
  65                 webpage, 'kaltura partner 
id') 
  66             external_id = ep_data.get('external_id
') or ep_meta['external_id
'] 
  67             embed_url = 'kaltura
:%s:%s' % (partner_id, external_id) 
  70         title = ep_data.get('title
') or ep_meta.get('title
') 
  71         description = clean_html(ep_meta.get('episode_description
') or ep_data.get( 
  72             'description
') or ep_meta.get('description
')) 
  73         thumbnail = try_get(ep_meta, lambda x: x['photo
']['image_url
']) 
  74         release_date = unified_strdate(ep_data.get('aired_at
')) 
  76         season_number = int_or_none(ep_meta.get('season_number
')) 
  77         episode = ep_meta.get('title
') 
  78         episode_number = int_or_none(ep_meta.get('episode_number
')) 
  81             '_type
': 'url_transparent
', 
  85             'description
': description, 
  86             'thumbnail
': thumbnail, 
  87             'release_date
': release_date, 
  88             'series
': "America's Test Kitchen
", 
  89             'season_number': season_number, 
  91             'episode_number': episode_number,