moved main models to models/download

This commit is contained in:
Xoconoch
2025-06-10 15:33:10 -06:00
parent 75e790c63b
commit 19689d8663
17 changed files with 36 additions and 108 deletions

View File

@@ -9,7 +9,7 @@ from deezspot.libutils.logging_utils import configure_logger, logger
# Export key functionality
from deezspot.deezloader import DeeLogin
from deezspot.models import Track, Album, Playlist, Smart, Episode
from deezspot.models.download import Track, Album, Playlist, Smart, Episode
__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,
TPE1, TPE2, TPOS, TPUB, TRCK, TSRC, TXXX, USLT, TYER
)
from deezspot.models import Track, Episode
from deezspot.models.download import Track, Episode
import requests
import logging
import os

View File

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

View File

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

View File

@@ -1,8 +0,0 @@
#!/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

View File

@@ -1,20 +0,0 @@
#!/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 .artist import artistObject, artistTrackObject
from .album import albumObject, albumTrackObject, albumArtistObject, trackAlbumObject
from .track import trackObject
from .artist import artistObject, albumArtistObject
from .album import albumObject, trackAlbumObject
from .track import trackObject, artistTrackObject, albumTrackObject
from .playlist import playlistObject, trackPlaylistObject, albumTrackPlaylistObject, artistTrackPlaylistObject

View File

@@ -18,18 +18,6 @@ class trackAlbumObject:
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
class albumObject:
"""A standalone album/single/compilation, with nested trackAlbumObject[] for its tracks."""

View File

@@ -6,17 +6,6 @@ from typing import List, Optional
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
class albumArtistObject:
"""Album when nested inside an artist context."""

View File

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

View File

@@ -1,11 +1,32 @@
#!/usr/bin/python3
from dataclasses import dataclass, field
from typing import List, Optional
from typing import List, Optional, Dict, Any
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

View File

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

View File

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

View File

@@ -1,41 +0,0 @@
#!/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,
what_kind,
)
from deezspot.models import (
from deezspot.models.download import (
Track,
Album,
Playlist,