真爱公式 发表于 2023-3-8 00:43:21

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

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

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

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

[*]评论
[*]弹幕
[*]视频
效果展示

我们来看看实现效果吧

代码实战

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

网址我屏蔽了,防止误杀。
获取视频
import requests
import re
import json
from pprint importpprint
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状态码 表示请求成功
    response = requests.get(url=url, headers=headers)

    # 获取视频标题
    title = re.findall('"title":"(.*?)","pubdate"', response.text).replace(' ', '')
    # 获取视频数据信息 前端标签两个两个一起
    html_data = re.findall('', response.text)
    # 转换数据类型字符串数据转成json字典数据类型
    json_data = json.loads(html_data)
    # print打印字典数据, 输出一行内容 print(json_data)
    # pprint 打印字典数据, 格式化输出 展开效果 pprint(json_data)
    # 字典数据 B站数据 音频和视频分开的 根据冒号左边的内容, 提取冒号右边的内容 键值对取值
    audio_url = json_data['data']['dash']['audio']['baseUrl']
    video_url = json_data['data']['dash']['video']['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 
采集弹幕
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)    title = re.findall('
页: [1]
查看完整版本: Python写一个下载B站内容的GUI工具,视频、弹幕、评论都能下载,真的太方便