Python写一个下载B站内容的GUI工具,视频、弹幕、评论都能下载,真的太方便
|
今天我们分享一个用Python写下载视频+弹幕+评论的代码。
之前自游写了采集小破站视频、弹幕、评论的代码,还录了视频。
我当时就问他,你就不能把这些写成GUI,把这些功能放到一起不是别人用起来更方便么?
本来他还想反抗,当时我就直接叫他看着办!
他哪受得了这种委屈,当时就乖乖写代码去了,现在我把代码分享给大家。
本次要实现的功能
咱们本次先简单的实现一下
效果展示
我们来看看实现效果吧
代码实战
主要代码分为界面和采集部分
获取数据
网址我屏蔽了,防止误杀。
获取视频- import requests
- import re
- import json
- from pprint import pprint
- import subprocess
- import os
- # 完整源码直接加这个Q裙领取 872937351
- def Video(bv_id):
- url = f'https://www.***.com/video/{bv_id}'
- headers = {
- # 防盗链
- 'referer': 'https://www.***.com/video/',
- # 浏览器基本身份标识 表示浏览器
- 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Safari/537.36'
- }
- # 发送请求 ---> <Response [200]> 响应对象, 200状态码 表示请求成功
- response = requests.get(url=url, headers=headers)
- # 获取视频标题
- title = re.findall('"title":"(.*?)","pubdate"', response.text)[0].replace(' ', '')
- # 获取视频数据信息 前端标签两个两个一起
- html_data = re.findall('', response.text)[0]
- # 转换数据类型 字符串数据转成json字典数据类型
- json_data = json.loads(html_data)
- # print打印字典数据, 输出一行内容 print(json_data)
- # pprint 打印字典数据, 格式化输出 展开效果 pprint(json_data)
- # 字典数据 B站数据 音频和视频分开的 根据冒号左边的内容, 提取冒号右边的内容 键值对取值
- audio_url = json_data['data']['dash']['audio'][0]['baseUrl']
- video_url = json_data['data']['dash']['video'][0]['baseUrl']
- # 403 Forbidden 没有访问权限.....
- audio_content = requests.get(url=audio_url, headers=headers).content
- video_content = requests.get(url=video_url, headers=headers).content
- if not os.path.exists('video\\'):
- os.mkdir('video\\')
- with open('video\\' + title + '.mp3', mode='wb') as audio:
- audio.write(audio_content)
- with open('video\\' + title + '.mp4', mode='wb') as video:
- video.write(video_content)
- # 获取音频内容以及视频画面内容
- cmd = f"ffmpeg -i video\\{title}.mp4 -i video\\{title}.mp3 -c:v copy -c:a aac -strict experimental video\\{title}output.mp4"
- subprocess.run(cmd, shell=True)
- os.remove(f'video\\{title}.mp4')
- os.remove(f'video\\{title}.mp3')
- return title
复制代码
采集弹幕
[code]import requestsimport reimport osdef get_response(html_url): headers = { 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Safari/537.36' } response = requests.get(url=html_url, headers=headers) response.encoding = response.apparent_encoding return responsedef get_Dm_url(bv_id): link = f'https://www.***.com/video/{bv_id}/' html_data = get_response(link).text Dm_url = re.findall('弹幕', html_data)[0] title = re.findall(' |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|
|
|
发表于 2023-3-8 00:43:21
举报
回复
分享
|
|
|
|