Revert "moved main models to models/download"

This reverts commit 19689d8663.
This commit is contained in:
Xoconoch
2025-06-10 15:37:45 -06:00
parent 19689d8663
commit c1438ecb47
17 changed files with 108 additions and 36 deletions

View File

@@ -9,7 +9,7 @@ from deezspot.libutils.logging_utils import configure_logger, logger
# Export key functionality # Export key functionality
from deezspot.deezloader import DeeLogin from deezspot.deezloader import DeeLogin
from deezspot.models.download import Track, Album, Playlist, Smart, Episode from deezspot.models import Track, Album, Playlist, Smart, Episode
__version__ = "1.2.0" __version__ = "1.2.0"

View File

@@ -11,7 +11,7 @@ from mutagen.id3 import (
APIC, COMM, SYLT, TALB, TCOM, TCON, TCOP, TDRC, TEXT, TIT2, TLEN, APIC, COMM, SYLT, TALB, TCOM, TCON, TCOP, TDRC, TEXT, TIT2, TLEN,
TPE1, TPE2, TPOS, TPUB, TRCK, TSRC, TXXX, USLT, TYER TPE1, TPE2, TPOS, TPUB, TRCK, TSRC, TXXX, USLT, TYER
) )
from deezspot.models.download import Track, Episode from deezspot.models import Track, Episode
import requests import requests
import logging import logging
import os import os

View File

@@ -6,7 +6,7 @@ from deezspot.deezloader.dee_api import API
from deezspot.easy_spoty import Spo from deezspot.easy_spoty import Spo
from deezspot.deezloader.deegw_api import API_GW from deezspot.deezloader.deegw_api import API_GW
from deezspot.deezloader.deezer_settings import stock_quality from deezspot.deezloader.deezer_settings import stock_quality
from deezspot.models.download import ( from deezspot.models import (
Track, Track,
Album, Album,
Playlist, Playlist,

View File

@@ -6,7 +6,7 @@ from datetime import datetime
from urllib.parse import urlparse from urllib.parse import urlparse
from requests import get as req_get from requests import get as req_get
from zipfile import ZipFile, ZIP_DEFLATED from zipfile import ZipFile, ZIP_DEFLATED
from deezspot.models.download.track import Track from deezspot.models.track import Track
from deezspot.exceptions import InvalidLink from deezspot.exceptions import InvalidLink
from deezspot.libutils.others_settings import supported_link, header from deezspot.libutils.others_settings import supported_link, header
from deezspot.libutils.logging_utils import ProgressReporter, logger from deezspot.libutils.logging_utils import ProgressReporter, logger

View File

@@ -0,0 +1,8 @@
#!/usr/bin/python3
from deezspot.models.smart import Smart
from deezspot.models.track import Track
from deezspot.models.album import Album
from deezspot.models.playlist import Playlist
from deezspot.models.preferences import Preferences
from deezspot.models.episode import Episode

20
deezspot/models/album.py Normal file
View File

@@ -0,0 +1,20 @@
#!/usr/bin/python3
from deezspot.models.track import Track
class Album:
def __init__(self, ids: int) -> None:
self.tracks: list[Track] = []
self.zip_path = None
self.image = None
self.album_quality = None
self.md5_image = None
self.ids = ids
self.nb_tracks = None
self.album_name = None
self.upc = None
self.tags = None
self.__set_album_md5()
def __set_album_md5(self):
self.album_md5 = f"album/{self.ids}"

View File

@@ -5,7 +5,7 @@ Callback data models for the music metadata schema.
""" """
from .common import IDs, ReleaseDate from .common import IDs, ReleaseDate
from .artist import artistObject, albumArtistObject from .artist import artistObject, artistTrackObject
from .album import albumObject, trackAlbumObject from .album import albumObject, albumTrackObject, albumArtistObject, trackAlbumObject
from .track import trackObject, artistTrackObject, albumTrackObject from .track import trackObject
from .playlist import playlistObject, trackPlaylistObject, albumTrackPlaylistObject, artistTrackPlaylistObject from .playlist import playlistObject, trackPlaylistObject, albumTrackPlaylistObject, artistTrackPlaylistObject

View File

@@ -18,6 +18,18 @@ class trackAlbumObject:
ids: IDs = field(default_factory=IDs) ids: IDs = field(default_factory=IDs)
@dataclass
class albumTrackObject:
"""Album when nested inside a track context."""
type: str = "albumTrack"
album_type: str = "" # "album" | "single" | "compilation"
title: str = ""
release_date: Dict[str, Any] = field(default_factory=dict) # ReleaseDate as dict
total_tracks: int = 0
genres: List[str] = field(default_factory=list)
ids: IDs = field(default_factory=IDs)
@dataclass @dataclass
class albumObject: class albumObject:
"""A standalone album/single/compilation, with nested trackAlbumObject[] for its tracks.""" """A standalone album/single/compilation, with nested trackAlbumObject[] for its tracks."""

View File

@@ -6,6 +6,17 @@ from typing import List, Optional
from .common import IDs from .common import IDs
@dataclass
class artistTrackObject:
"""
An artist when nested inside a track context.
No genres, no albums—just identifying info.
"""
type: str = "artistTrack"
name: str = ""
ids: IDs = field(default_factory=IDs)
@dataclass @dataclass
class albumArtistObject: class albumArtistObject:
"""Album when nested inside an artist context.""" """Album when nested inside an artist context."""

View File

@@ -33,6 +33,7 @@ class trackPlaylistObject:
title: str = "" title: str = ""
position: int = 0 # Position in the playlist position: int = 0 # Position in the playlist
duration_ms: int = 0 # mandatory duration_ms: int = 0 # mandatory
# Nested objects instead of string references
artist: artistTrackPlaylistObject = field(default_factory=artistTrackPlaylistObject) artist: artistTrackPlaylistObject = field(default_factory=artistTrackPlaylistObject)
album: albumTrackPlaylistObject = field(default_factory=albumTrackPlaylistObject) album: albumTrackPlaylistObject = field(default_factory=albumTrackPlaylistObject)
ids: IDs = field(default_factory=IDs) ids: IDs = field(default_factory=IDs)

View File

@@ -1,32 +1,11 @@
#!/usr/bin/python3 #!/usr/bin/python3
from dataclasses import dataclass, field from dataclasses import dataclass, field
from typing import List, Optional, Dict, Any from typing import List, Optional
from .common import IDs from .common import IDs
from .album import albumTrackObject
from .artist import artistTrackObject
@dataclass
class artistTrackObject:
"""
An artist when nested inside a track context.
No genres, no albums—just identifying info.
"""
type: str = "artistTrack"
name: str = ""
ids: IDs = field(default_factory=IDs)
@dataclass
class albumTrackObject:
"""Album when nested inside a track context."""
type: str = "albumTrack"
album_type: str = "" # "album" | "single" | "compilation"
title: str = ""
release_date: Dict[str, Any] = field(default_factory=dict) # ReleaseDate as dict
total_tracks: int = 0
genres: List[str] = field(default_factory=list)
ids: IDs = field(default_factory=IDs)
@dataclass @dataclass

View File

@@ -1,6 +1,6 @@
#!/usr/bin/python3 #!/usr/bin/python3
from deezspot.models.download.track import Track from deezspot.models.track import Track
class Playlist: class Playlist:
def __init__(self) -> None: def __init__(self) -> None:

View File

@@ -1,8 +1,8 @@
#!/usr/bin/python3 #!/usr/bin/python3
from deezspot.models.download.track import Track from deezspot.models.track import Track
from deezspot.models.download.album import Album from deezspot.models.album import Album
from deezspot.models.download.playlist import Playlist from deezspot.models.playlist import Playlist
class Smart: class Smart:
def __init__(self) -> None: def __init__(self) -> None:

41
deezspot/models/track.py Normal file
View File

@@ -0,0 +1,41 @@
#!/usr/bin/python3
class Track:
def __init__(
self,
tags: dict,
song_path: str,
file_format: str,
quality: str,
link: str,
ids: int
) -> None:
self.tags = tags
self.__set_tags()
music_display = getattr(self, 'music', getattr(self, 'name', "Unknown Track"))
artist_display = getattr(self, 'artist', "Unknown Artist")
self.song_name = f"{music_display} - {artist_display}"
self.song_path = song_path
self.file_format = file_format
self.quality = quality
self.link = link
self.ids = ids
self.md5_image = None
self.success = True
self.__set_track_md5()
def __set_tags(self):
for tag, value in self.tags.items():
setattr(
self, tag, value
)
def __set_track_md5(self):
self.track_md5 = f"track/{self.ids}"
def set_fallback_ids(self, fallback_ids):
self.fallback_ids = fallback_ids
self.fallback_track_md5 = f"track/{self.fallback_ids}"

View File

@@ -11,7 +11,7 @@ from deezspot.libutils.utils import (
link_is_valid, link_is_valid,
what_kind, what_kind,
) )
from deezspot.models.download import ( from deezspot.models import (
Track, Track,
Album, Album,
Playlist, Playlist,