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
import filecmp
from dataclasses import dataclass
from dataclasses import dataclass, field
from pathlib import Path
from typing import Self
from uuid import UUID, uuid4
from karaokatalog.parse_song_txt import parse_song_txt
@ -25,6 +26,7 @@ class Song:
video: Path | None
cover: Path | None
song_txt: Path
uuid: UUID = field(default=uuid4())
@property
def dir(self) -> Path:
@ -52,6 +54,7 @@ class Song:
audio_name = tags.get("AUDIO", tags.get("MP3"))
video_name = tags.get("VIDEO")
cover_name = tags.get("COVER")
uuid = tags.get("UUID")
if not title or not artist:
# Both are mandatory according to the specification
@ -64,11 +67,12 @@ class Song:
video=song_txt / video_name if video_name else None,
cover=song_txt / cover_name if cover_name else None,
song_txt=song_txt,
uuid=UUID(uuid) if uuid else uuid4(),
)
def as_dict(self) -> dict[str, str]:
return {
"uuid": str(self.uuid),
"title": self.title,
"artist": self.artist,
# TODO More fields
}