本文整理汇总了Python中ykdl.videoinfo.VideoInfo.streams[t]方法的典型用法代码示例。如果您正苦于以下问题:Python VideoInfo.streams[t]方法的具体用法?Python VideoInfo.streams[t]怎么用?Python VideoInfo.streams[t]使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ykdl.videoinfo.VideoInfo
的用法示例。
在下文中一共展示了VideoInfo.streams[t]方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: prepare
# 需要导入模块: from ykdl.videoinfo import VideoInfo [as 别名]
# 或者: from ykdl.videoinfo.VideoInfo import streams[t] [as 别名]
def prepare(self):
info = VideoInfo(self.name)
if not self.vid:
self.vid = match1(self.url, 'yinyue/(\d+)')
html = get_content("http://player.kuwo.cn/webmusic/st/getNewMuiseByRid?rid=MUSIC_{}".format(self.vid))
info.title = match1(html, "<name>(.*)</name>")
info.artist = match1(html, "<artist>(.*)</artist>")
for t in self.supported_stream_types:
url=get_content("http://antiserver.kuwo.cn/anti.s?format={}&rid=MUSIC_{}&type=convert_url&response=url".format(t, self.vid))
info.stream_types.append(t)
info.streams[t] = {'container': t, 'video_profile': 'current', 'src' : [url], 'size': 0}
return info
示例2: build_videoinfo
# 需要导入模块: from ykdl.videoinfo import VideoInfo [as 别名]
# 或者: from ykdl.videoinfo.VideoInfo import streams[t] [as 别名]
def build_videoinfo(self, title, ext, *urls):
info = VideoInfo(self.name)
info.title = title
channel = 1
for url in urls:
t = 'Channel ' + str(channel)
info.stream_types.append(t)
info.streams[t] = {
'container': ext,
'video_profile': t,
'src': [url],
'size' : 0
}
channel += 1
self.video_info['info'] = info
示例3: prepare
# 需要导入模块: from ykdl.videoinfo import VideoInfo [as 别名]
# 或者: from ykdl.videoinfo.VideoInfo import streams[t] [as 别名]
def prepare(self):
info = VideoInfo(self.name)
if self.url and not self.vid:
content = get_content(self.url)
self.vid = match1(content, 'guid = "([^"]+)', '"videoCenterId","([^"]+)')
assert self.vid, 'cant find vid'
html = get_content('http://vdn.apps.cntv.cn/api/getHttpVideoInfo.do?pid={}'.format(self.vid))
data = json.loads(html)
video_data = data['video']
info.title = data['title']
for t in self.supported_stream_types:
if self.type_2_cpt[t] in video_data:
urls = []
for v in video_data[self.type_2_cpt[t]]:
urls.append(v['url'])
info.stream_types.append(t)
info.streams[t] = {'container': 'mp4', 'video_profile': t, 'src': urls, 'size' : 0}
return info
示例4: prepare
# 需要导入模块: from ykdl.videoinfo import VideoInfo [as 别名]
# 或者: from ykdl.videoinfo.VideoInfo import streams[t] [as 别名]
def prepare(self):
add_header("Cookie", '__ysuid=%d' % time.time())
info = VideoInfo(self.name)
if not self.vid:
self.vid = match1(self.url.split('//', 1)[1],
'^v[^\.]?\.[^/]+/v_show/id_([a-zA-Z0-9=]+)',
'^player[^/]+/(?:player\.php/sid|embed)/([a-zA-Z0-9=]+)',
'^static.+loader\.swf\?VideoIDS=([a-zA-Z0-9=]+)',
'^(?:new-play|video)\.tudou\.com/v/([a-zA-Z0-9=]+)')
if not self.vid:
html = get_content(self.url)
self.vid = match1(html, r'videoIds?[\"\']?\s*[:=]\s*[\"\']?([a-zA-Z0-9=]+)')
if self.vid.isdigit():
import base64
vid = base64.b64encode(b'%d' % (int(self.vid) * 4))
if not isinstance(vid, str):
vid = vid.decode()
self.vid = 'X' + vid
self.logger.debug("VID: " + self.vid)
utid = fetch_cna()
for ccode, ref, ckey in self.params:
add_header("Referer", ref)
if len(ccode) > 4:
_utid = generateUtdid()
else:
_utid = utid
params = {
'vid': self.vid,
'ccode': ccode,
'utid': _utid,
'ckey': ckey,
'client_ip': '192.168.1.1',
'client_ts': int(time.time()),
}
data = None
while data is None:
e1 = 0
e2 = 0
data = json.loads(get_content('https://ups.youku.com/ups/get.json?' + urlencode(params)))
self.logger.debug("data: " + str(data))
e1 = data['e']['code']
e2 = data['data'].get('error')
if e2:
e2 = e2['code']
if e1 == 0 and e2 in (-2002, -2003):
from getpass import getpass
data = None
if e2 == -2002:
self.logger.warning('This video has protected!')
elif e2 == -2003:
self.logger.warning('Your password [{}] is wrong!'.format(params['password']))
params['password'] = getpass('Input password:')
if e1 == 0 and not e2:
break
assert e1 == 0, data['e']['desc']
data = data['data']
assert 'stream' in data, data['error']['note']
info.title = data['video']['title']
audio_lang = 'default'
if 'dvd' in data and 'audiolang' in data['dvd']:
for l in data['dvd']["audiolang"]:
if l['vid'].startswith(self.vid):
audio_lang = l['langcode']
break
streams = data['stream']
for s in streams:
if not audio_lang == s['audio_lang']:
continue
self.logger.debug("stream> " + str(s))
t = stream_code_to_id[s['stream_type']]
urls = []
for u in s['segs']:
self.logger.debug("seg> " + str(u))
if u['key'] != -1:
if 'cdn_url' in u:
urls.append(u['cdn_url'])
else:
self.logger.warning("VIP video, ignore unavailable seg: {}".format(s['segs'].index(u)))
if len(urls) == 0:
urls = [s['m3u8_url']]
c = 'm3u8'
else:
c = id_to_container[t]
size = s['size']
info.stream_types.append(t)
info.streams[t] = {
'container': c,
'video_profile': stream_code_to_profiles[t],
'size': size,
'src' : urls
}
#.........这里部分代码省略.........