剪映专业版小工具(开源)

看了这个大佬写的bat脚本

不用登录可导出视频 VIP素材(比如贴纸等元素)+VIP功能(比如语音转字幕)

  • 原理 就是利用预合成草稿
  • 也没啥含金量 就是可视化了上面大佬bat脚本

使用方法:

  • 输入剪映草稿文件路径 例如:D:\Cache\jy\JianyingPro Drafts
  • 点击刷新 就会出现所有草稿 选中你要导出视频草稿双击鼠标 就会弹出视频所在目录
  • 打开草稿文件 把弹出视频所在目录的视频文件拖拽到 剪映剪辑界面里面 导出即可

软件截图

开源代码

import os
import sys
import json
from PyQt5.QtWidgets import (
    QApplication, QMainWindow, QWidget, QVBoxLayout, QHBoxLayout,
    QLabel, QLineEdit, QPushButton, QListWidget, QListWidgetItem,
    QFileDialog, QMessageBox, QStatusBar
)
from PyQt5.QtCore import Qt, QDateTime
from PyQt5.QtGui import QFont
 
 
class FolderExplorerApp(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("剪影小工具")
        self.setGeometry(100, 100, 700, 500)
 
        # 配置文件路径
        self.config_file = "folder_explorer_config.json"
 
        # 加载配置
        self.load_config()
 
        # 创建UI
        self.init_ui()
 
        # 初始加载文件夹列表
        self.refresh_folder_list()
 
    def init_ui(self):
        central_widget = QWidget()
        self.setCentralWidget(central_widget)
        layout = QVBoxLayout(central_widget)
 
        # 顶部路径输入区域
        path_layout = QHBoxLayout()
        path_layout.addWidget(QLabel("路径:"))
 
        self.path_edit = QLineEdit(self.saved_path)
        self.path_edit.setMinimumWidth(400)
        self.path_edit.editingFinished.connect(self.save_config)
        path_layout.addWidget(self.path_edit)
 
 
 
        refresh_btn = QPushButton("刷新")
        refresh_btn.clicked.connect(self.refresh_folder_list)
        path_layout.addWidget(refresh_btn)
 
        layout.addLayout(path_layout)
 
        # 文件夹列表区域
        self.folder_list = QListWidget()
        self.folder_list.setFont(QFont("Arial", 10))
        self.folder_list.itemDoubleClicked.connect(self.open_selected_folder)
        layout.addWidget(self.folder_list)
 
        # 状态栏
        self.status_bar = QStatusBar()
        self.setStatusBar(self.status_bar)
        self.status_bar.showMessage("就绪")
 
        # 设置样式
        self.setStyleSheet("""
            QMainWindow {
                background-color: #f0f0f0;
            }
            QLineEdit {
                padding: 5px;
                border: 1px solid #ccc;
                border-radius: 3px;
            }
            QPushButton {
                padding: 5px 10px;
                background-color: #4a86e8;
                color: white;
                border: none;
                border-radius: 3px;
            }
            QPushButton:hover {
                background-color: #3a76d8;
            }
            QListWidget {
                background-color: white;
                border: 1px solid #ccc;
                border-radius: 3px;
            }
        """)
 
    def browse_path(self):
        path = QFileDialog.getExistingDirectory(self, "选择文件夹")
        if path:
            self.path_edit.setText(path)
            self.save_config()
            self.refresh_folder_list()
 
    def load_config(self):
        self.saved_path = ""
        try:
            if os.path.exists(self.config_file):
                with open(self.config_file, "r", encoding="utf-8") as f:
                    config = json.load(f)
                    self.saved_path = config.get("path", "")
        except Exception as e:
            QMessageBox.warning(self, "错误", f"加载配置失败: {str(e)}")
 
    def save_config(self):
        try:
            path = self.path_edit.text().strip()
            if not path:
                return
 
            config = {"path": path}
            with open(self.config_file, "w", encoding="utf-8") as f:
                json.dump(config, f, ensure_ascii=False, indent=2)
 
            self.saved_path = path
        except Exception as e:
            QMessageBox.warning(self, "错误", f"保存配置失败: {str(e)}")
 
    def refresh_folder_list(self):
        self.folder_list.clear()
 
        path = self.path_edit.text().strip()
        if not path or not os.path.isdir(path):
            self.status_bar.showMessage(f"错误: 路径 '{path}' 不存在或不是文件夹")
            return
 
        try:
            # 获取所有文件夹
            folders = []
            for entry in os.scandir(path):
                if entry.is_dir():
                    stat = entry.stat()
                    modified_time = QDateTime.fromSecsSinceEpoch(int(stat.st_mtime))
                    folders.append({
                        "name": entry.name,
                        "path": entry.path,
                        "modified": modified_time
                    })
 
            # 按修改日期排序(最新的在前)
            folders.sort(key=lambda x: x["modified"], reverse=True)
 
            # 添加到列表
            for folder in folders:
                item = QListWidgetItem(f"{folder['name']} (修改于: {folder['modified'].toString('yyyy-MM-dd HH:mm')})")
                item.setData(Qt.UserRole, folder["path"])
                self.folder_list.addItem(item)
 
            self.status_bar.showMessage(f"找到 {len(folders)} 个文件夹 | 路径: {path}")
        except Exception as e:
            self.status_bar.showMessage(f"错误: {str(e)}")
            QMessageBox.critical(self, "错误", f"读取文件夹失败: {str(e)}")
 
    def open_selected_folder(self, item):
        folder_path = item.data(Qt.UserRole)
 
        # 构建目标路径: 文件夹路径\Resources\combination
        target_path = os.path.join(folder_path, "Resources", "combination")
 
        if not os.path.exists(target_path):
            self.status_bar.showMessage(f"错误: 路径 '{target_path}' 不存在")
            QMessageBox.warning(self, "警告", f"目标路径不存在:\n{target_path}")
            return
 
        try:
            # 打开文件夹
            if sys.platform == "win32":
                os.startfile(target_path)
            elif sys.platform == "darwin":
                os.system(f"open '{target_path}'")
            else:
                os.system(f"xdg-open '{target_path}'")
 
            self.status_bar.showMessage(f"已打开: {target_path}")
        except Exception as e:
            self.status_bar.showMessage(f"错误: 无法打开文件夹 - {str(e)}")
            QMessageBox.critical(self, "错误", f"打开文件夹失败: {str(e)}")
 
 
if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = FolderExplorerApp()
    window.show()
    sys.exit(app.exec_())

下载(扫码)

图片[1]-剪映专业版小工具(开源)-大海资源库
图片[2]-剪映专业版小工具(开源)-大海资源库

下载地址

© 版权声明
THE END
点赞6分享
及时反馈~ 共1条

请登录后发表评论