吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 279|回复: 1
上一主题 下一主题
收起左侧

[会员申请] 申请会员ID:amumu0406

[复制链接]
跳转到指定楼层
楼主
吾爱游客  发表于 2024-10-21 15:00 回帖奖励 |自己

1、申 请 I D:amumu0406
2、个人邮箱:55654624@qq.com
3、原创技术文章:B站视频下载简单版 python源码

B站视频下载 python源码
一、准备工作
安装 ffmpeg 记住安装的路径
把ffmpeg路径添加到path中
二、源码

from pprint import pprint
import requests
import re
import json
import os
import time

class BiliDown:
    def __init__(self, bili_url):
        self.bili_url = bili_url
        self.title = str()
        self.file_name = int(time.time())

    def get_title(self):
        head = {
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36 Edg/91.0.864.67',
            'Referer': 'https://www.bilibili.com/'
        }

        r = requests.get(self.bili_url, headers=head)

        self.title = re.findall('<title data-vue-meta="true">(.*?)</title>', r.text)[0]
        s = ['\n', ',', '。', ' ', '—', '”', '?', '“', '(', ')', '、', '|']
        for i in s:
            if i == '(' or i == ')':
                self.title = self.title.replace(i, '_')
            self.title = self.title.replace(i, '')
        print(f'视频标题:"{self.title}"')

    def audio_video_data(self):
        head = {
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36 Edg/91.0.864.67',
            'Referer': 'https://www.bilibili.com/'
        }

        r = requests.get(self.bili_url, headers=head)

        # # 通过re获取包含视频和音频地址的json字段
        json_data = re.findall('<script>window.__playinfo__=(.*?)</script>', r.text)[0]
        json_data = json.loads(json_data)

        audio_url = json_data['data']['dash']['audio'][0]['backupUrl'][0]
        print(f'已提取到音频地址:audio_url="{audio_url}"')
        video_url = json_data['data']['dash']['video'][0]['backupUrl'][0]
        video_url = json_data['data']['dash']['video'][0]['baseUrl']
        print(f'已提取到视频地址:video_url="{video_url}"')

        r_audio = requests.get(url=audio_url, headers=head)
        audio_data = r_audio.content
        with open(f"{self.file_name}.mp3", mode='wb') as f:
            f.write(audio_data)
        print('音频下载成功')

        r_video = requests.get(url=video_url, headers=head)
        video_data = r_video.content
        with open(f"{self.file_name}" + '.mp4', mode='wb') as f:
            f.write(video_data)
        print('视频下载完成')

    def audio_video_add(self):
        print('开始合成')
        cmd = f' ffmpeg  -i {self.file_name}.mp4 -i {self.file_name}.mp3 -acodec copy -vcodec copy C:\\Users\\Administrator\\Videos\\bili_{self.title}.mp4'  #修改为自己的保存路径
        # 调用cmd执行ffmpeg程序来合并音频和视频
        os.system(cmd)
        # 删除原来的音频和视频
        os.remove(str(self.file_name) + '.mp4')
        os.remove(str(self.file_name) + '.mp3')
        print('合成结束')

if __name__ == "__main__":
    while True:
        value = input('输入该视频的有效链接地址(输入quit退出):')
        if value == 'quit':
            break
        else:
            url = value
            bilidown = BiliDown(url)
            bilidown.get_title()
            bilidown.audio_video_data()
            bilidown.audio_video_add()

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

沙发
Hmily 发表于 2024-10-22 14:35

抱歉,未能达到申请要求,申请不通过,可以关注论坛官方微信(吾爱破解论坛),等待开放注册通知。

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-23 22:03

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表