看了这个大佬写的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_())下载(扫码)
下载地址
© 版权声明
NOTICE
1240555208@qq.com|Copyright © 2023~2026
01
DISCLAIMER
本站资源大多来自网络,如有侵犯权益请联系管理员,我们会第一时间审核删除。站内资源仅供学习测试,未经许可禁止商用,请在24小时内删除。
02
VIP PRIVILEGE
遇到付费内容?升级终身VIP即可全站免费畅享所有资源,可以联系我的微信进行开通。
大海聊天 QQ 3群:478065589
THE END










子比主题美化
精品源码资源 

请登录后发表评论
注册
社交账号登录