Revert "moved main models to models/download"
This reverts commit 19689d8663.
This commit is contained in:
@@ -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"
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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,
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
8
deezspot/models/__init__.py
Normal file
8
deezspot/models/__init__.py
Normal 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
20
deezspot/models/album.py
Normal 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}"
|
||||||
@@ -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
|
||||||
@@ -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."""
|
||||||
|
|||||||
@@ -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."""
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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:
|
||||||
@@ -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
41
deezspot/models/track.py
Normal 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}"
|
||||||
@@ -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,
|
||||||
|
|||||||
Reference in New Issue
Block a user