Add UUID to songs

This commit is contained in:
2025-06-20 19:22:31 +02:00
parent df2ada6e4b
commit 2c555ba8e0
+6 -2
View File
@@ -1,9 +1,10 @@
from __future__ import annotations from __future__ import annotations
import filecmp import filecmp
from dataclasses import dataclass from dataclasses import dataclass, field
from pathlib import Path from pathlib import Path
from typing import Self from typing import Self
from uuid import UUID, uuid4
from karaokatalog.parse_song_txt import parse_song_txt from karaokatalog.parse_song_txt import parse_song_txt
@@ -25,6 +26,7 @@ class Song:
video: Path | None video: Path | None
cover: Path | None cover: Path | None
song_txt: Path song_txt: Path
uuid: UUID = field(default=uuid4())
@property @property
def dir(self) -> Path: def dir(self) -> Path:
@@ -52,6 +54,7 @@ class Song:
audio_name = tags.get("AUDIO", tags.get("MP3")) audio_name = tags.get("AUDIO", tags.get("MP3"))
video_name = tags.get("VIDEO") video_name = tags.get("VIDEO")
cover_name = tags.get("COVER") cover_name = tags.get("COVER")
uuid = tags.get("UUID")
if not title or not artist: if not title or not artist:
# Both are mandatory according to the specification # Both are mandatory according to the specification
@@ -64,11 +67,12 @@ class Song:
video=song_txt / video_name if video_name else None, video=song_txt / video_name if video_name else None,
cover=song_txt / cover_name if cover_name else None, cover=song_txt / cover_name if cover_name else None,
song_txt=song_txt, song_txt=song_txt,
uuid=UUID(uuid) if uuid else uuid4(),
) )
def as_dict(self) -> dict[str, str]: def as_dict(self) -> dict[str, str]:
return { return {
"uuid": str(self.uuid),
"title": self.title, "title": self.title,
"artist": self.artist, "artist": self.artist,
# TODO More fields
} }