tried fixing shit
This commit is contained in:
parent
ad07da7a49
commit
4c041ef7ff
@ -1,15 +1,14 @@
|
||||
from music_kraken import (
|
||||
from music_kraken.objects import (
|
||||
Song,
|
||||
Database,
|
||||
Artist,
|
||||
Album
|
||||
|
||||
)
|
||||
|
||||
|
||||
from music_kraken.pages import (
|
||||
EncyclopaediaMetallum
|
||||
)
|
||||
|
||||
|
||||
"""
|
||||
test_db = Database("test.db")
|
||||
# test_db.reset()
|
||||
|
||||
@ -64,3 +63,7 @@ print_song(song)
|
||||
artist = song.main_artist_list[0]
|
||||
artist = EncyclopaediaMetallum.fetch_artist_details(artist, flat=False)
|
||||
print_artist(artist)
|
||||
"""
|
||||
|
||||
results = EncyclopaediaMetallum.search_by_query("#a only smile")
|
||||
print(results)
|
||||
|
@ -6,6 +6,7 @@ import logging
|
||||
import os
|
||||
|
||||
from . import (
|
||||
objects,
|
||||
database,
|
||||
pages
|
||||
)
|
||||
@ -37,33 +38,21 @@ logging.getLogger("musicbrainzngs").setLevel(logging.WARNING)
|
||||
musicbrainzngs.set_useragent("metadata receiver", "0.1", "https://github.com/HeIIow2/music-downloader")
|
||||
|
||||
# define the most important values and function for import in the __init__ file
|
||||
Song = database.Song
|
||||
Artist = database.Artist
|
||||
Source = database.Source
|
||||
SourceTypes = database.SourceTypes
|
||||
SourcePages = database.SourcePages
|
||||
Target = database.Target
|
||||
Lyrics = database.Lyrics
|
||||
Album = database.Album
|
||||
MusicObject = database.MusicObject
|
||||
|
||||
ID3Timestamp = database.ID3Timestamp
|
||||
|
||||
cache = database.cache
|
||||
Database = database.Database
|
||||
|
||||
def get_options_from_query(query: str) -> List[MusicObject]:
|
||||
def get_options_from_query(query: str) -> List[objects.MusicObject]:
|
||||
options = []
|
||||
for MetadataPage in pages.MetadataPages:
|
||||
options.extend(MetadataPage.search_by_query(query=query))
|
||||
return options
|
||||
|
||||
def get_options_from_option(option: MusicObject) -> List[MusicObject]:
|
||||
def get_options_from_option(option: objects.MusicObject) -> List[objects.MusicObject]:
|
||||
for MetadataPage in pages.MetadataPages:
|
||||
option = MetadataPage.fetch_details(option, flat=False)
|
||||
return option.get_options()
|
||||
|
||||
def print_options(options: List[MusicObject]):
|
||||
def print_options(options: List[objects.MusicObject]):
|
||||
print("\n".join([f"{str(j).zfill(2)}: {i.get_option_string()}" for j, i in enumerate(options)]))
|
||||
|
||||
def cli():
|
||||
|
@ -108,8 +108,8 @@ class Source(BaseModel):
|
||||
url: str = CharField()
|
||||
|
||||
content_type: str = CharField()
|
||||
content_id: int = IntegerField()
|
||||
content: ForeignKeyField = ForeignKeyField('self', backref='content_items', null=True)
|
||||
content_id: int = CharField()
|
||||
# content: ForeignKeyField = ForeignKeyField('self', backref='content_items', null=True)
|
||||
|
||||
@property
|
||||
def content_object(self) -> Union[Song, Album, Artist]:
|
||||
|
@ -1,6 +1,7 @@
|
||||
# Standard library
|
||||
from typing import Optional, Union, List
|
||||
from enum import Enum
|
||||
from playhouse.migrate import *
|
||||
|
||||
# third party modules
|
||||
from peewee import (
|
||||
@ -12,9 +13,9 @@ from peewee import (
|
||||
# own modules
|
||||
from . import (
|
||||
data_models,
|
||||
write,
|
||||
objects,
|
||||
write
|
||||
)
|
||||
from .. import objects
|
||||
|
||||
|
||||
class DatabaseType(Enum):
|
||||
@ -76,6 +77,18 @@ class Database:
|
||||
|
||||
raise ValueError("Invalid database type specified.")
|
||||
|
||||
|
||||
@property
|
||||
def migrator(self) -> SchemaMigrator:
|
||||
if self.db_type == DatabaseType.SQLITE:
|
||||
return SqliteMigrator(self.database)
|
||||
|
||||
if self.db_type == DatabaseType.MYSQL:
|
||||
return MySQLMigrator(self.database)
|
||||
|
||||
if self.db_type == DatabaseType.POSTGRESQL:
|
||||
return PostgresqlMigrator(self.database)
|
||||
|
||||
def initialize_database(self):
|
||||
"""
|
||||
Connect to the database
|
||||
@ -85,19 +98,37 @@ class Database:
|
||||
self.database = self.create_database()
|
||||
self.database.connect()
|
||||
|
||||
self.database.create_tables(data_models.ALL_MODELS, safe=True)
|
||||
migrator = self.migrator
|
||||
|
||||
for model in data_models.ALL_MODELS:
|
||||
model = model.Use(self.database)
|
||||
|
||||
if self.database.table_exists(model):
|
||||
migration_operations = [
|
||||
migrator.add_column(
|
||||
"some field", field[0], field[1]
|
||||
)
|
||||
for field in model._meta.fields.items()
|
||||
]
|
||||
|
||||
migrate(*migration_operations)
|
||||
else:
|
||||
self.database.create_tables([model], safe=True)
|
||||
|
||||
#self.database.create_tables([model.Use(self.database) for model in data_models.ALL_MODELS], safe=True)
|
||||
|
||||
"""
|
||||
upgrade old databases.
|
||||
If a collumn has been added in a new version this adds it to old Tables,
|
||||
without deleting the data in legacy databases
|
||||
"""
|
||||
|
||||
for model in data_models.ALL_MODELS:
|
||||
for field_name, field_obj in model._meta.fields.items():
|
||||
# check if the field exists in the database
|
||||
if not self.database.table_column_exists(model._meta.db_table, field_name):
|
||||
# add the missing column to the table
|
||||
self.database.add_column(model._meta.db_table, field_name, field_obj)
|
||||
model = model.Use(self.database)
|
||||
|
||||
|
||||
|
||||
print(model._meta.fields)
|
||||
|
||||
def push(self, database_object: objects.MusicObject):
|
||||
"""
|
||||
|
@ -1,4 +1,4 @@
|
||||
from .old_database import Database
|
||||
from .database import Database, DatabaseType
|
||||
|
||||
from ..utils.shared import (
|
||||
TEMP_DATABASE_PATH,
|
||||
@ -9,11 +9,8 @@ logger = DATABASE_LOGGER
|
||||
|
||||
|
||||
class TempDatabase(Database):
|
||||
def __init__(self, reset_on_start: bool = True) -> None:
|
||||
super().__init__(TEMP_DATABASE_PATH)
|
||||
|
||||
if reset_on_start:
|
||||
self.reset()
|
||||
def __init__(self) -> None:
|
||||
super().__init__(db_type=DatabaseType.SQLITE, db_name=TEMP_DATABASE_PATH)
|
||||
|
||||
|
||||
temp_database = TempDatabase()
|
||||
|
@ -9,7 +9,7 @@ from peewee import (
|
||||
Model
|
||||
)
|
||||
|
||||
from . import objects
|
||||
from .. import objects
|
||||
from . import data_models
|
||||
|
||||
# just a Type for type hintung. You can't do anything with it.
|
||||
|
@ -12,6 +12,7 @@ MusicObject = parents.DatabaseObject
|
||||
ID3Mapping = metadata.Mapping
|
||||
ID3Timestamp = metadata.ID3Timestamp
|
||||
|
||||
Source = source.Source
|
||||
SourceTypes = source.SourceTypes
|
||||
SourcePages = source.SourcePages
|
||||
SourceAttribute = source.SourceAttribute
|
||||
|
@ -1,7 +1,7 @@
|
||||
from typing import List
|
||||
|
||||
from .source import SourceAttribute
|
||||
from src.music_kraken.utils import string_processing
|
||||
from ..utils import string_processing
|
||||
|
||||
|
||||
class Collection:
|
||||
|
@ -1,7 +1,7 @@
|
||||
from typing import Optional
|
||||
import uuid
|
||||
|
||||
from src.music_kraken.utils.shared import (
|
||||
from ..utils.shared import (
|
||||
SONG_LOGGER as LOGGER
|
||||
)
|
||||
|
||||
|
@ -7,7 +7,7 @@ from .metadata import (
|
||||
ID3Timestamp,
|
||||
MetadataAttribute
|
||||
)
|
||||
from src.music_kraken.utils.shared import (
|
||||
from ..utils.shared import (
|
||||
MUSIC_DIR,
|
||||
DATABASE_LOGGER as LOGGER
|
||||
)
|
||||
|
@ -3,8 +3,7 @@ from typing import List, Dict
|
||||
|
||||
from .metadata import Mapping, MetadataAttribute
|
||||
from .parents import (
|
||||
DatabaseObject,
|
||||
SongAttribute,
|
||||
DatabaseObject
|
||||
)
|
||||
|
||||
|
||||
@ -48,7 +47,7 @@ class SourcePages(Enum):
|
||||
return homepage_map[attribute]
|
||||
|
||||
|
||||
class Source(DatabaseObject, SongAttribute, MetadataAttribute):
|
||||
class Source(DatabaseObject, MetadataAttribute):
|
||||
"""
|
||||
create somehow like that
|
||||
```python
|
||||
|
Loading…
Reference in New Issue
Block a user