feat: import from Online

This commit is contained in:
2023-10-18 01:26:12 +08:00
parent 105d5c1dfb
commit 55ef2ba3bb
5 changed files with 97 additions and 25 deletions

View File

@ -5,6 +5,7 @@ import zipfile
from arcaea_offline.database import Database
from arcaea_offline.external.arcaea import (
ArcaeaOnlineParser,
PacklistParser,
SonglistDifficultiesParser,
SonglistParser,
@ -178,6 +179,31 @@ class TabDb_Manage(Ui_TabDb_Manage, QWidget):
self, "Import Error", "\n".join(traceback.format_exception(e))
)
@Slot()
def on_importOnlineButton_clicked(self):
apiResultFile, filter = QFileDialog.getOpenFileName(
self, "Select API result JSON file"
)
if not apiResultFile:
return
try:
db = Database()
parser = ArcaeaOnlineParser(apiResultFile)
logger.info(
f"Got {len(parser.parse())} items from {apiResultFile}, writing into database..."
)
with db.sessionmaker() as session:
parser.write_database(session)
session.commit()
QMessageBox.information(self, None, "OK")
except Exception as e:
logging.exception("import Arcaea Online error")
QMessageBox.critical(
self, "Import Error", "\n".join(traceback.format_exception(e))
)
@Slot()
def on_exportScoresButton_clicked(self):
scores = Database().export_scores()