diff --git a/README.md b/README.md index ce0c180..476f278 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ 1. 项目使用了很简单的 Python 代码,仅在 Python 3 环境运行测试。 2. 具体所需模块请查看代码中的 import。 -3. 爱奇艺直播里有个参数是加盐的 MD5,使用仓库中的 iqiyi.js。 +3. 爱奇艺直播里有个参数是加盐的 MD5,使用仓库中的 iqiyi.js 获取。 ## 反馈 @@ -18,7 +18,12 @@ ## 更新 -### 2020.05.23:更新17直播、虎牙直播 +### 2020.05.25:更新哔哩哔哩直播。 + +- 默认获取最高画质,不同清晰度取决去请求参数中的 qn。 +- 增加 .m3u8 格式播放链接的获取方法。 + +2020.05.23:更新17直播、虎牙直播 2020.05.19:更新火猫、快手、酷狗、PPS diff --git a/bilibili.py b/bilibili.py index 24fc362..9c98942 100644 --- a/bilibili.py +++ b/bilibili.py @@ -1,6 +1,6 @@ # 获取哔哩哔哩直播的真实流媒体地址。 -# 现在B站直播默认画质改为高清了,更高画质需登陆才可获取。 - +# PC网页和手机APP端的qn=1是最高画质;qn取值0~4。 +# 手机网页端的只找到一个值qn=0。 import requests import re @@ -18,13 +18,14 @@ def get_real_rid(rid): return live_status, room_id -def get_real_url(rid): +def get_real_url_flv(rid): room = get_real_rid(rid) live_status = room[0] room_id = room[1] + qn = 1 # PC网页和手机APP端的qn=1是最高画质;qn取值0~4。 if live_status: try: - room_url = 'https://api.live.bilibili.com/xlive/web-room/v1/index/getRoomPlayInfo?room_id={}&play_url=1&mask=1&qn=0&platform=web'.format(room_id) + room_url = 'https://api.live.bilibili.com/xlive/web-room/v1/index/getRoomPlayInfo?room_id={}&play_url=1&mask=1&qn={}&platform=web'.format(room_id, qn) response = requests.get(url=room_url).json() durl = response.get('data').get('play_url').get('durl', 0) real_url = durl[-1].get('url') @@ -35,6 +36,26 @@ def get_real_url(rid): return real_url +def get_real_url_hls(rid): + room = get_real_rid(rid) + live_status = room[0] + room_id = room[1] + qn = 0 # 手机网页端的只找到一个值qn=0。 + if live_status: + try: + room_url = 'https://api.live.bilibili.com/xlive/web-room/v1/playUrl/playUrl?cid={}&platform=h5&otype=json&quality={}'.format(room_id, qn) + response = requests.get(url=room_url).json() + durl = response.get('data').get('durl', 0) + real_url = durl[-1].get('url') + except: + real_url = '疑似部分国外IP无法GET到正确数据,待验证' + else: + real_url = '未开播或直播间不存在' + return real_url + rid = input('请输入bilibili房间号:\n') -real_url = get_real_url(rid) -print('该直播间源地址为:\n' + real_url) +real_url_flv = get_real_url_flv(rid) +# real_url_hls = get_real_url_hls(rid) +print('该直播间源地址为:') +print(real_url_flv) +# print(real_url_hls)