欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

利用Python+Excel制作一個視頻下載器

 更新時間:2022年05月30日 08:35:26   作者:小F  
說起Excel,那絕對是數(shù)據(jù)處理領(lǐng)域王者般的存在。而作為網(wǎng)紅語言Python,在數(shù)據(jù)領(lǐng)域也是被廣泛使用。本文將利用Python和Excel制作一個視頻下載器,需要的可以參考一下

說起Excel,那絕對是數(shù)據(jù)處理領(lǐng)域王者般的存在。

而作為網(wǎng)紅語言Python,在數(shù)據(jù)領(lǐng)域也是被廣泛使用。

其中Python的第三方庫-xlwings,一個Python和Excel的交互工具,可以輕松地通過VBA來調(diào)用Python腳本,實現(xiàn)復(fù)雜的數(shù)據(jù)分析。

今天,小F就給大家介紹一個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是用來處理音視頻的,比如裁剪、格式轉(zhuǎn)換等。

aip庫則是百度官方庫,用來做語音轉(zhuǎn)文字的。

# 安裝
pip install baidu-aip

對于xlwings這里就不多說了,想了解的小伙伴,可以去看官方文檔。

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

下面就給大家來介紹一下吧!

首先調(diào)用xlwings模塊生成一個項目,命令如下。

# 創(chuàng)建項目
xlwings quickstart transcriber --standalone

這時候我們就能看到有一個項目名稱為transcriber的文件夾,這個就是作為我們項目使用的,并且可以修改為任何名字。

其中注意: 

1. transcriber.py,這是帶Python代碼的文件,內(nèi)容如下。

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文件,內(nèi)容如下。

打開Excel文件,提示沒有啟用宏,所以設(shè)置一下。

文件 - 更多 - 選項 - 信任中心 - 信任中心設(shè)置 - 宏設(shè)置 - 啟用所有宏。

然后安裝xlwings的Excel集成插件,安裝之前需要關(guān)閉所有Excel應(yīng)用,不然會報錯。

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

xlwings和插件都安裝好后,這時候打開Excel,會發(fā)現(xiàn)工具欄出現(xiàn)一個xlwings的菜單框,代表xlwings插件安裝成功。

它起到一個橋梁的作用,為VBA調(diào)用Python腳本牽線搭橋。

此外還需要把“開發(fā)工具”添加到功能區(qū),因為我們要用到宏。

配置運行環(huán)境,Python執(zhí)行器,Conda安裝路徑,Conda虛擬環(huán)境路徑。

最后點擊“開發(fā)工具”選項卡,點擊Visual Basic - 工具 - 引用 - 添加xlwings。

到此,環(huán)境就配置成功了。

我們先用之前創(chuàng)建的transcriber.xlsm文件來實驗一下,插入一個按鈕,指定宏。

點擊綠色的按鈕,可以看見A1單元格會有信息出現(xiàn),說明啟用宏成功。

這里我們可以把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()

點擊按鈕,發(fā)現(xiàn)信息有所變,說明可以給單元格指定名稱和輸出。

了解了xlwings的基本使用,我們就可以對表格進(jìn)行排版布局一波啦!

給音頻轉(zhuǎn)文本,生成字幕詞云添加數(shù)據(jù)驗證,其實就是一個列表選項,可選擇是或否。

給音頻轉(zhuǎn)文本,生成字幕詞云添加條件格式,選擇是或否后,展示不同的顏色,默認(rèn)否(淡紅色)。

好了,最后修改一下各個單元格的名稱。

編寫主程序,代碼如下。

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"]

    # 重置狀態(tài)欄
    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()

    # 語音轉(zhuǎn)文字
    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表,不斷的更新狀態(tài)欄信息,判斷是否要運行下載、語音轉(zhuǎn)文字、生成詞云這三個函數(shù)。

下載音視頻使用到了you-get庫,一鍵下載幾乎所有網(wǎng)站上的音視頻。

支持的網(wǎng)站還不少呢,本次就只用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)

    # 導(dǎo)入視頻
    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庫提取視頻中的音頻,用于語音識別。

當(dāng)音頻轉(zhuǎn)文本選項的內(nèi)容是【是】的時候,下面代碼就派上用場了。

使用百度的短語音識別技術(shù),需要申請使用,不想用的小伙伴直接兩個可選項選擇【否】,當(dāng)做一個下載器即可。

可惜識別最長時間只能是60秒,所以需要將之前獲取的音頻進(jìn)行切割。

此外還需要對音頻的采樣率進(jìn)行匹配。

def transcribe_audio_file(status_cell, audio_file, output_path):
    """語音轉(zhuǎn)文字"""
    status_cell.value = "開始處理音頻文件..."
    old_name = audio_file
    new_name = audio_file.split('.')[0] + '_16000.wav'
    split_name = audio_file.split('.')[0]
    # 對音頻進(jìn)行降頻處理
    ffmpeg.input(old_name).output(new_name, ar=16000).run(cmd=FFMPEG_PATH)

    # 切割音頻
    audio = AudioSegment.from_file(new_name, "wav")
    # 切割的毫秒數(shù)
    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  # 默認(rèn)1537(普通話 輸入法模型),dev_pid參數(shù)見本節(jié)開頭的表格
        })

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

    status_cell.value = f"音頻轉(zhuǎn)文本成功, 文件保存到 {transcription_txt}"
    return transcription_txt

可識別普通話、英語、粵語、四川話識別。通過在請求時配置不同的dev_pid參數(shù),選擇對應(yīng)模型。

最終將音頻轉(zhuǎn)為文本,保存在一個文本文件中。

生成詞云,這里需要注意添加中文字體路徑,要不然詞云圖顯示不了中文。

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文件。

成功下載到視頻,并且對音視頻進(jìn)行處理,得到文本信息。

查看一下詞云圖吧。

發(fā)現(xiàn)百度的語音識別有點差啊,不知道是哪里出現(xiàn)了問題...

以上就是利用Python+Excel制作一個視頻下載器的詳細(xì)內(nèi)容,更多關(guān)于Python Excel視頻下載器的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Python基于回溯法子集樹模板實現(xiàn)8皇后問題

    Python基于回溯法子集樹模板實現(xiàn)8皇后問題

    這篇文章主要介紹了Python基于回溯法子集樹模板實現(xiàn)8皇后問題,簡單說明了8皇后問題的原理并結(jié)合實例形式分析了Python回溯法子集樹模板解決8皇后問題的具體實現(xiàn)技巧,需要的朋友可以參考下
    2017-09-09
  • Python繪制雷達(dá)圖時遇到的坑的解決

    Python繪制雷達(dá)圖時遇到的坑的解決

    這篇文章主要介紹了Python繪制雷達(dá)圖時遇到的坑的解決,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • python常用小腳本實例總結(jié)

    python常用小腳本實例總結(jié)

    在日常的工作中我們總會面臨到各式各樣的問題,下面這篇文章主要給大家介紹了關(guān)于python常用小腳本的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-07-07
  • python字符串排序方法

    python字符串排序方法

    這篇文章主要介紹了python字符串排序方法,基于lambda實現(xiàn),是非常實用的技巧,需要的朋友可以參考下
    2014-08-08
  • python3安裝及pip3報ERROR:No?matching?distribution?found?for解決方法

    python3安裝及pip3報ERROR:No?matching?distribution?found?for解

    這篇文章主要給大家介紹了關(guān)于python3安裝及pip3報ERROR:No?matching?distribution?found?for解決的相關(guān)資料,文中通過代碼以及圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2023-08-08
  • 基于Python制作一個多進(jìn)制轉(zhuǎn)換工具

    基于Python制作一個多進(jìn)制轉(zhuǎn)換工具

    這篇文章主要介紹了如何利用Python制作一個多進(jìn)制轉(zhuǎn)換工具,可以實現(xiàn)2進(jìn)制、4進(jìn)制、8進(jìn)制、10進(jìn)制、16進(jìn)制、32進(jìn)制直接的互轉(zhuǎn),需要的可以參考一下
    2022-02-02
  • Python中的并發(fā)編程實例

    Python中的并發(fā)編程實例

    這篇文章主要介紹了Python中的并發(fā)編程實例,主要是對Threading模塊的應(yīng)用,文中自定義了一個Threading類庫,需要的朋友可以參考下
    2014-07-07
  • Windows下實現(xiàn)pytorch環(huán)境搭建

    Windows下實現(xiàn)pytorch環(huán)境搭建

    這篇文章主要介紹了Windows下實現(xiàn)pytorch環(huán)境搭建,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • 解決python3 pika之連接斷開的問題

    解決python3 pika之連接斷開的問題

    今天小編就為大家分享一篇解決python3 pika之連接斷開的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-12-12
  • 基于Python實現(xiàn)語音合成小工具

    基于Python實現(xiàn)語音合成小工具

    TTS(Text To Speech)是一種語音合成技術(shù),可以讓機(jī)器將輸入文本以語音的方式播放出來,實現(xiàn)機(jī)器說話的效果。本文將使用pyttsx3庫作為示范,編寫一個語音合成小工具,感興趣的可以了解一下
    2022-12-12

最新評論