mirror of
https://github.com/283375/arcaea-offline.git
synced 2025-04-19 06:00:18 +00:00
65 lines
1.8 KiB
Python
65 lines
1.8 KiB
Python
from sqlalchemy.orm import Session
|
|
|
|
from ...models import Chart, ScoreBest
|
|
from ...utils.rating import rating_class_to_text
|
|
|
|
|
|
class SmartRteB30CsvConverter:
|
|
CSV_ROWS = [
|
|
"songname",
|
|
"songId",
|
|
"Difficulty",
|
|
"score",
|
|
"Perfect",
|
|
"criticalPerfect",
|
|
"Far",
|
|
"Lost",
|
|
"Constant",
|
|
"singlePTT",
|
|
]
|
|
|
|
def __init__(
|
|
self,
|
|
session: Session,
|
|
):
|
|
self.session = session
|
|
|
|
def rows(self) -> list:
|
|
csv_rows = [self.CSV_ROWS.copy()]
|
|
|
|
with self.session as session:
|
|
results = (
|
|
session.query(
|
|
Chart.title,
|
|
ScoreBest.song_id,
|
|
ScoreBest.rating_class,
|
|
ScoreBest.score,
|
|
ScoreBest.pure,
|
|
ScoreBest.shiny_pure,
|
|
ScoreBest.far,
|
|
ScoreBest.lost,
|
|
Chart.constant,
|
|
ScoreBest.potential,
|
|
)
|
|
.join(
|
|
Chart,
|
|
(Chart.song_id == ScoreBest.song_id)
|
|
& (Chart.rating_class == ScoreBest.rating_class),
|
|
)
|
|
.all()
|
|
)
|
|
|
|
for result in results:
|
|
# replace the comma in song title because the target project
|
|
# cannot handle quoted string
|
|
result = list(result)
|
|
result[0] = result[0].replace(",", "")
|
|
result[2] = rating_class_to_text(result[2])
|
|
# divide constant to float
|
|
result[-2] = result[-2] / 10
|
|
# round potential
|
|
result[-1] = round(result[-1], 5)
|
|
csv_rows.append(result)
|
|
|
|
return csv_rows
|