太酷了,用Python+Excel制作一个视频下载器!

用Python做一个下载器,从获取数据到编写GUI界面 嗨喽,大家好呀~这里是爱看美女的茜茜呐对于广大书虫而言,没有小说看是最痛苦的,你身边有这样的人吗?今天咱们分享一个小说下载器代码,打包成exe后,发给你的小伙伴也能直接使用… 阅读详情

说起Excel,那绝对是数据处理领域王者般的存在。

而作为网红语言Python,在数据领域也是被广泛使用。

其中Python的第三方库-xlwings,一个Python和Excel的交互工具,可以轻松地通过VBA来调用Python脚本,实现复杂的数据分析。

今天,就给大家介绍一个Python+Excel的项目【视频下载器】。

图片

主要使用到下面这些Python库。

import os
import sys
import ssl
import ffmpeg
import xlwings as xw
from pathlib import Path
from aip import AipSpeech
from pydub import AudioSegment
from wordcloud import WordCloud
from pydub.utils import make_chunks
from moviepy.editor import AudioFileClip

其中ffmpeg、pydub、moviepy是用来处理音视频的,比如裁剪、格式转换等。

aip库则是百度官方库,用来做语音转文字的。

# 安装
pip install baidu-aip

对于xlwings这里就不多说了,想了解的小伙伴,可以去看官方文档。

地址:

https://docs.xlwings.org/en/stable/

下面就给大家来介绍一下吧!

首先调用xlwings模块生成一个项目,命令如下。

# 创建项目
xlwings quickstart transcriber --standalone

这时候我们就能看到有一个项目名称为transcriber的文件夹,这个就是作为我们项目使用的,并且可以修改为任何名字。

图片

其中注意:

\1. transcriber.py,这是带Python代码的文件,内容如下。

import xlwings as xw


def main():
    wb = xw.Book.caller()
    sheet = wb.sheets[0]
    if sheet["A1"].value == "Hello xlwings!":
        sheet["A1"].value = "Bye xlwings!"
    else:
        sheet["A1"].value = "Hello xlwings!"


@xw.func
def hello(name):
    return f"Hello {name}!"


if __name__ == "__main__":
    xw.Book("transcriber.xlsm").set_mock_caller()
    main()

\2. transcriber.xlsm,这是带vba代码的Excel文件,内容如下。

图片

打开Excel文件,提示没有启用宏,所以设置一下。

图片

文件 - 更多 - 选项 - 信任中心 - 信任中心设置 - 宏设置 - 启用所有宏。

然后安装xlwings的Excel集成插件,安装之前需要关闭所有Excel应用,不然会报错。

# 安装xlwings的Excel集成插件
xlwings addin install

xlwings和插件都安装好后,这时候打开Excel,会发现工具栏出现一个xlwings的菜单框,代表xlwings插件安装成功。

它起到一个桥梁的作用,为VBA调用Python脚本牵线搭桥。

图片

此外还需要把“开发工具”添加到功能区,因为我们要用到宏。

配置运行环境,Python执行器,Conda安装路径,Conda虚拟环境路径。

图片

最后点击“开发工具”选项卡,点击Visual Basic - 工具 - 引用 - 添加xlwings。

到此,环境就配置成功了

我们先用之前创建的transcriber.xlsm文件来实验一下,插入一个按钮,指定宏。

图片

点击绿色的按钮,可以看见A1单元格会有信息出现,说明启用宏成功。

这里我们可以把A1单元格名称修改为OUTPUTCELL。

图片

再去修改transcriber.py文件中的代码。

import xlwings as xw


def main():
    wb = xw.Book.caller()
    sheet = wb.sheets[0]
    if sheet["OUTPUTCELL"].value == "Hello":
        sheet["OUTPUTCELL"].value = "Bye"
    else:
        sheet["OUTPUTCELL"].value = "Hello"


@xw.func
def hello(name):
    return f"Hello {name}!"


if __name__ == "__main__":
    xw.Book("transcriber.xlsm").set_mock_caller()
    main()

点击按钮,发现信息有所变,说明可以给单元格指定名称和输出。

图片

了解了xlwings的基本使用,我们就可以对表格进行排版布局一波啦!

图片

给音频转文本,生成字幕词云添加数据验证,其实就是一个列表选项,可选择是或否。

图片

给音频转文本,生成字幕词云添加条件格式,选择是或否后,展示不同的颜色,默认否(淡红色)。

图片

好了,最后修改一下各个单元格的名称。

图片

编写主程序,代码如下。

def main():
    wb = xw.Book.caller()
    sheet = wb.sheets[0]

    bilibili_url = sheet["BILIBILI_URL"].value
    transcribe = sheet["TRANSCRIBE"].value
    wordcloud = sheet["WORDCLOUD"].value
    status_cell = sheet["STATUS_CELL"]

    # 重置状态栏
    status_cell.value = ""

    # 获取程序运行路径
    output_path = Path(__file__).parent
    output_path = str(output_path)

    # 下载
    if bilibili_url:
        status_cell.value = "开始下载音视频文件 ..."
        audio_file = download_bilibili(bilibili_url, status_cell, output_path)
    else:
        status_cell.value = "未输入B站视频地址"
        sys.exit()

    # 语音转文字
    if transcribe == '是':
        transcription_text = transcribe_audio_file(status_cell, audio_file, output_path)

    # 生成词云
    if transcribe == '是' and wordcloud == '是':
        generate_wordcloud(transcription_text, output_path, status_cell)

使用第一个sheet表,不断的更新状态栏信息,判断是否要运行下载、语音转文字、生成词云这三个函数。

下载音视频使用到了you-get库,一键下载几乎所有网站上的音视频。

图片

支持的网站还不少呢,本次就只用B站的视频来测试。

def download_bilibili(bilibili_url, status_cell, output_path):
    """下载音视频"""
    filename = bilibili_url.split('/')[-1].split('?')[0]
    cmd = 'you-get {} -o {} -O {}'.format(bilibili_url, output_path, filename)
    os.system(cmd)

    # 导入视频
    my_audio_clip = AudioFileClip(output_path + "\\{}.flv".format(filename))

    # 提取音频并保存
    audio_file = output_path + "\\{}.wav".format(filename)
    my_audio_clip.write_audiofile(audio_file)

    status_cell.value = f"成功下载B站视频, 并且提取音频: {audio_file}"
    return audio_file

使用moviepy库提取视频中的音频,用于语音识别。

当音频转文本选项的内容是【是】的时候,下面代码就派上用场了。

使用百度的短语音识别技术,需要申请使用,不想用的小伙伴直接两个可选项选择【否】,当做一个下载器即可。

图片

可惜识别最长时间只能是60秒,所以需要将之前获取的音频进行切割。

此外还需要对音频的采样率进行匹配。

def transcribe_audio_file(status_cell, audio_file, output_path):
    """语音转文字"""
    status_cell.value = "开始处理音频文件..."
    old_name = audio_file
    new_name = audio_file.split('.')[0] + '_16000.wav'
    split_name = audio_file.split('.')[0]
    # 对音频进行降频处理
    ffmpeg.input(old_name).output(new_name, ar=16000).run(cmd=FFMPEG_PATH)

    # 切割音频
    audio = AudioSegment.from_file(new_name, "wav")
    # 切割的毫秒数
    size = 30000
    # 将文件切割为30s一块
    chunks = make_chunks(audio, size)
    for i, chunk in enumerate(chunks):
        # 枚举,i是索引,chunk是切割好的文件
        chunk_name = split_name + "_{0}.wav".format(i)
        # 保存文件
        chunk.export(chunk_name, format="wav")

    status_cell.value = "使用百度语音接口识别音频..."
    # 使用百度语音接口
    """ 你的 APPID AK SK """
    APP_ID = ''
    API_KEY = ''
    SECRET_KEY = ''

    client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)

    # 读取文件
    def get_file_content(file_path):
        with open(file_path, 'rb') as fp:
            return fp.read()

    transcription_txt = output_path + "\\transcription.txt"

    # 识别本地文件
    for i, chunk in enumerate(chunks):
        result = client.asr(get_file_content(split_name + "_{0}.wav".format(i)), 'wav', 16000, {
            'dev_pid': 1537  # 默认1537(普通话 输入法模型),dev_pid参数见本节开头的表格
        })

        print(result['result'])
        with open(transcription_txt, "a") as file:
            file.write(result['result'][0])
        file.close()

    status_cell.value = f"音频转文本成功, 文件保存到 {transcription_txt}"
    return transcription_txt

可识别普通话、英语、粤语、四川话识别。通过在请求时配置不同的dev_pid参数,选择对应模型。

最终将音频转为文本,保存在一个文本文件中。

生成词云,这里需要注意添加中文字体路径,要不然词云图显示不了中文。

def generate_wordcloud(textfile, output_path, status_cell):
    """生成词云"""
    textfile = Path(textfile)
    content = textfile.read_text()
    wordcloud = WordCloud(font_path=output_path + '\\simhei.ttf').generate(content)
    wordcloud.to_file(Path(output_path) / f"{textfile.stem}.png")
    status_cell.value = "生成词云图"

项目整体就如上面描述的一样。

此时我们只需打开Excel文件,选择是或否选项,修改B站视频地址,点击开始下载,即可下载视频,以及生成词云图。

无需再去运行Python文件**。**

图片

成功下载到视频,并且对音视频进行处理,得到文本信息。

图片

查看一下词云图吧。

图片

发现百度的语音识别有点差啊,不知道是哪里出现了问题…

好了,本期的分享就到此结束了,有兴趣的小伙伴可以自行去实践学习。

比如制作一个弹幕分析词云图,或者下载其他网站的视频等等。

关于Python学习指南

学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后给大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

包括:Python激活码+安装包、Python web开发,Python爬虫,Python数据分析,人工智能、自动化办公等学习教程。带你从零基础系统性的学好Python!

👉Python所有方向的学习路线👈

Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。(全套教程文末领取)

在这里插入图片描述

👉Python学习视频600合集👈

观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

在这里插入图片描述

温馨提示:篇幅有限,已打包文件夹,获取方式在:文末

👉Python70个实战练手案例&源码👈

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

在这里插入图片描述

👉Python大厂面试资料👈

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

在这里插入图片描述

在这里插入图片描述

👉Python副业兼职路线&方法👈

学好 Python 不论是就业还是做副业赚钱都不错,但要学会兼职接单还是要有一个学习规划。

在这里插入图片描述

👉 这份完整版的Python全套学习资料已经上传,朋友们如果需要可以扫描下方优快云官方认证二维码或者点击链接免费领取【保证100%免费】

泰裤辣,用Python+Excel制作一个视频下载器,手把手教学讲解 说起Excel,那绝对是数据处理领域王者般的存在。而作为网红语言Python,在数据领域也是被广泛使用。其中Python的第三方库-xlwings,一个Python和Excel的交互工具,可以轻松地通过VBA来调用Python脚本,实现复杂的数据分析。今天,就给大家介绍一个Python+Excel的项目【视频下载器】。... 阅读详情

相关推荐

【Python工具】Python实现一款支持各大平台的视频下载器 | 附源码

相关文件 想学Python的小伙伴可以关注小编的公众号【Python日志】 有很多的资源可以白嫖的哈,不定时会更新一下Python的小知识的哈!! 需要源码的小伙伴可以在公众号回复视频下载器 Python源码、问题解答学习交流群:773162165 简介 一款简单易用的视频下载器,目前支持的平台如下: 开发环境 Python版本:3.7.8 相关模块: requests模块; tqdm模块; pyfreeproxy模块; pyecharts模块; 以及一些python自带的模块。 环境搭建 安装Python

Gtieguo的博客 1846

自己写一个下载器,速度堪比IDM下载器

自己写一个下载器,速度堪比IDM下载器

791

Python编写下载器详解

各类资料学习下载合集​​在现代应用程序中,下载器是一个非常实用的功能,可以帮助用户从网络上获取文件。本文将重点介绍如何使用Python编写一个简单的文件下载器,详细阐述其实现过程、代码示例及运行结果。

Web安全工具库 607

【从零开始制作 bt 下载器】一、了解 torrent 文件

【从零开始制作 bt 下载器】一、了解 torrent 文件

lhys666的博客 3756

用Python打造批量下载视频并能可视化下载进度的炫酷下载器

在实现过程中,我们需要注意一些关键点。首先,我们需要正确解析网页HTML代码来获取视频链接,这需要一定的网页结构知识和HTML解析技巧。其次,我们需要合理地组织代码结构,使得程序易于维护和扩展。最后,我们需要考虑如何处理下载过程中的异常情况,如网络中断或链接无效等。通过这个项目,我们可以学习到如何使用Python进行网络请求、HTML解析和多线程编程等方面的知识。同时,我们也可以了解如何优化代码性能和用户体验等方面的技巧。最终,我们将能够创建一个功能强大、易于使用的批量下载视频的炫酷下载器。

这家伙很懒,什么都没有留下 1341

[XJTUSE DATABASE]——第三章 关系数据库标准语言SQL

新年了,来个大的,写了好几天,将近9000字,希望对大家有所帮助

weixin_47692652的博客 3121

太酷了,用Python+Excel制作一个视频下载器

说起Excel,那绝对是数据处理领域王者般的存在。而作为网红语言Python,在数据领域也是被广泛使用。其中Python的第三方库-xlwings,一个Python和Excel的交互工具,可以轻松地通过VBA来调用Python脚本,实现复杂的数据分析。今天,就给大家介绍一个Python+Excel的项目【视频下载器】。主要使用到下面这些Python库。 其中ffmpeg、pydub、moviepy是用来处理音视频的,比如裁剪、格式转换等。aip库则是百度官方库,用来做语音转文字的。 对于xlwing

sixqingfeng的博客 334

25年PINN创新点大盘点!

在科研论文的激烈角逐中,想轻松产出高含金量成果?物理信息神经网络(PINN)堪称“宝藏研究方向”,是冲击高分区论文的绝佳赛道!对于渴望发表优质论文的科研伙伴,这三大研究路径值得重点关注。首先是自适应PINN,在PINN训练过程中,物理方程与实测数据间的矛盾常常导致权重调节困难,而恰好直击这一痛点,是极具价值的研究方向。其次,同样前景广阔,传统多物理场同时训练效果欠佳,如今分阶段训练方法脱颖而出,成效显著且竞争较小。最后,探索及多任务学习等技术的融合,能实现优势叠加,碰撞出创新火花。

Malaai的博客 1971

[Python]Python写的下载视频的工具

Python]Python写的爬取视频这是一个用于下载视频的GUI工具(视频只能作为测试所用)。让我来解释一下代码的功能。首先,我们导入了必要的模块,包括tkinter用于构建GUI界面,yt_dlp用于下载视频,以及os用于处理文件路径和环境变量。接下来,我们获取当前脚本所在的文件夹路径,并构建了ffmpeg库文件夹的完整路径。然后,我们将该路径添加到环境变量PATH中,以便能够正确执行ffmpeg命令。然后,我们定义了一个名为progress_hook的函数,用于更新下载进度条。

weixin_45338336的博客 1593

手把手教你用ECharts打造炫酷3D饼图(附完整源码)

本文详细介绍了如何使用ECharts创建炫酷的3D饼图,从环境配置到完整源码实现,涵盖参数解析、视觉优化和交互增强技巧。通过实战案例,帮助开发者快速掌握3D数据可视化技术,提升数据展示效果。

weixin_29031057的博客 281

光学防抖OIS介绍与标定

前言:先看一下有无ois系统的效果。 1. OIS系统的作用就是消除镜头的抖动。 Gyro感受方向,Hall感受位移,Actuator驱动马达来矫正抖动方向和位移。 2.ois系统的结构构成 从上面来看ois系统主要有Hall,...

camerall 1万+

python 视频下载器

download_button = tk.Button(root, text="开始下载", command=start_download)messagebox.showwarning("输入错误", "数量必须大于0.")messagebox.showerror("输入错误", "请输入数字.")num_label = tk.Label(root, text="下载文件的数量:")url_label = tk.Label(root, text="请求的地址:")# 下载成功后,将进度信息放入队列。

qq_39056048的博客 484

YOLOv9改进策略【注意力机制篇】| 添加SE、CBAM、ECA、CA、Swin Transformer等注意力和多头注意力机制

这篇文章带来一个经典注意力模块的汇总,虽然有些模块已经发布很久了,但后续的注意力模块也都是在此基础之上进行改进的,对于初学者来说还是有必要去学习了解一下,以加深对模块,模型的理解。

Limiiiing的博客 2894

python爬虫教程,爬取任意网站上面的视频!

前言 对于Python爬虫很多人都不陌生,可以用它来批量下载文字、图片、视频等,其中涉及的知识点也是比较多的,但是Python中有一个方法,一行代码就能爬取任意网站上面的视频,只要你安装了Python环境就可以,哪怕是小白也能轻松学会。 You-Get You-Get是一个基于 Python 3 的下载工具。使用 You-Get 可以很轻松的下载到网络上的视频、图片及音乐。 1.安装P...

PythonJavaPHP的博客 1万+

2026年【江苏“信息与未来”编程思维】真题及题解(T6:桌面游戏)

2026年【江苏“信息与未来”编程思维】真题及题解(T6:桌面游戏)

王老师青少年编程 537

第1章第11节:创建可容纳多行滚动文字的输入框TextEditor [SwiftUI快速入门到实战]

TextField可以让用户输入单行的文字内容,若想输入多行的文字内容,可以使用能够容纳多行滚动文字的 TextEditor。 定义一个字符串属性,用来存储用户输入的文字内容。接着定义一个布尔属性,用来标识是否弹出警告窗口,以显示用户输入的内容。 TextEditor是由UIKit中的UITextView演变而来,因此可以在init方法中,通过UITextView修改TextEditor的外观属性。 添加一个VStack视图,作为子视图的容器。 创建一个TextEditor,Te..

互动教程网[www.hdjc8.com] 832

Python:只需20行代码,一键下载网络热门短剧,简直不要太爽!

网络短剧铺天盖地,主打的就是一个爽字,但有有些博主就是不当人,喜欢一剪没,正当我们看的津津有味的时候,进度条却到底了!!!对于大家来说,想看续集,都是全凭实力刷续集。如果这时候你会Python的话,那就不会有这些烦恼了,只需20行代码,分分钟下载全集!话不多说,我们直接开整!

2301_78095812的博客 3381

基于FPGA的多通道音频信号采样系统设计

FPGA是随着数字集成电路的发展而逐步演变而来的。从早期的电子管、晶体管、小规模集成电路,到超大规模集成电路(VLSIC),数字集成电路的集成度和性能不断提升。FPGA的出现为系统设计师提供了灵活的设计平台,使其能够在不依赖半导体厂商的情况下快速设计专用集成电路(ASIC)。FPGA具有设计周期短、成本低、开发工具先进等优点,广泛应用于原型设计和产品生产中。VHDL是一种用于描述数字系统的硬件描述语言,其语言形式类似于计算机高级语言,但包含了许多硬件特征语句。

qq_62634009的博客 709

制作工具下载器 by tkinter

前言 这是一次想 实现进度条功能 而引发的小程序开发,越做发现涉及的东西越多,本文只做简单成效实现过程的描述,优化项目以后再做补充。 目录 前言 目录 概述 源代码 实现下载器功能 实现 exe 封装 后记 概述 先上效果图 功能介绍 该下载器只能下载已知工具包(即将例如 QQ、p...

nimo97 1448

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

自制简易STM32脱机下载器

应公司需求,自制一个简易的脱机下载器,下载器配合上位机将需要烧录的hex文件下载到下载器的flash里面保存,即可通过下载器脱机给STM32下载程序,支持STM32大部分型号。下载器是通过SWD协议给目标STM32下载,操作傻瓜。下载器有两个存储区,可以保存两个程序,可以分别对两种MCU下载程序。

余浩的博客 5599

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Python:教你如何实现多线程下载器

Python 实现多线程下载器

有意栽花花不发,无心插柳柳成荫。 7687

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

2024年2月最新python批量下载快手个人主页短视频代码(带翻页)

python批量下载快手个人主页短视频代码,2024年1月27日测试过了,如果日后更新了,私聊我快手个人主页分视频和直播回放,直播回放的地址是m3u8,视频的地址是mp4m3u8我采用的是hm3u8dl_cli这个库就行下载,带进度条下面的代码需要以下模块。

svip2242257464的博客 3万+

Python实现文件的下载(包人性化的)

python制作简易下载器

w14785050252的博客 3062

【Python】非常优秀的网站视频下载工具:You-Get

【You-Get】一键下载几乎所有网站上的音视频。它是一个非常优秀的网站视频下载工具。可以很轻松的下载到网络上的视频、图片及音乐。

浪荡子爱自由的博客 7103

一行代码下载网页视频!

今天给大家分享下如果用Python下载网页的视频,只需要一行代码就可 首先电脑必须安装个python,没有的可以去官网下载,也可以在我们公众号发送今天文末的关键字获取安装包。 安装的时候记得把下面两个√都√上,然后默认安装即可,软件很小,安装很快。 以解决B站以及腾讯视频或者网页视频,没什么技术含量,很是方便。 首先按快捷键win+R输入cmd,进入cmd窗口。 输入python,出现下面的显示,说明安装成功。 然后随意在电脑磁盘大的盘创建个文件夹来存储视频,接着在输入框上输入cmd

qq_41822490的博客 6985

【Python】一个小工具竟是万能视频下载神器?

You-Get 是一个使用Python开发的小型命令行实用程序,可以通过一行命令直接从Web下载媒体内容(视频,音频,图像)等,不用任何配置。这款工具支持的站点特别多,比如Youtube、优酷、腾讯视频、网易云音乐、Ted、知乎等等主流网站,可以说几乎是万能的,在本文最下方的附录可查看 You-Get 支持的完整网站列表。

liaozp88的博客 1573
上一篇: Python 命令行参数化的几种方式
下一篇: 使用Python shutil库进行文件和目录操作
普通网友
博客等级 码龄3年 4493粉丝 309原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值