This commit is contained in:
2025-05-17 15:52:35 +08:00
commit 87a5b5ae5f
12 changed files with 1674 additions and 0 deletions

View File

@ -0,0 +1,118 @@
"""
Copyright (C) 2025 283375
This file is part of "arcaea-apk-assets" (stated as "this program" below).
This program is free software: you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
Foundation, either version 3 of the License, or (at your option) any later
version.
This program is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with
this program. If not, see <https://www.gnu.org/licenses/>.
"""
from dataclasses import dataclass
from datetime import datetime
from decimal import Decimal
from typing import Optional
ARCAEA_LANGUAGE_KEYS = ["ja", "ko", "zh-Hans", "zh-Hant"]
@dataclass
class Pack:
id: str
name: Optional[str] = None
description: Optional[str] = None
section: Optional[str] = None
plus_character: Optional[int] = None
append_parent_id: Optional[str] = None
is_world_extend: bool = False
@property
def is_append(self):
return self.append_parent_id is not None
@dataclass
class PackLocalization:
id: str
lang: str
name: Optional[str]
description: Optional[str]
@dataclass
class Song:
pack_id: str
id: str
added_at: datetime
idx: Optional[int] = None
title: Optional[str] = None
artist: Optional[str] = None
is_deleted: bool = False
version: Optional[str] = None
bpm: Optional[str] = None
bpm_base: Optional[Decimal] = None
is_remote: bool = False
is_unlockable_in_world: bool = False
is_beyond_unlock_state_local: bool = False
purchase: Optional[str] = None
category: Optional[str] = None
side: Optional[int] = None
bg: Optional[str] = None
bg_inverse: Optional[str] = None
bg_day: Optional[str] = None
bg_night: Optional[str] = None
source: Optional[str] = None
source_copyright: Optional[str] = None
@dataclass
class SongLocalization:
id: str
lang: str
title: Optional[str] = None
source: Optional[str] = None
has_jacket: bool = False
@dataclass
class Difficulty:
song_id: str
rating_class: int
rating: int
is_rating_plus: bool = False
chart_designer: Optional[str] = None
jacket_designer: Optional[str] = None
has_overriding_audio: bool = False
has_overriding_jacket: bool = False
jacket_night: Optional[str] = None
added_at: Optional[datetime] = None
bg: Optional[str] = None
version: Optional[str] = None
title: Optional[str] = None
is_legacy11: bool = False
@dataclass
class DifficultyLocalization:
song_id: str
rating_class: int
lang: str
title: Optional[str]
artist: Optional[str]