summaryrefslogtreecommitdiff
path: root/youtube_dl/extractor/pearvideo.py
blob: 1d777221cc66942ba9593eda4e02e9b7e4d17aa4 (plain)
    1 # coding: utf-8
    2 from __future__ import unicode_literals
    3 
    4 import re
    5 
    6 from .common import InfoExtractor
    7 from ..utils import (
    8     qualities,
    9     unified_timestamp,
   10 )
   11 
   12 
   13 class PearVideoIE(InfoExtractor):
   14     _VALID_URL = r'https?://(?:www\.)?pearvideo\.com/video_(?P<id>\d+)'
   15     _TEST = {
   16         'url': 'http://www.pearvideo.com/video_1076290',
   17         'info_dict': {
   18             'id': '1076290',
   19             'ext': 'mp4',
   20             'title': '小浣熊在主人家玻璃上滚石头:没砸',
   21             'description': 'md5:01d576b747de71be0ee85eb7cac25f9d',
   22             'timestamp': 1494275280,
   23             'upload_date': '20170508',
   24         }
   25     }
   26 
   27     def _real_extract(self, url):
   28         video_id = self._match_id(url)
   29 
   30         webpage = self._download_webpage(url, video_id)
   31 
   32         quality = qualities(
   33             ('ldflv', 'ld', 'sdflv', 'sd', 'hdflv', 'hd', 'src'))
   34 
   35         formats = [{
   36             'url': mobj.group('url'),
   37             'format_id': mobj.group('id'),
   38             'quality': quality(mobj.group('id')),
   39         } for mobj in re.finditer(
   40             r'(?P<id>[a-zA-Z]+)Url\s*=\s*(["\'])(?P<url>(?:https?:)?//.+?)\2',
   41             webpage)]
   42         self._sort_formats(formats)
   43 
   44         title = self._search_regex(
   45             (r'<h1[^>]+\bclass=(["\'])video-tt\1[^>]*>(?P<value>[^<]+)',
   46              r'<[^>]+\bdata-title=(["\'])(?P<value>(?:(?!\1).)+)\1'),
   47             webpage, 'title', group='value')
   48         description = self._search_regex(
   49             (r'<div[^>]+\bclass=(["\'])summary\1[^>]*>(?P<value>[^<]+)',
   50              r'<[^>]+\bdata-summary=(["\'])(?P<value>(?:(?!\1).)+)\1'),
   51             webpage, 'description', default=None,
   52             group='value') or self._html_search_meta('Description', webpage)
   53         timestamp = unified_timestamp(self._search_regex(
   54             r'<div[^>]+\bclass=["\']date["\'][^>]*>([^<]+)',
   55             webpage, 'timestamp', fatal=False))
   56 
   57         return {
   58             'id': video_id,
   59             'title': title,
   60             'description': description,
   61             'timestamp': timestamp,
   62             'formats': formats,
   63         }

Generated by cgit