fix: handle missing music

This commit is contained in:
mokurin000
2025-08-04 13:44:51 +08:00
parent b9e4b36053
commit 2a48f2a2ce
2 changed files with 6 additions and 2 deletions

View File

@@ -5,6 +5,7 @@ description = "Add your description here"
readme = "README.md" readme = "README.md"
requires-python = ">=3.12" requires-python = ">=3.12"
dependencies = [ dependencies = [
"loguru>=0.7.3",
"orjson>=3.11.1", "orjson>=3.11.1",
"polars>=1.32.0", "polars>=1.32.0",
"pyecharts>=2.0.8", "pyecharts>=2.0.8",

View File

@@ -7,6 +7,7 @@ import polars as pl
import orjson as json import orjson as json
import pyecharts.options as opts import pyecharts.options as opts
from pyecharts.charts import Scatter from pyecharts.charts import Scatter
from loguru import logger
from helpers import query_music_db, find_level, dx_rating from helpers import query_music_db, find_level, dx_rating
@@ -17,15 +18,17 @@ def calculate_dxrating(music: dict):
level_id = music["level"] level_id = music["level"]
ach = music["achievement"] ach = music["achievement"]
music_info = query_music_db(music_id) music_info = query_music_db(music_id)
if not music_info:
logger.error(f"music: {music_id} not found")
return music | {"dxRating": 0}
level = find_level(music_info, level_id) level = find_level(music_info, level_id)
try: try:
return music | {"dxRating": dx_rating(Decimal(level.pop()["difficulty"]), ach)} return music | {"dxRating": dx_rating(Decimal(level.pop()["difficulty"]), ach)}
except IndexError as _: except IndexError as _:
print(f"unknown level: {music_id} - {level_id}", file=stderr) logger.warning(f"unknown level: {music_id} - {level_id}", file=stderr)
return music | {"dxRating": 0} return music | {"dxRating": 0}
data = json.loads(stdin.buffer.read()) data = json.loads(stdin.buffer.read())
user_id = data["userId"] user_id = data["userId"]
music_list: list[dict[str, dict]] = data["userMusicList"] music_list: list[dict[str, dict]] = data["userMusicList"]