Add UUID to songs

This commit is contained in:
Jakob Moser 2025-06-20 19:22:31 +02:00
parent df2ada6e4b
commit 2c555ba8e0
Signed by: jakob
GPG Key ID: 3EF2BA2851B3F53C

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
} }