modularize src

+ merge main.py and manage.py
+ move start logic to swingmusic/__main__.py
+ add a run.py on the project root
This commit is contained in:
cwilvx
2025-05-25 20:35:54 +03:00
parent 76fc97e088
commit 86fabcd5e3
171 changed files with 658 additions and 627 deletions
+46
View File
@@ -0,0 +1,46 @@
from dataclasses import dataclass
from typing import Any, Literal
@dataclass
class TrackLog:
"""
Track play logger model
"""
id: int
trackhash: str
duration: int
timestamp: int
source: str
"""
The full source string, eg. "al:123456"
"""
userid: int
extra: dict[str, Any]
type = "track"
type_src = None
"""
The source identifier string, eg. albumhash, artisthash, etc.
"""
def __post_init__(self):
prefix_map = {
"mix:": "mix",
"al:": "album",
"ar:": "artist",
"fo:": "folder",
"pl:": "playlist",
"favorite": "favorite",
}
for prefix, srctype in prefix_map.items():
if self.source.startswith(prefix):
try:
self.type_src = self.source.split(":", 1)[1]
except IndexError:
self.type_src = None
self.type = srctype
break