2 from __future__ import unicode_literals
4 from .common import InfoExtractor
5 from ..compat import compat_str
6 from ..utils import try_get
9 class ThisOldHouseIE(InfoExtractor):
10 _VALID_URL = r'https?://(?:www\.)?thisoldhouse\.com/(?:watch|how-to|tv-episode)/(?P<id>[^/?#]+)'
12 'url': 'https://www.thisoldhouse.com/how-to/how-to-build-storage-bench',
13 'md5': '568acf9ca25a639f0c4ff905826b662f',
17 'title': 'How to Build a Storage Bench',
18 'description': 'In the workshop, Tom Silva and Kevin O\'Connor build a storage bench for an entryway.',
19 'timestamp': 1442548800,
20 'upload_date': '20150918',
23 'url': 'https://www.thisoldhouse.com/watch/arlington-arts-crafts-arts-and-crafts-class-begins',
24 'only_matching': True,
26 'url': 'https://www.thisoldhouse.com/tv-episode/ask-toh-shelf-rough-electric',
27 'only_matching': True,
30 def _real_extract(self, url):
31 display_id = self._match_id(url)
32 webpage = self._download_webpage(url, display_id)
33 video_id = self._search_regex(
34 (r'data-mid=(["\'])(?P<id>(?:(?!\1).)+)\1',
35 r'id=(["\'])inline-video-player-(?P<id>(?:(?!\1).)+)\1'),
36 webpage, 'video id', default=None, group='id')
38 drupal_settings = self._parse_json(self._search_regex(
39 r'jQuery\.extend\(Drupal\.settings\s*,\s*({.+?})\);',
40 webpage, 'drupal settings'), display_id)
42 drupal_settings, lambda x: x['jwplatform']['video_id'],
43 compat_str) or list(drupal_settings['comScore'])[0]
44 return self.url_result('jwplatform:' + video_id, 'JWPlatform', video_id)