fuuuuuck
This commit is contained in:
parent
a1650d560c
commit
82a95f9b49
@ -14,6 +14,7 @@ class DatabaseObject:
|
|||||||
# contains all collection attributes, which describe something "smaller"
|
# contains all collection attributes, which describe something "smaller"
|
||||||
# e.g. album has songs, but not artist.
|
# e.g. album has songs, but not artist.
|
||||||
DOWNWARDS_COLLECTION_ATTRIBUTES: tuple = tuple()
|
DOWNWARDS_COLLECTION_ATTRIBUTES: tuple = tuple()
|
||||||
|
UPWARDS_COLLECTION_ATTRIBUTES: tuple = tuple()
|
||||||
|
|
||||||
def __init__(self, _id: int = None, dynamic: bool = False, **kwargs) -> None:
|
def __init__(self, _id: int = None, dynamic: bool = False, **kwargs) -> None:
|
||||||
self.automatic_id: bool = False
|
self.automatic_id: bool = False
|
||||||
|
@ -46,6 +46,8 @@ class Song(MainObject):
|
|||||||
"genre": None,
|
"genre": None,
|
||||||
"notes": FormattedText()
|
"notes": FormattedText()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
UPWARDS_COLLECTION_ATTRIBUTES = ("album_collection", "main_artist_collection", "feature_artist_collection")
|
||||||
|
|
||||||
def __init__(
|
def __init__(
|
||||||
self,
|
self,
|
||||||
@ -204,7 +206,8 @@ class Album(MainObject):
|
|||||||
"notes": FormattedText()
|
"notes": FormattedText()
|
||||||
}
|
}
|
||||||
|
|
||||||
DOWNWARDS_COLLECTION_ATTRIBUTES = ("song_collection",)
|
DOWNWARDS_COLLECTION_ATTRIBUTES = ("song_collection", )
|
||||||
|
UPWARDS_COLLECTION_ATTRIBUTES = ("artist_collection", "label_collection")
|
||||||
|
|
||||||
def __init__(
|
def __init__(
|
||||||
self,
|
self,
|
||||||
@ -425,6 +428,7 @@ class Artist(MainObject):
|
|||||||
}
|
}
|
||||||
|
|
||||||
DOWNWARDS_COLLECTION_ATTRIBUTES = ("feature_song_collection", "main_album_collection")
|
DOWNWARDS_COLLECTION_ATTRIBUTES = ("feature_song_collection", "main_album_collection")
|
||||||
|
UPWARDS_COLLECTION_ATTRIBUTES = ("label_collection", )
|
||||||
|
|
||||||
def __init__(
|
def __init__(
|
||||||
self,
|
self,
|
||||||
|
@ -23,6 +23,7 @@ from ..utils.enums.source import SourcePages
|
|||||||
from ..utils.enums.album import AlbumType
|
from ..utils.enums.album import AlbumType
|
||||||
from ..audio import write_metadata_to_target, correct_codec
|
from ..audio import write_metadata_to_target, correct_codec
|
||||||
from ..utils import shared
|
from ..utils import shared
|
||||||
|
from ..utils.shared import DEFAULT_VALUES, DOWNLOAD_PATH, DOWNLOAD_FILE
|
||||||
from ..utils.support_classes import Query, DownloadResult, DefaultTarget
|
from ..utils.support_classes import Query, DownloadResult, DefaultTarget
|
||||||
|
|
||||||
|
|
||||||
@ -237,8 +238,26 @@ class Page(threading.Thread):
|
|||||||
def fetch_label(self, source: Source, stop_at_level: int = 1) -> Label:
|
def fetch_label(self, source: Source, stop_at_level: int = 1) -> Label:
|
||||||
return Label()
|
return Label()
|
||||||
|
|
||||||
def download(self, music_object: DatabaseObject, download_all: bool = False) -> DownloadResult:
|
def download(self, music_object: DatabaseObject, genre: str, download_all: bool = False) -> DownloadResult:
|
||||||
self._download(music_object, {}, download_all)
|
naming_objects = {"genre": genre}
|
||||||
|
|
||||||
|
def fill_naming_objects(naming_music_object: DatabaseObject):
|
||||||
|
nonlocal naming_objects
|
||||||
|
|
||||||
|
for collection_name in naming_music_object.UPWARDS_COLLECTION_ATTRIBUTES:
|
||||||
|
collection: Collection = getattr(self, collection_name)
|
||||||
|
|
||||||
|
if collection.empty():
|
||||||
|
continue
|
||||||
|
if collection.element_type in naming_objects:
|
||||||
|
continue
|
||||||
|
|
||||||
|
dom_ordered_music_object: DatabaseObject = collection[0]
|
||||||
|
return fill_naming_objects(dom_ordered_music_object)
|
||||||
|
|
||||||
|
fill_naming_objects(music_object)
|
||||||
|
|
||||||
|
self._download(music_object, {}, genre, download_all)
|
||||||
|
|
||||||
return DownloadResult()
|
return DownloadResult()
|
||||||
|
|
||||||
@ -252,8 +271,7 @@ class Page(threading.Thread):
|
|||||||
naming_objects[type(music_object)] = music_object
|
naming_objects[type(music_object)] = music_object
|
||||||
|
|
||||||
if isinstance(music_object, Song):
|
if isinstance(music_object, Song):
|
||||||
print("Downloading", music_object)
|
return [self._download_song(music_object, naming_objects)]
|
||||||
return [music_object]
|
|
||||||
|
|
||||||
return_values: List = []
|
return_values: List = []
|
||||||
|
|
||||||
@ -266,7 +284,31 @@ class Page(threading.Thread):
|
|||||||
|
|
||||||
return return_values
|
return return_values
|
||||||
|
|
||||||
def download_song(self, song: Song, naming_objects: Dict[Type[DatabaseObject], DatabaseObject]):
|
def _download_song(self, song: Song, naming_objects: Dict[Type[DatabaseObject], DatabaseObject]):
|
||||||
|
name_attribute = DEFAULT_VALUES.copy()
|
||||||
|
|
||||||
|
# song
|
||||||
|
name_attribute["genre"] = naming_objects["genre"]
|
||||||
|
name_attribute["song"] = song.title
|
||||||
|
|
||||||
|
if Album in naming_objects:
|
||||||
|
album: Album = naming_objects[Album]
|
||||||
|
name_attribute["album"] = album.title
|
||||||
|
name_attribute["album_type"] = album.album_type.value
|
||||||
|
|
||||||
|
if Artist in naming_objects:
|
||||||
|
artist: Artist = naming_objects[Artist]
|
||||||
|
naming_objects["artist"] = artist.name
|
||||||
|
|
||||||
|
if Label in naming_objects:
|
||||||
|
label: Label = naming_objects[Label]
|
||||||
|
naming_objects["label"] = label.name
|
||||||
|
|
||||||
|
new_target = Target(
|
||||||
|
relative_to_music_dir=True,
|
||||||
|
path=DOWNLOAD_PATH.format(**name_attribute),
|
||||||
|
file=DOWNLOAD_FILE.format(**name_attribute)
|
||||||
|
)
|
||||||
pass
|
pass
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
|
Loading…
Reference in New Issue
Block a user