本文整理汇总了Python中ykdl.videoinfo.VideoInfo类的典型用法代码示例。如果您正苦于以下问题:Python VideoInfo类的具体用法?Python VideoInfo怎么用?Python VideoInfo使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了VideoInfo类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Python代码示例。
示例1: prepare
def prepare(self):
info = VideoInfo(self.name)
if self.url and not self.vid:
self.vid = match1(self.url, 'http://v.ku6.com/special/show_\d+/(.*)\.html',
'http://v.ku6.com/show/(.*)\.html',
'http://my.ku6.com/watch\?.*v=(.*).*')
video_data = json.loads(get_content('http://v.ku6.com/fetchVideo4Player/%s.html' % self.vid))
data = video_data['data']
assert video_data['status'] == 1, '%s : %s' % (self.name, data)
info.title = data['t']
f = data['f']
urls = f.split(',')
ext = re.sub(r'.*\.', '', urls[0])
assert ext in ('flv', 'mp4', 'f4v'), ext
ext = {'f4v': 'flv'}.get(ext, ext)
size = 0
for url in urls:
_, _, temp = url_info(url)
size += temp
info.streams['current'] = {'container': ext, 'src': urls, 'size' : size}
info.stream_types.append('current')
return info
开发者ID:PureTV,项目名称:ykdl,代码行数:26,代码来源:ku6.py
示例2: prepare
def prepare(self):
info = VideoInfo(self.name, True)
html = get_content(self.url)
info.title = match1(html, '<title>([^<]+)').split('_')[0]
data = json.loads(match1(html, 'channelOneInfo = ({.+?});'))
tag_from = 'huomaoh5room'
tn = str(int(time.time()))
sign_context = data['stream'] + tag_from + tn + SECRETKEY
token = hashlib.md5(compact_bytes(sign_context, 'utf-8')).hexdigest()
params = { 'streamtype':'live',
'VideoIDS': data['stream'],
'time': tn,
'cdns' : '1',
'from': tag_from,
'token': token
}
content = get_content(self.live_base, data=compact_bytes(urlencode(params), 'utf-8'), charset='utf-8')
stream_data = json.loads(content)
assert stream_data["roomStatus"] == "1", "The live stream is not online! "
for stream in stream_data["streamList"]:
if stream['default'] == 1:
defstream = stream['list']
for stream in defstream:
info.stream_types.append(stream['type'])
info.streams[stream['type']] = {'container': 'flv', 'video_profile': self.stream_2_profile[stream['type']], 'src' : [stream['url']], 'size': float('inf')}
info.stream_types = sorted(info.stream_types, key = self.supported_stream_types.index)
return info
开发者ID:wwqgtxx,项目名称:ykdl,代码行数:32,代码来源:huomao.py
示例3: prepare
def prepare(self):
info = VideoInfo(self.name)
if not self.vid:
self.vid = match1(self.url, '/show(?:/channel)?/([^\./]+)',
'/media/([^\./]+)')
if not self.vid:
html = get_content(self.url)
self.vid = match1(html, 's[cm]id ?= ?[\'"]([^\'"]+)[\'"]')
assert self.vid, "No VID match!"
data = json.loads(get_content('https://n.miaopai.com/api/aj_media/info.json?smid={}'.format(self.vid)))
if 'status' in data:
if data['status'] != 200:
data = json.loads(get_content('http://api.miaopai.com/m/v2_channel.json?fillType=259&scid={}&vend=miaopai'.format(self.vid)))
assert data['status'] == 200, data['msg']
data = data['result']
info.title = data['ext']['t'] or self.name + '_' + self.vid
url = data['stream']['base']
ext = data['stream']['and']
else:
assert data['code'] == 200, data['msg']
data = data['data']
info.title = data['description'] or self.name + '_' + self.vid
url = data['meta_data'][0]['play_urls']['m']
_, ext, _ = url_info(url)
info.stream_types.append('current')
info.streams['current'] = {'container': ext or 'mp4', 'src': [url], 'size' : 0}
return info
开发者ID:wwqgtxx,项目名称:ykdl,代码行数:32,代码来源:miaopai.py
示例4: prepare
def prepare(self):
info = VideoInfo(self.name)
if self.url and not self.vid:
self.vid = match1(self.url, 'http://www.mgtv.com/b/\d+/(\d+).html')
if self.vid is None:
html = get_content(self.url)
self.vid = match1(html, 'vid=(\d+)', 'vid=\"(\d+)', 'vid: (\d+)')
api_url = 'http://pcweb.api.mgtv.com/player/video?video_id={}'.format(self.vid)
meta = json.loads(get_content(api_url))
assert meta['code'] == 200, '[failed] status: {}, msg: {}'.format(meta['status'],meta['msg'])
assert meta['data'], '[Failed] Video not found.'
data = meta['data']
info.title = data['info']['title']
domain = data['stream_domain'][0]
for lstream in data['stream']:
if lstream['url']:
url = json.loads(get_content(domain + lstream['url']))['info']
info.streams[self.profile_2_types[lstream['name']]] = {'container': 'm3u8', 'video_profile': lstream['name'], 'src' : [url]}
info.stream_types.append(self.profile_2_types[lstream['name']])
info.stream_types= sorted(info.stream_types, key = self.supported_stream_types.index)
return info
开发者ID:flfq,项目名称:ykdl,代码行数:25,代码来源:mgtv.py
示例5: letvcloud_download_by_vu
def letvcloud_download_by_vu(self):
info = VideoInfo(self.name)
#ran = float('0.' + str(random.randint(0, 9999999999999999))) # For ver 2.1
#str2Hash = 'cfflashformatjsonran{ran}uu{uu}ver2.2vu{vu}bie^#@(%27eib58'.format(vu = vu, uu = uu, ran = ran) #Magic!/ In ver 2.1
vu, uu = self.vid
argumet_dict ={'cf' : 'flash', 'format': 'json', 'ran': str(int(time.time())), 'uu': str(uu),'ver': '2.2', 'vu': str(vu), }
sign_key = '2f9d6924b33a165a6d8b5d3d42f4f987' #ALL YOUR BASE ARE BELONG TO US
str2Hash = ''.join([i + argumet_dict[i] for i in sorted(argumet_dict)]) + sign_key
sign = hashlib.md5(str2Hash.encode('utf-8')).hexdigest()
html = get_content('http://api.letvcloud.com/gpc.php?' + '&'.join([i + '=' + argumet_dict[i] for i in argumet_dict]) + '&sign={sign}'.format(sign = sign), charset= 'utf-8')
data = json.loads(html)
assert data['code'] == 0, data['message']
video_name = data['data']['video_info']['video_name']
if '.' in video_name:
ext = video_name.split('.')[-1]
info.title = video_name[0:-len(ext)-1]
else:
ext = 'mp4'
info.title = video_name
available_stream_type = data['data']['video_info']['media'].keys()
for stream in self.supported_stream_types:
if stream in available_stream_type:
urls = [base64.b64decode(data['data']['video_info']['media'][stream]['play_url']['main_url']).decode("utf-8")]
info.stream_types.append(stream)
info.streams[stream] = {'container': ext, 'video_profile': stream, 'src': urls, 'size' : 0}
return info
开发者ID:PureTV,项目名称:ykdl,代码行数:26,代码来源:letvcloud.py
示例6: prepare
def prepare(self):
info = VideoInfo(self.name, True)
ID = match1(self.url, "/(\d+)")
api1_data = json.loads(get_content("{}?id={}".format(api1_url, ID)))
self.vid = api1_data["data"]["room_id"]
api2_data = json.loads(get_content("{}?room_id={}&from=room".format(api2_url, self.vid)))
info.title = api2_data["data"]["title"]
assert api2_data["data"]["live_status"] == 1, u"主播正在觅食......"
def get_live_info(q=0):
data = json.loads(get_content("{}?player=1&cid={}&quality={}&otype=json".format(api_url, self.vid, q)))
assert data["code"] == 0, data["msg"]
data = data["data"]
urls = [random.choice(data["durl"])["url"]]
qlt = data['current_quality']
aqlts = [int(x) for x in data['accept_quality']]
size = float('inf')
ext = 'flv'
prf = self.supported_stream_profile[4 - qlt]
st = self.profile_2_type[prf]
if urls and st not in info.streams:
info.stream_types.append(st)
info.streams[st] = {'container': ext, 'video_profile': prf, 'src' : urls, 'size': size}
if q == 0:
aqlts.remove(qlt)
for aqlt in aqlts:
get_live_info(aqlt)
get_live_info()
return info
开发者ID:wwqgtxx,项目名称:ykdl,代码行数:33,代码来源:live.py
示例7: parser_list
def parser_list(self, url):
add_header("Referer", "http://music.163.com/")
vid = match1(url, 'id=(.*)')
if "album" in url:
api_url = "http://music.163.com/api/album/{}?id={}&csrf_token=".format(vid, vid)
listdata = json.loads(get_content(api_url))
playlist = listdata['album']['songs']
elif "playlist" in url:
api_url = "http://music.163.com/api/playlist/detail?id={}&csrf_token=".format(vid)
listdata = json.loads(get_content(api_url))
playlist = listdata['result']['tracks']
elif "toplist" in url:
api_url = "http://music.163.com/api/playlist/detail?id={}&csrf_token=".format(vid)
listdata = json.loads(get_content(api_url))
playlist = listdata['result']['tracks']
elif "artist" in url:
api_url = "http://music.163.com/api/artist/{}?id={}&csrf_token=".format(vid, vid)
listdata = json.loads(get_content(api_url))
playlist = listdata['hotSongs']
info_list = []
for music in playlist:
info = VideoInfo(self.name)
info.title = music['name']
info.artist = music['artists'][0]['name']
self.mp3_host = music['mp3Url'][8]
for st in self.supported_stream_types:
if st in music and music[st]:
info.stream_types.append(st)
self.song_date[st] = music[st]
self.extract_song(info)
info_list.append(info)
return info_list
开发者ID:PureTV,项目名称:ykdl,代码行数:33,代码来源:music.py
示例8: prepare
def prepare(self):
info = VideoInfo(self.name)
add_header("Referer", "http://music.163.com/")
if not self.vid:
self.vid = match1(self.url, 'song/(\d+)', '\?id=(.*)')
api_url = self.api_url.format(self.vid, self.vid)
music = self.get_music(json.loads(get_content(api_url)))
self.logger.debug("music info >" + str(music))
info.title = music['name']
info.artist = music['artists'][0]['name']
real_id = music["id"]
snd_key = random_string()
if sys.version_info[0] == 3:
encSecKey = RSA_string(snd_key)
else:
encSecKey = RSA_string(snd_key)[:-1]
payload = netease_req(real_id, snd_key, encSecKey)
mp3_info = json.loads(get_content(self.mp3_api, data=compact_bytes(urlencode(payload), 'utf-8')))['data'][0]
self.logger.debug("mp3 > " + str(mp3_info))
info.stream_types.append('current')
info.streams['current'] = {'container': mp3_info['type'], 'video_profile': 'current', 'src' : [mp3_info['url']], 'size': mp3_info['size']}
return info
开发者ID:wwqgtxx,项目名称:ykdl,代码行数:25,代码来源:musicbase.py
示例9: prepare
def prepare(self):
info = VideoInfo(self.name, True)
if not self.vid:
html = get_content(self.url)
room = match1(html, 'var $ROOM = ([^;]+)')
self.vid = match1(html, '"room_id.?":(\d+)')
info.title = json.loads("{\"room_name\" : \"" + match1(html, '"room_name.?":"([^"]+)') + "\"}")['room_name']
info.artist = json.loads("{\"name\" : \"" + match1(html, '"owner_name.?":"([^"]+)') + "\"}")['name']
api_url = 'https://www.douyu.com/lapi/live/getPlay/{}'.format(self.vid)
tt = str(int(time.time() / 60))
rnd_md5 = hashlib.md5(str(random.random()).encode('utf8'))
did = rnd_md5.hexdigest().upper()
to_sign = ''.join([self.vid, did, API_KEY, tt])
sign = stupidMD5(to_sign)
for stream in self.stream_ids:
rate = self.stream_id_2_rate[stream]
params = {"ver" : VER, "sign" : sign, "did" : did, "rate" : rate, "tt" : tt, "cdn" : "ws"}
form = urlencode(params)
html_content = get_content(api_url, data=compact_bytes(form, 'utf-8'))
live_data = json.loads(html_content)
assert live_data["error"] == 0, "live show is offline"
live_data = live_data["data"]
real_url = '/'.join([live_data['rtmp_url'], live_data['rtmp_live']])
info.stream_types.append(stream)
info.streams[stream] = {'container': 'flv', 'video_profile': self.id_2_profile[stream], 'src' : [real_url], 'size': float('inf')}
return info
开发者ID:flfq,项目名称:ykdl,代码行数:29,代码来源:live.py
示例10: prepare
def prepare(self):
info = VideoInfo(self.name)
stream_temp = {'1080p': None , '1300': None, '1000':None , '720p': None, '350': None }
self.__STREAM_TEMP__.append(stream_temp)
if not self.vid:
self.vid = match1(self.url, r'http://www.le.com/ptv/vplay/(\d+).html', '#record/(\d+)')
#normal process
info_url = 'http://api.le.com/mms/out/video/playJson?id={}&platid=1&splatid=101&format=1&tkey={}&domain=www.le.com'.format(self.vid, calcTimeKey(int(time.time())))
r = get_content(info_url)
data=json.loads(r)
info.title = data['playurl']['title']
available_stream_id = sorted(list(data["playurl"]["dispatch"].keys()), key = self.supported_stream_types.index)
for stream in available_stream_id:
s_url =data["playurl"]["domain"][0]+data["playurl"]["dispatch"][stream][0]
s_url+="&ctv=pc&m3v=1&termid=1&format=1&hwtype=un&ostype=Linux&tag=le&sign=le&expect=3&tn={}&pay=0&iscpn=f9051&rateid={}".format(random.random(),stream)
r2=get_content(s_url)
data2=json.loads(r2)
# hold on ! more things to do
# to decode m3u8 (encoded)
m3u8 = get_content(data2["location"], charset = 'ignore')
m3u8_list = decode(m3u8)
stream_id = self.stream_2_id[stream]
info.streams[stream_id] = {'container': 'm3u8', 'video_profile': self.stream_2_profile[stream], 'size' : 0}
stream_temp[stream] = compact_tempfile(mode='w+t', suffix='.m3u8')
stream_temp[stream].write(m3u8_list)
info.streams[stream_id]['src'] = [stream_temp[stream].name]
stream_temp[stream].flush()
info.stream_types.append(stream_id)
return info
开发者ID:gitter-badger,项目名称:ykdl,代码行数:32,代码来源:le.py
示例11: prepare
def prepare(self):
info = VideoInfo(self.name, True)
html = get_content(self.url)
info.title = match1(html, '<title>([^<]+)').split('_')[0]
video_name = match1(html, 'getFlash\("[0-9]+","([^"]+)')
params = { 'streamtype':'live',
'VideoIDS': video_name,
'cdns' : '1'
}
form = urlencode(params)
content = get_content(self.live_base,data=compact_bytes(form, 'utf-8'),charset = 'utf-8')
stream_data = json.loads(content)
assert stream_data["roomStatus"] == "1", "The live stream is not online! "
for stream in stream_data["streamList"]:
if stream['default'] == 1:
defstream = stream['list']
for stream in defstream:
info.stream_types.append(stream['type'])
info.streams[stream['type']] = {'container': 'flv', 'video_profile': self.stream_2_profile[stream['type']], 'src' : [stream['url']], 'size': float('inf')}
info.stream_types = sorted(info.stream_types, key = self.supported_stream_types.index)
return info
开发者ID:gitter-badger,项目名称:ykdl,代码行数:25,代码来源:huomao.py
示例12: prepare
def prepare(self):
info = VideoInfo(self.name)
if not self.vid:
html = get_content(self.url)
self.vid = match1(html, 'video_id:\'([^\']+)') or match1(self.url, '#(\d+)')
assert self.vid, "can't get vid"
api_url = 'http://s.video.sina.com.cn/video/h5play?video_id={}'.format(self.vid)
data = json.loads(get_content(api_url))['data']
info.title = data['title']
for t in ['mp4', '3gp', 'flv']:
if t in data['videos']:
video_info = data['videos'][t]
break
for profile in video_info:
if not profile in info.stream_types:
v = video_info[profile]
tp = v['type']
url = v['file_api']+'?vid='+v['file_id']
r_url = get_realurl(url)
info.stream_types.append(profile)
info.streams[profile] = {'container': tp, 'video_profile': profile, 'src': [r_url], 'size' : 0}
return info
开发者ID:PureTV,项目名称:ykdl,代码行数:25,代码来源:video.py
示例13: prepare
def prepare(self):
info = VideoInfo(self.name, True)
if not self.vid:
self.vid = match1(self.url, '/(\d+)')
if not self.vid:
html = get_content(self.url)
self.vid = match1(html, '"liveAddr":"([0-9\_]+)"')
self.pid = self.vid
# from upstream!!
serverDataTxt = match1(html, 'serverData = {([\S\ ]+)};')
serverDataTxt = '{%s}' % (serverDataTxt)
self.logger.debug("serverDataTxt => %s" % (serverDataTxt))
serverData = json.loads(serverDataTxt)
self.logger.debug(serverData)
assert serverData["liveInfo"]["data"]["profileInfo"]["isLive"] == 1, 'error: live show is not on line!!'
info.title = serverData["liveInfo"]["data"]["videoInfo"]["title"]
info.artist = serverData["liveInfo"]["data"]["profileInfo"]["nickName"]
for data in serverData["liveInfo"]["data"]["videoInfo"]["streamInfos"]:
info.stream_types.append(self.bitrate_2_type[data["bitrate"]])
info.streams[self.bitrate_2_type[data["bitrate"]]] = {'container': 'flv', 'video_profile': data["desc"], 'src': ["%s&_t=%s000"%(unescape(data["playUrl"]),int(time.time()))], 'size': float('inf')}
return info
开发者ID:wwqgtxx,项目名称:ykdl,代码行数:27,代码来源:egame.py
示例14: prepare
def prepare(self):
info = VideoInfo(self.name)
add_header("Referer", "http://www.bilibili.com")
info.extra["referer"] = "http://www.bilibili.com"
info.extra["ua"] = fake_headers['User-Agent']
if not self.vid:
html = get_content(self.url)
self.vid = match1(html, 'cid=(\d+)', 'cid=\"(\d+)')
info.title = match1(html, '<title>([^<]+)').split("_")[0].strip(u" 番剧 bilibili 哔哩哔哩弹幕视频网")
if not self.vid:
eid = match1(self.url, 'anime/v/(\d+)', 'play#(\d+)') or match1(html, 'anime/v/(\d+)')
if eid:
Episode_info = json.loads(get_content('http://bangumi.bilibili.com/web_api/episode/{}.json'.format(eid)))['result']['currentEpisode']
self.vid = Episode_info['danmaku']
info.title = info.title + ' ' + Episode_info['indexTitle'] + '. ' + Episode_info['longTitle']
assert self.vid, "can't play this video: {}".format(self.url)
for q in self.supported_stream_profile:
sign_this = hashlib.md5(compact_bytes('cid={}&from=miniplay&player=1&quality={}{}'.format(self.vid, 3-self.supported_stream_profile.index(q), SECRETKEY_MINILOADER), 'utf-8')).hexdigest()
api_url = 'http://interface.bilibili.com/playurl?cid={}&player=1&quality={}&from=miniplay&sign={}'.format(self.vid, 3-self.supported_stream_profile.index(q), sign_this)
html = get_content(api_url)
self.logger.debug("HTML> {}".format(html))
urls, size, ext = parse_cid_playurl(html)
if ext == 'hdmp4':
ext = 'mp4'
info.stream_types.append(self.profile_2_type[q])
info.streams[self.profile_2_type[q]] = {'container': ext, 'video_profile': q, 'src' : urls, 'size': size}
return info
开发者ID:flfq,项目名称:ykdl,代码行数:29,代码来源:video.py
示例15: prepare
def prepare(self):
info = VideoInfo(self.name, True)
if self.url:
self.vid = match1(self.url, '/(\d+)')
if not self.vid:
html = get_content(self.url)
self.vid = match1(html, '"room_id.?":(\d+)')
for stream in self.stream_ids:
tt = int(time.time())
rate = self.stream_id_2_rate[stream]
signContent = 'lapi/live/thirdPart/getPlay/{}?aid=pcclient&rate={}&time={}9TUk5fjjUjg9qIMH3sdnh'.format(self.vid, rate , tt)
sign = md5(signContent.encode('utf-8')).hexdigest()
url = 'http://coapi.douyucdn.cn/lapi/live/thirdPart/getPlay/{}?rate={}'.format(self.vid, rate)
html_content = get_content(url, headers = { 'auth': sign, 'time': str(tt), 'aid': 'pcclient' })
live_data = json.loads(html_content)['data']
real_url = live_data['live_url']
info.stream_types.append(stream)
info.streams[stream] = {'container': 'flv', 'video_profile': self.id_2_profile[stream], 'src' : [real_url], 'size': float('inf')}
info.title = live_data['room_name']
return info
开发者ID:PureTV,项目名称:ykdl,代码行数:25,代码来源:live.py
示例16: prepare
def prepare(self):
info = VideoInfo(self.name, True)
if not self.vid:
self.vid = match1(self.url, 'channel=([\d]+)')
live_data = json.loads(get_content('http://api.live.letv.com/v1/channel/letv/100/1001/{}'.format(self.vid)))['data']
info.title = self.name + " " + live_data['channelName']
stream_data = live_data['streams']
for s in stream_data:
stream_id = self.stream_2_id[s['rateType']]
stream_profile = self.stream_2_profile[s['rateType']]
if not stream_id in info.stream_types:
info.stream_types.append(stream_id)
date = datetime.datetime.now()
streamUrl = s['streamUrl'] + '&format=1&expect=2&termid=1&hwtype=un&platid=10&splatid=1001&playid=1sign=live_web&&ostype={}&p1=1&p2=10&p3=-&vkit={}&station={}&tm={}'.format(platform.platform(), date.strftime("%Y%m%d"), self.vid, int(time.time()))
data = json.loads(get_content(streamUrl))
nodelist = data['nodelist']
for node in nodelist:
src = node['location']
try:
get_content(src)
info.streams[stream_id] = {'container': 'm3u8', 'video_profile': stream_profile, 'size' : float('inf'), 'src' : [src]}
except:
continue
break
info.stream_types = sorted(info.stream_types, key = self.stream_ids.index)
return info
开发者ID:gitter-badger,项目名称:ykdl,代码行数:30,代码来源:live.py
示例17: prepare
def prepare(self):
if self.url and not self.vid:
self.vid = match1(self.url, '\Wvid=(\d+)', '\Wid=(\d+)', 'share_play.html#(\d+)_')
if not self.vid:
html = get_content(self.url)
self.vid = match1(html, '/(\d+)/v\.swf', 'vid="(\d+)"', '\&id=(\d+)')
self.logger.debug("VID> {}".format(self.vid))
info = json.loads(get_content(self.apiurl % self.vid))
self.logger.debug("info> {}".format(info))
if info['status'] == 6:
self.name = u'搜狐自媒体 (MySohu)'
self.apiurl = 'http://my.tv.sohu.com/play/videonew.do?vid=%s&referer=http://my.tv.sohu.com'
info = json.loads(get_content(self.apiurl % self.vid))
self.logger.debug("info> {}".format(info))
video = VideoInfo(self.name)
# this is needless now, uid well be registered in the the following code
#video.extra["header"] = "Range: "
if info['status'] == 1:
now = time.time()
uid = int(now * 1000)
params = {
'vid': self.vid,
'url': self.url,
'refer': self.url,
't': int(now),
'uid': uid,
#'nid': nid,
#'pid': pid,
#'screen': '1366x768',
#'channeled': channeled,
#'MTV_SRC': MTV_SRC,
#'position': 'page_adbanner',
#'op': 'click',
#'details': '{}',
#'os': 'linux',
#'platform': 'linux',
#'passport': '',
}
get_content('http://z.m.tv.sohu.com/h5_cc.gif?' + urlencode(params))
data = info['data']
video.title = data['tvName']
for stream in self.supported_stream_types:
lvid = data.get(stream)
if lvid == 0 or not lvid:
continue
if lvid != self.vid:
_info = json.loads(get_content(self.apiurl % lvid))
self.logger.debug("info> {}".format(_info))
else:
_info = info
self.parser_info(video, _info, stream, lvid, uid)
return video
开发者ID:wwqgtxx,项目名称:ykdl,代码行数:56,代码来源:sohubase.py
示例18: prepare
def prepare(self):
info = VideoInfo(self.name)
info.live = True
self.vid = self.url[self.url.rfind('/')+1:].split(".")[0]
json_request_url = 'http://www.yizhibo.com/live/h5api/get_basic_live_info?scid={}'.format(self.vid)
content = json.loads(get_content(json_request_url))
assert content['result'] == 1, "Error : {}".format(content['result'])
info.title = content['data']['live_title']
info.artist = content['data']['nickname']
info.streams['current'] = {'container': 'm3u8', 'video_profile': 'current', 'src' : [content['data']['play_url']], 'size': float('inf')}
info.stream_types.append('current')
return info
开发者ID:PureTV,项目名称:ykdl,代码行数:12,代码来源:yizhibo.py
示例19: prepare
def prepare(self):
info = VideoInfo(self.name, True)
html = get_content(self.url)
self.vid = match1(html, '"user_id":"([^"]+)",')
title = json.loads(match1(html, '"room_name":("[^"]*"),'))
artist = json.loads(match1(html, '"nick_name":("[^"]+"),'))
info.title = u'{} - {}'.format(title, artist)
info.artist = artist
def get_live_info(rate='source'):
data = getlive(self.vid, rate)
self.logger.debug('data:\n' + str(data))
if data['code'] != 'A00000':
return data.get('msg')
data = data['data']
url = data.get('https_flv') or data.get('flv') or data.get('rtmp')
if url:
url = url.replace('rtmp://', 'http://')
ran = random.randrange(1e4)
if '?' in url:
url = '{}&ran={}'.format(url, ran)
else:
url = '{}?ran={}'.format(url, ran)
stream_profile = self.rate_2_profile[rate]
stream_id = self.rate_2_id[rate]
info.stream_types.append(stream_id)
info.streams[stream_id] = {
'video_profile': stream_profile,
'container': 'flv',
'src' : [url],
'size': float('inf')
}
error_msges = []
if rate == 'source':
rate_list = data['rate_list']
if 'source' in rate_list:
rate_list.remove('source')
for rate in rate_list:
error_msg = get_live_info(rate)
if error_msg:
error_msges.append(error_msg)
if error_msges:
return ', '.join(error_msges)
error_msg = get_live_info()
if error_msg:
self.logger.debug('error_msg:\n' + error_msg)
assert len(info.stream_types), error_msg or 'can\'t play this live video!!'
info.stream_types = sorted(info.stream_types, key=self.ids.index)
return info
开发者ID:zhangn1985,项目名称:ykdl,代码行数:53,代码来源:pps.py
示例20: prepare
def prepare(self):
info = VideoInfo(self.name)
html = get_content(self.url)
data = json.loads(match1(html, r'qualities":({.+?}),"'))
self.title = match1(html, r'"video_title"\s*:\s*"(.+?)",')
for stream in self.supported_stream_types:
if stream in info.keys():
url = data[stream][0]["url"]
_, ext, size = url_info(url)
info.stream_types.append(stream)
info.streams[stream] = {'container': ext, 'src': [url], 'size' : size}
return info
开发者ID:PureTV,项目名称:ykdl,代码行数:13,代码来源:dailymotion.py
注:本文中的ykdl.videoinfo.VideoInfo类示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论