]>
Raphaël G. Git Repositories - youtubedl/blob - youtube_dl/extractor/lifenews.py
2 from __future__
import unicode_literals
6 from .common
import InfoExtractor
14 class LifeNewsIE(InfoExtractor
):
16 IE_DESC
= 'LIFE | NEWS'
17 _VALID_URL
= r
'http://lifenews\.ru/(?:mobile/)?news/(?P<id>\d+)'
20 'url': 'http://lifenews.ru/news/126342',
21 'md5': 'e1b50a5c5fb98a6a544250f2e0db570a',
25 'title': 'МВД разыскивает мужчин, оставивших в IKEA сумку с автоматом',
26 'description': 'Камеры наблюдения гипермаркета зафиксировали троих мужчин, спрятавших оружейный арсенал в камере хранения.',
27 'thumbnail': 'http://lifenews.ru/static/posts/2014/1/126342/.video.jpg',
28 'upload_date': '20140130',
32 def _real_extract(self
, url
):
33 mobj
= re
.match(self
._VALID
_URL
, url
)
34 video_id
= mobj
.group('id')
36 webpage
= self
._download
_webpage
('http://lifenews.ru/news/%s' % video_id
, video_id
, 'Downloading page')
38 videos
= re
.findall(r
'<video.*?poster="(?P<poster>[^"]+)".*?src="(?P<video>[^"]+)".*?></video>', webpage
)
40 raise ExtractorError('No media links available for %s' % video_id
)
42 title
= self
._og
_search
_title
(webpage
)
43 TITLE_SUFFIX
= ' - Первый по срочным новостям — LIFE | NEWS'
44 if title
.endswith(TITLE_SUFFIX
):
45 title
= title
[:-len(TITLE_SUFFIX
)]
47 description
= self
._og
_search
_description
(webpage
)
49 view_count
= self
._html
_search
_regex
(
50 r
'<div class=\'views
\'>(\d
+)</div
>', webpage, 'view count
', fatal=False)
51 comment_count = self._html_search_regex(
52 r'<div
class=\'comments
\'>\s
*<span
class=\'counter
\'>(\d
+)</span
>', webpage, 'comment count
', fatal=False)
54 upload_date = self._html_search_regex(
55 r'<time datetime
=\'([^
\']+)\'>', webpage, 'upload date
',fatal=False)
56 if upload_date is not None:
57 upload_date = unified_strdate(upload_date)
59 def make_entry(video_id, media, video_number=None):
63 'thumbnail
': media[0],
64 'title
': title if video_number is None else '%s-video
%s' % (title, video_number),
65 'description
': description,
66 'view_count
': int_or_none(view_count),
67 'comment_count
': int_or_none(comment_count),
68 'upload_date
': upload_date,
72 return make_entry(video_id, videos[0])
74 return [make_entry(video_id, media, video_number+1) for video_number, media in enumerate(videos)]