[Weiqitv] Add new extractor

totalwebcasting
Founder Fang 9 years ago
parent ce7d243c7e
commit 5f432ac8f5

@ -331,7 +331,8 @@ from .lecture2go import Lecture2GoIE
from .letv import ( from .letv import (
LetvIE, LetvIE,
LetvTvIE, LetvTvIE,
LetvPlaylistIE LetvPlaylistIE,
LetvCloudIE,
) )
from .libsyn import LibsynIE from .libsyn import LibsynIE
from .lifenews import ( from .lifenews import (
@ -834,6 +835,7 @@ from .webofstories import (
WebOfStoriesPlaylistIE, WebOfStoriesPlaylistIE,
) )
from .weibo import WeiboIE from .weibo import WeiboIE
from .weiqitv import WeiqitvIE
from .wimp import WimpIE from .wimp import WimpIE
from .wistia import WistiaIE from .wistia import WistiaIE
from .worldstarhiphop import WorldStarHipHopIE from .worldstarhiphop import WorldStarHipHopIE

@ -4,6 +4,7 @@ from __future__ import unicode_literals
import datetime import datetime
import re import re
import time import time
import base64
from .common import InfoExtractor from .common import InfoExtractor
from ..compat import ( from ..compat import (
@ -16,6 +17,7 @@ from ..utils import (
parse_iso8601, parse_iso8601,
sanitized_Request, sanitized_Request,
int_or_none, int_or_none,
str_or_none,
encode_data_uri, encode_data_uri,
) )
@ -239,3 +241,58 @@ class LetvPlaylistIE(LetvTvIE):
}, },
'playlist_mincount': 7 'playlist_mincount': 7
}] }]
class LetvCloudIE(InfoExtractor):
IE_DESC = '乐视云'
_VALID_URL = r'http://yuntv\.letv\.com/bcloud.html\?.*$'
_TESTS = [{
'url': 'http://yuntv.letv.com/bcloud.html?uu=p7jnfw5hw9&vu=467623dedf',
'md5': '26450599afd64c513bc77030ad15db44',
'info_dict': {
'id': 'p7jnfw5hw9_467623dedf',
'ext': 'mp4',
'title': 'p7jnfw5hw9_467623dedf',
},
}, {
'url': 'http://yuntv.letv.com/bcloud.html?uu=p7jnfw5hw9&vu=ec93197892&pu=2c7cd40209&auto_play=1&gpcflag=1&width=640&height=360',
'info_dict': {
'id': 'p7jnfw5hw9_ec93197892',
'ext': 'mp4',
'title': 'p7jnfw5hw9_ec93197892',
},
}, {
'url': 'http://yuntv.letv.com/bcloud.html?uu=p7jnfw5hw9&vu=187060b6fd',
'info_dict': {
'id': 'p7jnfw5hw9_187060b6fd',
'ext': 'mp4',
'title': 'p7jnfw5hw9_187060b6fd',
},
}]
def _real_extract(self, url):
uu = re.search('uu=([\w]+)', url).group(1)
vu = re.search('vu=([\w]+)', url).group(1)
media_id = uu + '_' + vu
play_json_req = sanitized_Request(
'http://api.letvcloud.com/gpc.php?cf=html5&sign=signxxxxx&ver=2.2&format=json&' +
"uu=" + uu + "&vu=" + vu)
play_json = self._download_json(play_json_req, media_id, 'Downloading playJson data')
formats = [{
'url': base64.b64decode(media['play_url']['main_url'].encode('utf-8')).decode("utf-8"),
'ext': 'mp4',
'format_id': int_or_none(media.get('play_url', {}).get('vtype')),
'format_note': str_or_none(media.get('play_url', {}).get('definition')),
'width': int_or_none(media.get('play_url', {}).get('vwidth')),
'height': int_or_none(media.get('play_url', {}).get('vheight')),
} for media in play_json['data']['video_info']['media'].values()]
self._sort_formats(formats)
return {
'id': media_id,
'title': media_id,
'formats': formats,
}

@ -0,0 +1,54 @@
# coding: utf-8
from __future__ import unicode_literals
from .common import InfoExtractor
class WeiqitvIE(InfoExtractor):
IE_DESC = 'WQTV'
_VALID_URL = r'http://www\.weiqitv\.com/index/video_play\?videoId=(?P<id>[A-Za-z0-9]+)'
_TESTS = [{
'url': 'http://www.weiqitv.com/index/video_play?videoId=53c744f09874f0e76a8b46f3',
'md5': '26450599afd64c513bc77030ad15db44',
'info_dict': {
'id': '53c744f09874f0e76a8b46f3',
'ext': 'mp4',
'title': '2013年度盘点',
},
}, {
'url': 'http://www.weiqitv.com/index/video_play?videoId=567379a2d4c36cca518b4569',
'info_dict': {
'id': '567379a2d4c36cca518b4569',
'ext': 'mp4',
'title': '民国围棋史',
},
}, {
'url': 'http://www.weiqitv.com/index/video_play?videoId=5430220a9874f088658b4567',
'info_dict': {
'id': '5430220a9874f088658b4567',
'ext': 'mp4',
'title': '二路托过的手段和运用',
},
}]
def _real_extract(self, url):
media_id = self._match_id(url)
page = self._download_webpage(url, media_id)
info_json_str = self._search_regex(
'var\s+video\s*=\s*(.+});',
page, 'info_json_str')
info_json = self._parse_json(info_json_str, media_id)
letvcloud_url = self._search_regex(
'var\s+letvurl\s*=\s*"([^"]+)',
page, 'letvcloud_url')
return {
'_type': 'url_transparent',
"ie_key": 'LetvCloud',
'url': letvcloud_url,
'title': info_json['name'],
'id': media_id,
}
Loading…
Cancel
Save