added artist notes
This commit is contained in:
		@@ -58,10 +58,10 @@ print_song(song)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
artist = song.main_artist_list[0]
 | 
					artist = song.main_artist_list[0]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
print_artist(artist)
 | 
					# print_artist(artist)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
artist = EncyclopaediaMetallum.fetch_artist_details(artist)
 | 
					artist = EncyclopaediaMetallum.fetch_artist_details(artist)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# print_artist(artist)
 | 
					print_artist(artist)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# print(only_smile)
 | 
					# print(only_smile)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -10,7 +10,7 @@ from . import (
 | 
				
			|||||||
    not_used_anymore,
 | 
					    not_used_anymore,
 | 
				
			||||||
    target
 | 
					    target
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
from .not_used_anymore import metadata
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
from .utils.shared import (
 | 
					from .utils.shared import (
 | 
				
			||||||
    MUSIC_DIR,
 | 
					    MUSIC_DIR,
 | 
				
			||||||
@@ -49,20 +49,9 @@ Album = database.Album
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
ID3Timestamp = database.ID3Timestamp
 | 
					ID3Timestamp = database.ID3Timestamp
 | 
				
			||||||
 | 
					
 | 
				
			||||||
MetadataSearch = metadata.MetadataSearch
 | 
					 | 
				
			||||||
MetadataDownload = metadata.MetadataDownload
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
cache = database.cache
 | 
					cache = database.cache
 | 
				
			||||||
Database = database.Database
 | 
					Database = database.Database
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def fetch_metadata(type_: str, id_: str):
 | 
					 | 
				
			||||||
    metadata_downloader = MetadataDownload()
 | 
					 | 
				
			||||||
    metadata_downloader.download({'type': type_, 'id': id_})
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
def fetch_metadata_from_search(search_instance: MetadataSearch):
 | 
					 | 
				
			||||||
    current_option = search_instance.current_option
 | 
					 | 
				
			||||||
    fetch_metadata(type_=current_option.type, id_=current_option.id)
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def set_targets(genre: str):
 | 
					def set_targets(genre: str):
 | 
				
			||||||
@@ -112,42 +101,6 @@ searches for the track <any track> from the release <any relaese>
 | 
				
			|||||||
    print(msg)
 | 
					    print(msg)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def execute_input(_input: str, search: MetadataSearch) -> bool:
 | 
					 | 
				
			||||||
    """
 | 
					 | 
				
			||||||
    :returns: True if it should break out of the loop else False
 | 
					 | 
				
			||||||
    """
 | 
					 | 
				
			||||||
    query_input = _input.strip()
 | 
					 | 
				
			||||||
    _input = _input.strip().lower()
 | 
					 | 
				
			||||||
    if _input in ("d", "ok", "dl", "download"):
 | 
					 | 
				
			||||||
        return True
 | 
					 | 
				
			||||||
    if _input in ("q", "quit", "exit"):
 | 
					 | 
				
			||||||
        exit()
 | 
					 | 
				
			||||||
    if _input in ("h", "help"):
 | 
					 | 
				
			||||||
        help_search_metadata()
 | 
					 | 
				
			||||||
        return False
 | 
					 | 
				
			||||||
    if _input.isdigit():
 | 
					 | 
				
			||||||
        print()
 | 
					 | 
				
			||||||
        print(search.choose(int(_input)))
 | 
					 | 
				
			||||||
        return False
 | 
					 | 
				
			||||||
    if _input == "..":
 | 
					 | 
				
			||||||
        print()
 | 
					 | 
				
			||||||
        print(search.get_previous_options())
 | 
					 | 
				
			||||||
        return False
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    print()
 | 
					 | 
				
			||||||
    print(search.search_from_query(query_input))
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
def search_for_metadata():
 | 
					 | 
				
			||||||
    search = MetadataSearch()
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    while True:
 | 
					 | 
				
			||||||
        _input = input("\"help\" for an overview of commands: ")
 | 
					 | 
				
			||||||
        if execute_input(_input=_input, search=search):
 | 
					 | 
				
			||||||
            break
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    print(f"downloading: {search.current_option}")
 | 
					 | 
				
			||||||
    return search
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def get_genre():
 | 
					def get_genre():
 | 
				
			||||||
@@ -166,36 +119,3 @@ def get_genre():
 | 
				
			|||||||
        return existing_genres[genre_id]
 | 
					        return existing_genres[genre_id]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return genre
 | 
					    return genre
 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
def cli(start_at: int = 0, only_lyrics: bool = False):
 | 
					 | 
				
			||||||
    if start_at <= 2 and not only_lyrics:
 | 
					 | 
				
			||||||
        genre = get_genre()
 | 
					 | 
				
			||||||
        logging.info(f"{genre} has been set as genre.")
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    if start_at <= 0:
 | 
					 | 
				
			||||||
        search = search_for_metadata()
 | 
					 | 
				
			||||||
        logging.info("Starting Downloading of metadata")
 | 
					 | 
				
			||||||
        fetch_metadata_from_search(search)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    if start_at <= 1 and not only_lyrics:
 | 
					 | 
				
			||||||
        logging.info("creating Paths")
 | 
					 | 
				
			||||||
        set_targets(genre=genre)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    if start_at <= 2 and not only_lyrics:
 | 
					 | 
				
			||||||
        logging.info("Fetching Download Links")
 | 
					 | 
				
			||||||
        fetch_sources(cache.get_tracks_without_src())
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    if start_at <= 3 and not only_lyrics:
 | 
					 | 
				
			||||||
        logging.info("starting to download the mp3's")
 | 
					 | 
				
			||||||
        fetch_audios(cache.get_tracks_to_download())
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    if start_at <= 4:
 | 
					 | 
				
			||||||
        logging.info("starting to fetch the lyrics")
 | 
					 | 
				
			||||||
        lyrics.fetch_lyrics(cache.get_tracks_for_lyrics())
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
def gtk_gui():
 | 
					 | 
				
			||||||
    # please maximaly a minimal gui, the fully fleshed out gui should be made externally
 | 
					 | 
				
			||||||
    # to avoid ending up with a huge monolyth
 | 
					 | 
				
			||||||
    pass
 | 
					 | 
				
			||||||
 
 | 
				
			|||||||
@@ -16,5 +16,7 @@ Lyrics = objects.Lyrics
 | 
				
			|||||||
Album = objects.Album
 | 
					Album = objects.Album
 | 
				
			||||||
Artist = objects.Artist
 | 
					Artist = objects.Artist
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					FormattedText = objects.FormattedText
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Database = database.Database
 | 
					Database = database.Database
 | 
				
			||||||
cache = temp_database.TempDatabase()
 | 
					cache = temp_database.TempDatabase()
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,7 +2,8 @@ from . import (
 | 
				
			|||||||
    song,
 | 
					    song,
 | 
				
			||||||
    metadata,
 | 
					    metadata,
 | 
				
			||||||
    source,
 | 
					    source,
 | 
				
			||||||
    parents
 | 
					    parents,
 | 
				
			||||||
 | 
					    formatted_text
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
MusicObject = parents.DatabaseObject
 | 
					MusicObject = parents.DatabaseObject
 | 
				
			||||||
@@ -21,3 +22,5 @@ Target = song.Target
 | 
				
			|||||||
Lyrics = song.Lyrics
 | 
					Lyrics = song.Lyrics
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Album = song.Album
 | 
					Album = song.Album
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					FormattedText = formatted_text.FormattedText
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -51,6 +51,10 @@ class FormattedText:
 | 
				
			|||||||
            return None
 | 
					            return None
 | 
				
			||||||
        return pandoc.write(self.doc, format="plain").strip()
 | 
					        return pandoc.write(self.doc, format="plain").strip()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    plaintext = property(fget=get_plaintext, fset=set_plaintext)
 | 
				
			||||||
 | 
					    markdown = property(fget=get_markdown, fset=set_markdown)
 | 
				
			||||||
 | 
					    html = property(fget=get_html, fset=set_html)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class NotesAttributes:
 | 
					class NotesAttributes:
 | 
				
			||||||
    def __init__(self) -> None:
 | 
					    def __init__(self) -> None:
 | 
				
			||||||
@@ -23,6 +23,7 @@ from .source import (
 | 
				
			|||||||
    SourcePages,
 | 
					    SourcePages,
 | 
				
			||||||
    SourceAttribute
 | 
					    SourceAttribute
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					from .formatted_text import FormattedText
 | 
				
			||||||
 | 
					
 | 
				
			||||||
"""
 | 
					"""
 | 
				
			||||||
All Objects dependent 
 | 
					All Objects dependent 
 | 
				
			||||||
@@ -363,7 +364,7 @@ class Artist(DatabaseObject, SourceAttribute, MetadataAttribute):
 | 
				
			|||||||
            feature_songs: List[Song] = None,
 | 
					            feature_songs: List[Song] = None,
 | 
				
			||||||
            main_albums: List[Album] = None,
 | 
					            main_albums: List[Album] = None,
 | 
				
			||||||
            album_type: str = None,
 | 
					            album_type: str = None,
 | 
				
			||||||
            notes: str = None,
 | 
					            notes: FormattedText = None,
 | 
				
			||||||
            lyrical_themes: List[str] = None,
 | 
					            lyrical_themes: List[str] = None,
 | 
				
			||||||
            general_genre: str = "",
 | 
					            general_genre: str = "",
 | 
				
			||||||
            country=None,
 | 
					            country=None,
 | 
				
			||||||
@@ -382,7 +383,9 @@ class Artist(DatabaseObject, SourceAttribute, MetadataAttribute):
 | 
				
			|||||||
        which are meant to only use in outputs to describe the object
 | 
					        which are meant to only use in outputs to describe the object
 | 
				
			||||||
        i mean do as you want but there aint no strict rule about em so good luck
 | 
					        i mean do as you want but there aint no strict rule about em so good luck
 | 
				
			||||||
        """
 | 
					        """
 | 
				
			||||||
        self.notes = notes
 | 
					        self.notes: FormattedText = notes
 | 
				
			||||||
 | 
					        if self.notes is None:
 | 
				
			||||||
 | 
					            self.notes = FormattedText()
 | 
				
			||||||
        self.lyrical_themes: List[str] = lyrical_themes
 | 
					        self.lyrical_themes: List[str] = lyrical_themes
 | 
				
			||||||
        if self.lyrical_themes is None:
 | 
					        if self.lyrical_themes is None:
 | 
				
			||||||
            self.lyrical_themes = []
 | 
					            self.lyrical_themes = []
 | 
				
			||||||
@@ -406,7 +409,11 @@ class Artist(DatabaseObject, SourceAttribute, MetadataAttribute):
 | 
				
			|||||||
            self.source_list = source_list
 | 
					            self.source_list = source_list
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def __str__(self):
 | 
					    def __str__(self):
 | 
				
			||||||
        return self.name or ""
 | 
					        string = self.name or ""
 | 
				
			||||||
 | 
					        plaintext_notes = self.notes.get_plaintext()
 | 
				
			||||||
 | 
					        if plaintext_notes is not None:
 | 
				
			||||||
 | 
					            string += "\n" + plaintext_notes
 | 
				
			||||||
 | 
					        return string
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def __repr__(self):
 | 
					    def __repr__(self):
 | 
				
			||||||
        return self.__str__()
 | 
					        return self.__str__()
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -15,7 +15,8 @@ from ..database import (
 | 
				
			|||||||
    SourcePages,
 | 
					    SourcePages,
 | 
				
			||||||
    Song,
 | 
					    Song,
 | 
				
			||||||
    Album,
 | 
					    Album,
 | 
				
			||||||
    ID3Timestamp
 | 
					    ID3Timestamp,
 | 
				
			||||||
 | 
					    FormattedText
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
from ..utils import (
 | 
					from ..utils import (
 | 
				
			||||||
    string_processing
 | 
					    string_processing
 | 
				
			||||||
@@ -383,6 +384,19 @@ class EncyclopaediaMetallum(Page):
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        return artist
 | 
					        return artist
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @classmethod
 | 
				
			||||||
 | 
					    def fetch_band_notes(cls, artist: Artist, ma_artist_id: str) -> Artist:
 | 
				
			||||||
 | 
					        endpoint = "https://www.metal-archives.com/band/read-more/id/{}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        # make the request
 | 
				
			||||||
 | 
					        r = cls.API_SESSION.get(endpoint.format(ma_artist_id))
 | 
				
			||||||
 | 
					        if r.status_code != 200:
 | 
				
			||||||
 | 
					            LOGGER.warning(f"code {r.status_code} at {endpoint.format(ma_artist_id)}")
 | 
				
			||||||
 | 
					            return artist
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        artist.notes.html = r.text
 | 
				
			||||||
 | 
					        return artist
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @classmethod
 | 
					    @classmethod
 | 
				
			||||||
    def fetch_artist_details(cls, artist: Artist) -> Artist:
 | 
					    def fetch_artist_details(cls, artist: Artist) -> Artist:
 | 
				
			||||||
        source_list = artist.get_sources_from_page(cls.SOURCE_TYPE)
 | 
					        source_list = artist.get_sources_from_page(cls.SOURCE_TYPE)
 | 
				
			||||||
@@ -397,12 +411,12 @@ class EncyclopaediaMetallum(Page):
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        """
 | 
					        """
 | 
				
			||||||
        TODO
 | 
					        TODO
 | 
				
			||||||
        [] https://www.metal-archives.com/bands/Ghost_Bath/3540372489
 | 
					        [x] https://www.metal-archives.com/bands/Ghost_Bath/3540372489
 | 
				
			||||||
        [x] https://www.metal-archives.com/band/discography/id/3540372489/tab/all
 | 
					        [x] https://www.metal-archives.com/band/discography/id/3540372489/tab/all
 | 
				
			||||||
        [] reviews: https://www.metal-archives.com/review/ajax-list-band/id/3540372489/json/1?sEcho=1&iColumns=4&sColumns=&iDisplayStart=0&iDisplayLength=200&mDataProp_0=0&mDataProp_1=1&mDataProp_2=2&mDataProp_3=3&iSortCol_0=3&sSortDir_0=desc&iSortingCols=1&bSortable_0=true&bSortable_1=true&bSortable_2=true&bSortable_3=true&_=1675155257133
 | 
					        [] reviews: https://www.metal-archives.com/review/ajax-list-band/id/3540372489/json/1?sEcho=1&iColumns=4&sColumns=&iDisplayStart=0&iDisplayLength=200&mDataProp_0=0&mDataProp_1=1&mDataProp_2=2&mDataProp_3=3&iSortCol_0=3&sSortDir_0=desc&iSortingCols=1&bSortable_0=true&bSortable_1=true&bSortable_2=true&bSortable_3=true&_=1675155257133
 | 
				
			||||||
        [] simmilar: https://www.metal-archives.com/band/ajax-recommendations/id/3540372489
 | 
					        [] simmilar: https://www.metal-archives.com/band/ajax-recommendations/id/3540372489
 | 
				
			||||||
        [x] sources: https://www.metal-archives.com/link/ajax-list/type/band/id/3540372489
 | 
					        [x] sources: https://www.metal-archives.com/link/ajax-list/type/band/id/3540372489
 | 
				
			||||||
        [] band notes: https://www.metal-archives.com/band/read-more/id/3540372489
 | 
					        [x] band notes: https://www.metal-archives.com/band/read-more/id/3540372489
 | 
				
			||||||
        """
 | 
					        """
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        # SIMPLE METADATA
 | 
					        # SIMPLE METADATA
 | 
				
			||||||
@@ -414,4 +428,7 @@ class EncyclopaediaMetallum(Page):
 | 
				
			|||||||
        # EXTERNAL SOURCES
 | 
					        # EXTERNAL SOURCES
 | 
				
			||||||
        artist = cls.fetch_artist_sources(artist, artist_id)
 | 
					        artist = cls.fetch_artist_sources(artist, artist_id)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        # ARTIST NOTES
 | 
				
			||||||
 | 
					        artist = cls.fetch_band_notes(artist, artist_id)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        return artist
 | 
					        return artist
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user