diff options
Diffstat (limited to 'youtube_dl/extractor/lifenews.py')
| -rw-r--r-- | youtube_dl/extractor/lifenews.py | 62 | 
1 files changed, 34 insertions, 28 deletions
diff --git a/youtube_dl/extractor/lifenews.py b/youtube_dl/extractor/lifenews.py index ba2f80a75..c2b4490c4 100644 --- a/youtube_dl/extractor/lifenews.py +++ b/youtube_dl/extractor/lifenews.py @@ -7,48 +7,53 @@ from .common import InfoExtractor  from ..compat import compat_urlparse  from ..utils import (      determine_ext, +    ExtractorError,      int_or_none, +    parse_iso8601,      remove_end, -    unified_strdate, -    ExtractorError,  )  class LifeNewsIE(InfoExtractor): -    IE_NAME = 'lifenews' -    IE_DESC = 'LIFE | NEWS' -    _VALID_URL = r'https?://lifenews\.ru/(?:mobile/)?(?P<section>news|video)/(?P<id>\d+)' +    IE_NAME = 'life' +    IE_DESC = 'Life.ru' +    _VALID_URL = r'https?://life\.ru/t/[^/]+/(?P<id>\d+)'      _TESTS = [{          # single video embedded via video/source -        'url': 'http://lifenews.ru/news/98736', +        'url': 'https://life.ru/t/новости/98736',          'md5': '77c95eaefaca216e32a76a343ad89d23',          'info_dict': {              'id': '98736',              'ext': 'mp4',              'title': 'Мужчина нашел дома архив оборонного завода',              'description': 'md5:3b06b1b39b5e2bea548e403d99b8bf26', +            'timestamp': 1344154740,              'upload_date': '20120805', +            'view_count': int,          }      }, {          # single video embedded via iframe -        'url': 'http://lifenews.ru/news/152125', +        'url': 'https://life.ru/t/новости/152125',          'md5': '77d19a6f0886cd76bdbf44b4d971a273',          'info_dict': {              'id': '152125',              'ext': 'mp4',              'title': 'В Сети появилось видео захвата «Правым сектором» колхозных полей ',              'description': 'Жители двух поселков Днепропетровской области не простили радикалам угрозу лишения плодородных земель и пошли в лобовую. ', +            'timestamp': 1427961840,              'upload_date': '20150402', +            'view_count': int,          }      }, {          # two videos embedded via iframe -        'url': 'http://lifenews.ru/news/153461', +        'url': 'https://life.ru/t/новости/153461',          'info_dict': {              'id': '153461',              'title': 'В Москве спасли потерявшегося медвежонка, который спрятался на дереве',              'description': 'Маленький хищник не смог найти дорогу домой и обрел временное убежище на тополе недалеко от жилого массива, пока его не нашла соседская собака.', -            'upload_date': '20150505', +            'timestamp': 1430825520, +            'view_count': int,          },          'playlist': [{              'md5': '9b6ef8bc0ffa25aebc8bdb40d89ab795', @@ -57,6 +62,7 @@ class LifeNewsIE(InfoExtractor):                  'ext': 'mp4',                  'title': 'В Москве спасли потерявшегося медвежонка, который спрятался на дереве (Видео 1)',                  'description': 'Маленький хищник не смог найти дорогу домой и обрел временное убежище на тополе недалеко от жилого массива, пока его не нашла соседская собака.', +                'timestamp': 1430825520,                  'upload_date': '20150505',              },          }, { @@ -66,22 +72,25 @@ class LifeNewsIE(InfoExtractor):                  'ext': 'mp4',                  'title': 'В Москве спасли потерявшегося медвежонка, который спрятался на дереве (Видео 2)',                  'description': 'Маленький хищник не смог найти дорогу домой и обрел временное убежище на тополе недалеко от жилого массива, пока его не нашла соседская собака.', +                'timestamp': 1430825520,                  'upload_date': '20150505',              },          }],      }, { -        'url': 'http://lifenews.ru/video/13035', +        'url': 'https://life.ru/t/новости/213035', +        'only_matching': True, +    }, { +        'url': 'https://life.ru/t/%D0%BD%D0%BE%D0%B2%D0%BE%D1%81%D1%82%D0%B8/153461', +        'only_matching': True, +    }, { +        'url': 'https://life.ru/t/новости/411489/manuel_vals_nazval_frantsiiu_tsieliu_nomier_odin_dlia_ighil',          'only_matching': True,      }]      def _real_extract(self, url): -        mobj = re.match(self._VALID_URL, url) -        video_id = mobj.group('id') -        section = mobj.group('section') +        video_id = self._match_id(url) -        webpage = self._download_webpage( -            'http://lifenews.ru/%s/%s' % (section, video_id), -            video_id, 'Downloading page') +        webpage = self._download_webpage(url, video_id)          video_urls = re.findall(              r'<video[^>]+><source[^>]+src=["\'](.+?)["\']', webpage) @@ -95,26 +104,22 @@ class LifeNewsIE(InfoExtractor):          title = remove_end(              self._og_search_title(webpage), -            ' - Первый по срочным новостям — LIFE | NEWS') +            ' - Life.ru')          description = self._og_search_description(webpage)          view_count = self._html_search_regex( -            r'<div class=\'views\'>\s*(\d+)\s*</div>', webpage, 'view count', fatal=False) -        comment_count = self._html_search_regex( -            r'=\'commentCount\'[^>]*>\s*(\d+)\s*<', -            webpage, 'comment count', fatal=False) +            r'<div[^>]+class=(["\']).*?\bhits-count\b.*?\1[^>]*>\s*(?P<value>\d+)\s*</div>', +            webpage, 'view count', fatal=False, group='value') -        upload_date = self._html_search_regex( -            r'<time[^>]*datetime=\'([^\']+)\'', webpage, 'upload date', fatal=False) -        if upload_date is not None: -            upload_date = unified_strdate(upload_date) +        timestamp = parse_iso8601(self._search_regex( +            r'<time[^>]+datetime=(["\'])(?P<value>.+?)\1', +            webpage, 'upload date', fatal=False, group='value'))          common_info = {              'description': description,              'view_count': int_or_none(view_count), -            'comment_count': int_or_none(comment_count), -            'upload_date': upload_date, +            'timestamp': timestamp,          }          def make_entry(video_id, video_url, index=None): @@ -183,7 +188,8 @@ class LifeEmbedIE(InfoExtractor):              ext = determine_ext(video_url)              if ext == 'm3u8':                  formats.extend(self._extract_m3u8_formats( -                    video_url, video_id, 'mp4', m3u8_id='m3u8')) +                    video_url, video_id, 'mp4', +                    entry_protocol='m3u8_native', m3u8_id='m3u8'))              else:                  formats.append({                      'url': video_url,  | 
