本帖最后由 话痨司机啊 于 2023-2-19 11:01 编辑
如果有问题,请粘贴log日志,对于增加功能,以后有时间会慢慢增加! 说明
软件仅供学习交流使用,禁止商业使用,禁止用来做危害网络安全的事情,因错误使用造成的危害由使用者负责。
- Ctrl+C或者点右上角的关闭窗口按钮停止录播
- 如果cookie过期会要求你粘贴cookie(请百度查如何粘贴cookie)
优点
- 自动检测cookie过期
- 有录屏时间显示
- 支持多开,一个窗口可以录一个主播
- 增加随机监测时间(反爬机制)
缺点
- 无Ui界面
- 软件本身不支持多主播录屏,可多开,根据自己家的CPU核心数开,一个程序占用一个进程。
- 写代码是爱好,不是做程序的程序员,写的不是非常好
点此下载 提取码:Rbss
更新(2023.02.19)
更新了录制源码与退出源
核心代码:
def requests_checker_video(url):
global headers,cookie_catch_fail
headers = until.get_headers()
i = 0
while i <= 2:
cookie = until.read_cookie()
i += 1
if cookie:
headers['cookie'] = cookie
break
res = requests.get(url, headers=headers)
try:
js = res.json()
if js:
logger.warning(js.get('errMsg'))
app.stop_threads = True
ffmpeg.rec_sign = False
except:
html = etree.HTML(res.text)
script_text = html.xpath('//script[last()]/text()')
script_text = script_text[1].split('=',1)[-1][:-4].rsplit(';',3)[0]
script_dict = json.loads(script_text)
_type = script_dict.get('liveroom').get('errorType').get('type')
if _type == 1:
cookie_catch_fail = False
ffmpeg.rec_sign = True
return script_dict
elif _type == 2:
ffmpeg.rec_sign = False
if not html.xpath('//video'):
cookie_catch_fail = True
logger.info('cookie已经过期')
headers['cookie'] = input('请输入cookie:')
until.write_cookie(headers['cookie'])
def get_stream_url(script_dict):
try:
liveroom = script_dict.get('liveroom')
liveStream = liveroom.get('liveStream')
caption = liveStream.get('caption') # 标题
author_name = liveroom.get('author').get('name')
representation = liveStream.get('playUrls')[0].get('adaptationSet').get('representation')
for l in representation:
if '蓝光 8M' in l['name']:
return l['url'],author_name,caption
elif '超清' in l['name']:
return l['url'],author_name,caption
elif '高清' in l['name']:
return l['url'],author_name,caption
except:
logger.error('获取视频地址失败')
raise IndexError
|