moved main models to models/download
This commit is contained in:
@@ -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"
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
@@ -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}"
|
||||
@@ -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
|
||||
@@ -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."""
|
||||
|
||||
@@ -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."""
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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:
|
||||
@@ -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:
|
||||
@@ -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}"
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user