feat: SmartRTE csv export

This commit is contained in:
2023-10-21 23:03:59 +08:00
parent dd647d6963
commit 01457f3559
5 changed files with 80 additions and 0 deletions

View File

@ -1,3 +1,4 @@
import csv
import json
import logging
import traceback
@ -13,6 +14,7 @@ from arcaea_offline.external.arcaea import (
)
from arcaea_offline.external.arcaea.common import ArcaeaParser
from arcaea_offline.external.arcsong import ArcsongDbParser
from arcaea_offline.external.smartrte import SmartRteB30CsvConverter
from arcaea_offline.models import Difficulty, Pack, Song
from PySide6.QtCore import QDir, Slot
from PySide6.QtWidgets import QFileDialog, QMessageBox, QWidget
@ -232,3 +234,27 @@ class TabDb_Manage(Ui_TabDb_Manage, QWidget):
)
with open(exportLocation, "w", encoding="utf-8") as f:
f.write(content)
@Slot()
def on_exportSmartRteB30Button_clicked(self):
try:
with Database().sessionmaker() as session:
converter = SmartRteB30CsvConverter(session)
csvRows = converter.rows()
exportLocation, _filter = QFileDialog.getSaveFileName(
self,
"Export CSV file",
QDir.current().filePath("smartrte_scores.csv"),
"CSV (*.csv);;*",
)
with open(exportLocation, "w", encoding="utf-8", newline="") as f:
csvWriter = csv.writer(f)
csvWriter.writerows(csvRows)
QMessageBox.information(self, None, "OK")
except Exception as e:
logging.exception("Export SmartRTE csv error:")
QMessageBox.critical(
self, "Export Error", "\n".join(traceback.format_exception(e))
)