]> jfr.im git - yt-dlp.git/blame - youtube_dl/extractor/howcast.py
[/__init__] Add another cute search example
[yt-dlp.git] / youtube_dl / extractor / howcast.py
CommitLineData
fde56d2f
JMF
1from __future__ import unicode_literals
2
e17d368a
PH
3import re
4
5from .common import InfoExtractor
6
7
8class HowcastIE(InfoExtractor):
fde56d2f 9 _VALID_URL = r'https?://(?:www\.)?howcast\.com/videos/(?P<id>\d+)'
6f5ac90c 10 _TEST = {
fde56d2f
JMF
11 'url': 'http://www.howcast.com/videos/390161-How-to-Tie-a-Square-Knot-Properly',
12 'md5': '8b743df908c42f60cf6496586c7f12c3',
13 'info_dict': {
14 'id': '390161',
15 'ext': 'mp4',
5f6a1245 16 'description': 'The square knot, also known as the reef knot, is one of the oldest, most basic knots to tie, and can be used in many different ways. Here\'s the proper way to tie a square knot.',
fde56d2f 17 'title': 'How to Tie a Square Knot Properly',
6f5ac90c
PH
18 }
19 }
e17d368a
PH
20
21 def _real_extract(self, url):
22 mobj = re.match(self._VALID_URL, url)
23
24 video_id = mobj.group('id')
6a2449df 25 webpage = self._download_webpage(url, video_id)
e17d368a
PH
26
27 self.report_extraction(video_id)
28
29 video_url = self._search_regex(r'\'?file\'?: "(http://mobile-media\.howcast\.com/[0-9]+\.mp4)',
9e1a5b84 30 webpage, 'video URL')
e17d368a
PH
31
32 video_description = self._html_search_regex(r'<meta content=(?:"([^"]+)"|\'([^\']+)\') name=\'description\'',
9e1a5b84 33 webpage, 'description', fatal=False)
e17d368a 34
fde56d2f
JMF
35 return {
36 'id': video_id,
37 'url': video_url,
38 'title': self._og_search_title(webpage),
e17d368a 39 'description': video_description,
fde56d2f
JMF
40 'thumbnail': self._og_search_thumbnail(webpage),
41 }