翼度科技»论坛 编程开发 python 查看内容

Python写一个下载B站内容的GUI工具,视频、弹幕、评论都能下载,真的太方便

3

主题

3

帖子

9

积分

新手上路

Rank: 1

积分
9
今天我们分享一个用Python写下载视频+弹幕+评论的代码。
之前自游写了采集小破站视频、弹幕、评论的代码,还录了视频。
我当时就问他,你就不能把这些写成GUI,把这些功能放到一起不是别人用起来更方便么?
本来他还想反抗,当时我就直接叫他看着办!

他哪受得了这种委屈,当时就乖乖写代码去了,现在我把代码分享给大家。
本次要实现的功能

咱们本次先简单的实现一下

  • 评论
  • 弹幕
  • 视频
效果展示

我们来看看实现效果吧

代码实战

主要代码分为界面和采集部分
获取数据

网址我屏蔽了,防止误杀。
获取视频
  1. import requests
  2. import re
  3. import json
  4. from pprint import  pprint
  5. import subprocess
  6. import os
  7. # 完整源码直接加这个Q裙领取 872937351
  8. def Video(bv_id):
  9.     url = f'https://www.***.com/video/{bv_id}'
  10.     headers = {
  11.         # 防盗链
  12.         'referer': 'https://www.***.com/video/',
  13.         # 浏览器基本身份标识 表示浏览器
  14.         'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Safari/537.36'
  15.     }
  16.     # 发送请求 ---> <Response [200]> 响应对象,  200状态码 表示请求成功
  17.     response = requests.get(url=url, headers=headers)
  18.     # 获取视频标题
  19.     title = re.findall('"title":"(.*?)","pubdate"', response.text)[0].replace(' ', '')
  20.     # 获取视频数据信息 前端标签两个两个一起
  21.     html_data = re.findall('', response.text)[0]
  22.     # 转换数据类型  字符串数据转成json字典数据类型
  23.     json_data = json.loads(html_data)
  24.     # print打印字典数据, 输出一行内容 print(json_data)
  25.     # pprint 打印字典数据, 格式化输出 展开效果 pprint(json_data)
  26.     # 字典数据 B站数据 音频和视频分开的 根据冒号左边的内容, 提取冒号右边的内容 键值对取值
  27.     audio_url = json_data['data']['dash']['audio'][0]['baseUrl']
  28.     video_url = json_data['data']['dash']['video'][0]['baseUrl']
  29.     # 403 Forbidden 没有访问权限.....
  30.     audio_content = requests.get(url=audio_url, headers=headers).content
  31.     video_content = requests.get(url=video_url, headers=headers).content
  32.     if not os.path.exists('video\\'):
  33.         os.mkdir('video\\')
  34.     with open('video\\' + title + '.mp3', mode='wb') as audio:
  35.         audio.write(audio_content)
  36.     with open('video\\' + title + '.mp4', mode='wb') as video:
  37.         video.write(video_content)
  38.     # 获取音频内容以及视频画面内容
  39.     cmd = f"ffmpeg -i video\\{title}.mp4 -i video\\{title}.mp3 -c:v copy -c:a aac -strict experimental video\\{title}output.mp4"
  40.     subprocess.run(cmd, shell=True)
  41.     os.remove(f'video\\{title}.mp4')
  42.     os.remove(f'video\\{title}.mp3')
  43.     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

举报 回复 使用道具