1 Star 0 Fork 0

cupid_ly / karu

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
bilibili.py 3.05 KB
一键复制 编辑 原始数据 按行查看 历史
yu.liu 提交于 2022-10-29 21:29 . 添加html转markdown脚本
import os
import re
import requests
'''
例子包名:
playurl?cid=285809643&bvid=BV1jy4y117H2&qn=80&type…fnval=80&session=f4050613906412f01562d3e7208f59fe
对应url:
https://api.bilibili.com/x/player/playurl?cid=285809643&bvid=BV1jy4y117H2&qn=80&type=&otype=json&fourk=1&fnver=0&fnval=80&session=f4050613906412f01562d3e7208f59fe
'''
# 正则提取bv号
def bvre(bv):
bv += '&'
rx = '(BV[\S]*?)\\&'
r_bv = re.findall(rx, bv)[0]
print('\nBV:', r_bv)
return r_bv
# 获取视频名称
def name(bv, headers):
url = 'https://www.bilibili.com/video/' + bv
text = requests.get(url, headers=headers).text
tree = etree.HTML(text)
print(text)
name = tree.xpath('//*[@id="viewbox_report"]/h1/span/text()')[0]
return name
# main
if __name__ == '__main__':
saveDir = "/home/liuyu/Videos/bilibili/"
# url = input("api地址:")
url = "https://api.bilibili.com/x/player/playurl?cid=116963870&bvid=BV1sJ411P7CF&qn=0&type=&otype=json&fourk=1&fnver=0&fnval=80&session=e89c7f855899cdf671ed6ee6529b19d9"
bv = bvre(url)
cookie = ''
headers = {
'Referer': 'https://www.bilibili.com/',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36',
'cookie': "%s" % cookie,
}
if os.path.exists(saveDir + "cookie.txt"):
with open(saveDir + 'cookie.txt') as fp:
cookie = fp.read()
cookie = cookie.split('\n')[0]
print('\ncookie:', cookie)
name = name(bv, headers)
# 创建文件夹
if not os.path.exists(saveDir):
os.mkdir(saveDir)
print('\n标题:', name)
print("\n等待响应数据(需要的时间较长)...")
text = requests.get(url, headers=headers).json()
# 视频数据
video_url = text['data']['dash']['video'][0]['baseUrl']
print('\nvideo_url:', video_url)
v_response = requests.get(video_url, headers=headers)
print("\nvideo_url响应码:", v_response.status_code)
if v_response.status_code == 200:
with open(saveDir + "video.mp4", 'wb') as fp1:
fp1.write(v_response.content)
print("视频获取成功\n(若视频清晰度不符,请及时更新cookie值)")
else:
print("视频获取失败")
# 音频数据
audio_url = text['data']['dash']['audio'][0]['baseUrl']
print('\naudio_url:', audio_url)
a_response = requests.get(audio_url, headers=headers)
print("\naudio_url响应码:", a_response.status_code)
if a_response.status_code == 200:
with open(saveDir + "audio.mp3", 'wb') as fp2:
fp2.write(a_response.content)
print("音频获取成功")
else:
print("音频获取失败")
# 合并提示
# ffmpeg -i audio.mp3 -i video.mp4 -acodec copy -vcodec copy output.mp4
if v_response.status_code == 200 and a_response.status_code == 200:
print("\n请使用格式工厂合并\n1.audio.mp4 -> audio.mp3\n2.audio.mp3和video.mp4混流")
with open(saveDir + "list.txt", 'a') as fp2:
fp2.write(saveDir + "%s" % name)
Python
1
https://gitee.com/liuyu_cupid/karu.git
git@gitee.com:liuyu_cupid/karu.git
liuyu_cupid
karu
karu
master

搜索帮助

53164aa7 5694891 3bd8fe86 5694891