[PyQt5 ]建立GUI 通過 yt-dlp來下載 YT

更新於 發佈於 閱讀時間約 10 分鐘

本篇文章將帶你一步步建立一個簡單的 PyQt5 GUI 應用程式,通過 yt-dlp 來下載 YT 視頻。你可以在這個應用中輸入視頻的 URL,並即時看到下載進度。


GUI介面

raw-image

下載到開啟的資料夾路徑

raw-image

前置條件

在開始之前,請確保你已經安裝了以下軟體和庫:

  1. 安裝 Python 確保你的系統安裝了 Python(3.7 及以上版本)。你可以在命令行中輸入以下命令來檢查版本:
    python --version
    若未安裝,可以前往 Python 官方網站 下載並安裝。
  2. 安裝 PyQt5 PyQt5 是 Python 的一個圖形界面庫,允許你創建桌面應用。使用以下命令安裝:
    pip install pyqt5
  3. 安裝 yt-dlp yt-dlp 是一個強大的視頻下載工具,可以用來下載 YouTube 和其他網站上的視頻。使用以下命令安裝:
    pip install yt-dlp

程式設計:建立 PyQt5 下載器

以下是程式碼,將展示如何使用 PyQt5 創建一個簡單的 GUI 下載工具,並結合 yt-dlp 來下載視頻。

import sys
from PyQt5.QtWidgets import QApplication, QVBoxLayout, QLineEdit, QPushButton, QLabel, QWidget
from PyQt5.QtCore import QThread, pyqtSignal
import subprocess

class DownloadThread(QThread):
update_label = pyqtSignal(str)

def __init__(self, url, parent=None):
super().__init__(parent)
self.url = url

def run(self):
try:
self.update_label.emit("正在處理...") # 初始狀態
# 使用 yt-dlp 下載
process = subprocess.Popen(
['yt-dlp', '--progress', '--newline', self.url], # 啟動 yt-dlp 進行下載
stdout=subprocess.PIPE, # 捕獲標準輸出
stderr=subprocess.PIPE, # 捕獲錯誤輸出
text=True # 開啟文本模式
)
# 實時捕獲輸出,並將其更新到 UI
for line in process.stdout:
self.update_label.emit(line.strip())
process.wait() # 等待下載完成

# 判斷下載是否成功
if process.returncode == 0:
self.update_label.emit("下載完成!")
else:
self.update_label.emit("下載失敗,請檢查網址是否正確。")
except Exception as e:
self.update_label.emit(f"錯誤:{e}") # 顯示錯誤信息

class DownloadApp(QWidget):
def __init__(self):
super().__init__()
self.init_ui()

def init_ui(self):
self.setWindowTitle("YT 下載器") # 設定視窗標題

layout = QVBoxLayout() # 垂直布局

# 輸入框
self.url_input = QLineEdit(self)
self.url_input.setPlaceholderText("請輸入YT視頻網址") # 提示文本
layout.addWidget(self.url_input)

# 下載按鈕
self.download_button = QPushButton("下載", self)
self.download_button.clicked.connect(self.start_download) # 按下按鈕時觸發下載
layout.addWidget(self.download_button)

# 狀態標籤
self.status_label = QLabel("狀態:等待輸入網址", self)
layout.addWidget(self.status_label)

self.setLayout(layout)

def start_download(self):
url = self.url_input.text().strip() # 獲取輸入的網址
if not url:
self.status_label.setText("狀態:請輸入有效的網址") # 若網址無效,顯示提示
return

self.status_label.setText("狀態:正在處理...") # 顯示正在處理的訊息
# 創建下載線程,並開始下載
self.download_thread = DownloadThread(url)
self.download_thread.update_label.connect(self.update_status) # 更新 UI
self.download_thread.start()

def update_status(self, message):
self.status_label.setText(f"狀態:{message}") # 顯示當前狀態

if __name__ == "__main__":
app = QApplication(sys.argv)
window = DownloadApp()
window.resize(400, 200) # 設定視窗大小
window.show() # 顯示視窗
sys.exit(app.exec_()) # 進入主事件循環

程式碼說明

1. 下載線程 (DownloadThread)

  • DownloadThread 類別繼承自 QThread,負責執行視頻下載任務。使用 yt-dlp 命令行工具下載視頻,並通過 stdout 實時捕獲下載過程的輸出。
  • 當下載過程有輸出時,它會觸發 update_label 信號,更新 UI 上的標籤顯示下載進度或錯誤訊息。

2. 主要應用 (DownloadApp)

  • DownloadApp 類別是應用的主界面,包含一個輸入框(QLineEdit)、一個下載按鈕(QPushButton)和一個顯示下載狀態的標籤(QLabel)。
  • 用戶輸入視頻的 URL,並按下下載按鈕後,啟動下載線程。下載過程中的信息會通過信號更新顯示。

3. 使用 yt-dlp 下載視頻

  • 使用 subprocess.Popen 啟動 yt-dlp 下載視頻,並實時捕獲輸出來更新下載進度。
  • 支援進度條、錯誤訊息顯示等功能。

使用方法

  1. 執行程式後,輸入 YouTube 視頻的 URL。
  2. 點擊「下載」按鈕,開始下載。
  3. 下載過程會顯示在界面上的標籤中,並且會顯示進度。

注意事項

  • 合法性:請遵守版權法規,僅下載授權或許可的視頻內容。支持正版,並僅將此工具用於學習或個人用途。
  • 錯誤處理:如果 yt-dlp 遇到無法處理的視頻,會顯示錯誤訊息,並請檢查網址是否正確。
留言
avatar-img
留言分享你的想法!
avatar-img
螃蟹_crab的沙龍
148會員
255內容數
本業是影像辨識軟體開發,閒暇時間進修AI相關內容,將學習到的內容寫成文章分享。
螃蟹_crab的沙龍的其他內容
2025/02/10
在 PyQt 中,信號與槽(Signal & Slot)機制是用來實現物件間通信的核心機制。 當信號被發射時,槽函數(Slot)根據預先連接的規則被調用。這一過程有時候會呈現出「排隊」的現象,即信號並非立即執行,而是先放入事件隊列,等待事件循環(Event Loop)逐一處理。 本文將介紹其原理
Thumbnail
2025/02/10
在 PyQt 中,信號與槽(Signal & Slot)機制是用來實現物件間通信的核心機制。 當信號被發射時,槽函數(Slot)根據預先連接的規則被調用。這一過程有時候會呈現出「排隊」的現象,即信號並非立即執行,而是先放入事件隊列,等待事件循環(Event Loop)逐一處理。 本文將介紹其原理
Thumbnail
2025/01/19
PyQt 中的 pyqtSignal 和 pyqtSlot 教學 在使用 PyQt5 開發 GUI 程式時,信號 (Signal) 和 槽 (Slot) 是重要的機制,用於元件之間的通訊。 PyQt 提供了 pyqtSignal 和 pyqtSlot 來自定義信號和槽,進一步實現更靈活的功能。
Thumbnail
2025/01/19
PyQt 中的 pyqtSignal 和 pyqtSlot 教學 在使用 PyQt5 開發 GUI 程式時,信號 (Signal) 和 槽 (Slot) 是重要的機制,用於元件之間的通訊。 PyQt 提供了 pyqtSignal 和 pyqtSlot 來自定義信號和槽,進一步實現更靈活的功能。
Thumbnail
2024/11/16
使用 yt-dlp 下載 YT的教學 yt-dlp 是一款強大的命令行工具,用於下載來自 YT 及其他流媒體平台的音視頻資源。 本篇文章將參考yt-dlp github上 如何使用 yt-dlp 快速下載。 一、什麼是 yt-dlp? yt-dlp 是 youtube-dl 的分支項目,具
2024/11/16
使用 yt-dlp 下載 YT的教學 yt-dlp 是一款強大的命令行工具,用於下載來自 YT 及其他流媒體平台的音視頻資源。 本篇文章將參考yt-dlp github上 如何使用 yt-dlp 快速下載。 一、什麼是 yt-dlp? yt-dlp 是 youtube-dl 的分支項目,具
看更多
你可能也想看
Thumbnail
TOMICA第一波推出吉伊卡哇聯名小車車的時候馬上就被搶購一空,一直很扼腕當時沒有趕緊入手。前陣子閒來無事逛蝦皮,突然發現幾家商場都又開始重新上架,價格也都回到正常水準,估計是官方又再補了一批貨,想都沒想就立刻下單! 同文也跟大家分享近期蝦皮購物紀錄、好用推薦、蝦皮分潤計畫的聯盟行銷!
Thumbnail
TOMICA第一波推出吉伊卡哇聯名小車車的時候馬上就被搶購一空,一直很扼腕當時沒有趕緊入手。前陣子閒來無事逛蝦皮,突然發現幾家商場都又開始重新上架,價格也都回到正常水準,估計是官方又再補了一批貨,想都沒想就立刻下單! 同文也跟大家分享近期蝦皮購物紀錄、好用推薦、蝦皮分潤計畫的聯盟行銷!
Thumbnail
每年4月、5月都是最多稅要繳的月份,當然大部份的人都是有機會繳到「綜合所得稅」,只是相當相當多人還不知道,原來繳給政府的稅!可以透過一些有活動的銀行信用卡或電子支付來繳,從繳費中賺一點點小確幸!就是賺個1%~2%大家也是很開心的,因為你們把沒回饋變成有回饋,就是用卡的最高境界 所得稅線上申報
Thumbnail
每年4月、5月都是最多稅要繳的月份,當然大部份的人都是有機會繳到「綜合所得稅」,只是相當相當多人還不知道,原來繳給政府的稅!可以透過一些有活動的銀行信用卡或電子支付來繳,從繳費中賺一點點小確幸!就是賺個1%~2%大家也是很開心的,因為你們把沒回饋變成有回饋,就是用卡的最高境界 所得稅線上申報
Thumbnail
用 PyInstaller 打包一個簡單計算機應用 (GUI 使用 PyQt5) 本教學將帶您使用 PyQt5 建立一個簡單的計算機應用,並透過 PyInstaller 將其打包成執行檔(EXE)。 1. 安裝所需環境 在開始之前,請確保您已安裝以下工具: 必要套件 Python: 建
Thumbnail
用 PyInstaller 打包一個簡單計算機應用 (GUI 使用 PyQt5) 本教學將帶您使用 PyQt5 建立一個簡單的計算機應用,並透過 PyInstaller 將其打包成執行檔(EXE)。 1. 安裝所需環境 在開始之前,請確保您已安裝以下工具: 必要套件 Python: 建
Thumbnail
本篇文章將帶你一步步建立一個簡單的 PyQt5 GUI 應用程式,通過 yt-dlp 來下載 YT 視頻。你可以在這個應用中輸入視頻的 URL,並即時看到下載進度。 GUI介面 下載到開啟的資料夾路徑 前置條件 在開始之前,請確保你已經安裝了以下軟體和庫: 安裝 Python 確保你
Thumbnail
本篇文章將帶你一步步建立一個簡單的 PyQt5 GUI 應用程式,通過 yt-dlp 來下載 YT 視頻。你可以在這個應用中輸入視頻的 URL,並即時看到下載進度。 GUI介面 下載到開啟的資料夾路徑 前置條件 在開始之前,請確保你已經安裝了以下軟體和庫: 安裝 Python 確保你
Thumbnail
本篇簡單介紹如何安裝Django 網頁框架,首先要把python安裝好,並確定pip也有安裝成功,另外也要安裝vscode編譯器。
Thumbnail
本篇簡單介紹如何安裝Django 網頁框架,首先要把python安裝好,並確定pip也有安裝成功,另外也要安裝vscode編譯器。
Thumbnail
想要使用python學習程式應該要怎麼開始呢? 首先就是要下載Python(程式語言)還有Pychar(整合開發環境,IDE)這兩個軟體。 在Google的搜尋欄位打上Python下載, 點選第一個Download Python。 第二步點選Download,選擇你的電腦系統。
Thumbnail
想要使用python學習程式應該要怎麼開始呢? 首先就是要下載Python(程式語言)還有Pychar(整合開發環境,IDE)這兩個軟體。 在Google的搜尋欄位打上Python下載, 點選第一個Download Python。 第二步點選Download,選擇你的電腦系統。
Thumbnail
什麼是Python python是電腦程式語言的一種,如同python官方網站上的介紹 "Python是一種程式語,可讓你更快速地工作並更有效的整合系統"。簡單地說,就是你可用python這個程式語言去告訴電腦你想要作什麼,讓電腦來幫你完成你要作的事情。
Thumbnail
什麼是Python python是電腦程式語言的一種,如同python官方網站上的介紹 "Python是一種程式語,可讓你更快速地工作並更有效的整合系統"。簡單地說,就是你可用python這個程式語言去告訴電腦你想要作什麼,讓電腦來幫你完成你要作的事情。
Thumbnail
本篇文章將教你如何使用Python和PyQt5來建立一個GUI應用程式。PyQt5是一個相當流行的Python模組,透過這個文章你將學習如何使用它來建立一個互動式的應用程式。
Thumbnail
本篇文章將教你如何使用Python和PyQt5來建立一個GUI應用程式。PyQt5是一個相當流行的Python模組,透過這個文章你將學習如何使用它來建立一個互動式的應用程式。
Thumbnail
使用pytube library 下載Youtube 影片
Thumbnail
使用pytube library 下載Youtube 影片
Thumbnail
PyInstaller 是一個強大的工具,可以將 Python 程式碼打包成獨立的可執行檔案,讓你的程式可以在沒有 Python 解釋器的情況下運行。這對於分享和分發你的 Python 應用程式非常有用。以下是使用 PyInstaller 的基本步驟:
Thumbnail
PyInstaller 是一個強大的工具,可以將 Python 程式碼打包成獨立的可執行檔案,讓你的程式可以在沒有 Python 解釋器的情況下運行。這對於分享和分發你的 Python 應用程式非常有用。以下是使用 PyInstaller 的基本步驟:
Thumbnail
Python安裝、外部程式包安裝(pip install xxx)、Hello World 【安裝Python】 Visual Studio Code-Download 進入vscode(延伸模組) 安裝中文介面(輸入ch搜尋) 安裝 搜尋命令提示字元 命令提示字元打python 創建檔案
Thumbnail
Python安裝、外部程式包安裝(pip install xxx)、Hello World 【安裝Python】 Visual Studio Code-Download 進入vscode(延伸模組) 安裝中文介面(輸入ch搜尋) 安裝 搜尋命令提示字元 命令提示字元打python 創建檔案
Thumbnail
安裝下載 在瀏覽器搜尋列上輸入python,找到官方網站後進入下方畫面。 Python 官方網站頁面 在Downloads下拉列表中,可以尋找使用者自己電腦對應的作業系統選項,而基本上旁邊會提供最新版本的選取方框,點擊並下載。
Thumbnail
安裝下載 在瀏覽器搜尋列上輸入python,找到官方網站後進入下方畫面。 Python 官方網站頁面 在Downloads下拉列表中,可以尋找使用者自己電腦對應的作業系統選項,而基本上旁邊會提供最新版本的選取方框,點擊並下載。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News