File size: 3,066 Bytes
09eaf7c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
import os
from PySide6.QtWidgets import (QWidget, QVBoxLayout, QLabel, QLineEdit,
                               QPushButton, QMessageBox)

from ui_components import CustomSlider, RadioButtonGroup, VideoPlayer

# 尝试导入实际的功能模块
try:
    from tools.step000_video_downloader import download_from_url
except ImportError:
    pass


class DownloadTab(QWidget):
    def __init__(self, parent=None):
        super().__init__(parent)
        self.layout = QVBoxLayout(self)

        # 视频URL
        self.video_url = QLineEdit()
        self.video_url.setPlaceholderText("请输入Youtube或Bilibili的视频、播放列表或频道的URL")
        self.video_url.setText("https://www.bilibili.com/video/BV1kr421M7vz/")
        self.layout.addWidget(QLabel("视频URL"))
        self.layout.addWidget(self.video_url)

        # 视频输出文件夹
        self.video_folder = QLineEdit("videos")
        self.layout.addWidget(QLabel("视频输出文件夹"))
        self.layout.addWidget(self.video_folder)

        # 分辨率
        self.resolution = RadioButtonGroup(
            ['4320p', '2160p', '1440p', '1080p', '720p', '480p', '360p', '240p', '144p'],
            "分辨率",
            '1080p'
        )
        self.layout.addWidget(self.resolution)

        # 下载视频数量
        self.video_count = CustomSlider(1, 100, 1, "下载视频数量", 5)
        self.layout.addWidget(self.video_count)

        # 执行按钮
        self.run_button = QPushButton("开始下载")
        self.run_button.clicked.connect(self.run_download)
        self.layout.addWidget(self.run_button)

        # 状态显示
        self.status_label = QLabel("准备就绪")
        self.layout.addWidget(QLabel("下载状态:"))
        self.layout.addWidget(self.status_label)

        # 视频播放器
        self.video_player = VideoPlayer("示例视频")
        self.layout.addWidget(self.video_player)

        # 下载信息
        self.download_info = QLabel("下载信息将显示在这里")
        self.layout.addWidget(QLabel("下载信息:"))
        self.layout.addWidget(self.download_info)

        self.setLayout(self.layout)

    def run_download(self):
        # 这里应该调用原始的download_from_url函数
        # 临时实现,实际应用中需要替换为真实的调用
        self.status_label.setText("下载中...")
        QMessageBox.information(self, "功能提示", "下载功能正在实现中...")

        # 实际应用中解除以下注释

        try:
            status, video_path, info = download_from_url(
                self.video_url.text(),
                self.video_folder.text(),
                self.resolution.value(),
                self.video_count.value()
            )
            self.status_label.setText(status)
            if video_path and os.path.exists(video_path):
                self.video_player.set_video(video_path)
            self.download_info.setText(str(info))
        except Exception as e:
            self.status_label.setText(f"下载失败: {str(e)}")