1
0
mirror of https://github.com/Escartem/AnimeWwise.git synced 2026-06-07 08:50:24 +08:00

fix bugs and update extract tab

This commit is contained in:
Escartem
2024-11-04 10:15:54 +01:00
parent da8ee97264
commit 6c483b4bc2
3 changed files with 40 additions and 39 deletions

29
app.py
View File

@@ -138,6 +138,9 @@ class AnimeWwise(QMainWindow):
self.actionReset.triggered.connect(lambda: self.resetApp())
self.actionExit.triggered.connect(lambda: self.close())
self.actionExpand_all.triggered.connect(lambda: self.treeWidget.expandAll())
self.actionCollapse_all.triggered.connect(lambda: self.treeWidget.collapseAll())
self.actionExtract_Selected.triggered.connect(lambda: self.extractItems(False))
self.actionExtract_All.triggered.connect(lambda: self.extractItems(True))
@@ -196,6 +199,7 @@ class AnimeWwise(QMainWindow):
if data["action"] == "load":
self.fileStructure = data["content"]
self.updateTreeWidget(self.fileStructure)
self.loadFilesButton.setEnabled(True)
self.setExtractionState(True)
self.tabs.setCurrentIndex(1)
print("Done !")
@@ -224,6 +228,7 @@ class AnimeWwise(QMainWindow):
_map = None
self.resetTreeWidget()
self.loadFilesButton.setEnabled(False)
# why is all this required for threading damnit
self.backgroundThread = QThread()
@@ -262,6 +267,7 @@ class AnimeWwise(QMainWindow):
def resetTreeWidget(self):
self.treeWidget.clear()
self.fileStructure = {"folders": {}, "files": []}
self.audioInfoLabel.setText("Click on an audio file to get more infos !")
self.setExtractionState(False)
def updateTreeWidget(self, structure):
@@ -285,7 +291,21 @@ class AnimeWwise(QMainWindow):
self.treeWidget.itemClicked.connect(self.updateAudioPreview)
def updateAudioPreview(self, item, column):
print(item.text(0))
file_data = self.searchFiles(self.fileStructure, item.text(0))
if file_data == {"folders": {}, "files": []}:
self.audioInfoLabel.setText("Click on an audio file to get more infos !")
return
# flatten path
while file_data["files"] == []:
file_data = list(file_data["folders"].values())[0]
meta = file_data["files"][0][1]["metadata"]
# show meta
text = f'Infos for {item.text(0)} => Channels : {meta["channels"]} | Sample rate : {meta["sampleRate"]} Hz | Bitrate : {meta["avgBitrate"]} kbps | Codec : {meta["codecDisplay"]} | Layout type : {meta["layoutType"]}'
self.audioInfoLabel.setText(text)
def addItems(self, parent, element):
for folder_name in sorted(element.get("folders", {}).keys()):
@@ -301,7 +321,7 @@ class AnimeWwise(QMainWindow):
for file in sorted(element.get("files", [])):
file_meta = file[1]
file_item = QTreeWidgetItem([file[0], f'{round(file_meta["metadata"]["duration"], 2)} seconds', file_meta["source"], str(file_meta["size"]), str(hex(file_meta["offset"]))])
file_item = QTreeWidgetItem([file[0], f'{round(file_meta["metadata"]["duration"], 1)} seconds', file_meta["source"], str(file_meta["size"]), str(hex(file_meta["offset"]))])
file_item.setFlags(file_item.flags() | Qt.ItemIsUserCheckable)
file_item.setCheckState(0, Qt.Unchecked)
if parent is None:
@@ -313,10 +333,6 @@ class AnimeWwise(QMainWindow):
def extractItems(self, _all):
self.setFolder(folder="output")
if self.folders["output"] == "":
QMessageBox.warning(None, "Warning", "Missing output folder !", QMessageBox.Ok)
return
checked_items = []
# todo: use file structure instead of tree view
@@ -366,6 +382,7 @@ class AnimeWwise(QMainWindow):
self.resetTreeWidget()
self.extract.reset()
self.setExtractionState(False)
self.tabs.setCurrentIndex(0)
print("Reset !")
def _appendText(self, text):