added artist notes
This commit is contained in:
parent
7d570038b3
commit
bbf7181b13
@ -58,10 +58,10 @@ print_song(song)
|
||||
|
||||
artist = song.main_artist_list[0]
|
||||
|
||||
print_artist(artist)
|
||||
# print_artist(artist)
|
||||
|
||||
artist = EncyclopaediaMetallum.fetch_artist_details(artist)
|
||||
|
||||
# print_artist(artist)
|
||||
print_artist(artist)
|
||||
|
||||
# print(only_smile)
|
||||
|
@ -10,7 +10,7 @@ from . import (
|
||||
not_used_anymore,
|
||||
target
|
||||
)
|
||||
from .not_used_anymore import metadata
|
||||
|
||||
|
||||
from .utils.shared import (
|
||||
MUSIC_DIR,
|
||||
@ -49,20 +49,9 @@ Album = database.Album
|
||||
|
||||
ID3Timestamp = database.ID3Timestamp
|
||||
|
||||
MetadataSearch = metadata.MetadataSearch
|
||||
MetadataDownload = metadata.MetadataDownload
|
||||
|
||||
cache = database.cache
|
||||
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):
|
||||
@ -112,42 +101,6 @@ searches for the track <any track> from the release <any relaese>
|
||||
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():
|
||||
@ -166,36 +119,3 @@ def get_genre():
|
||||
return existing_genres[genre_id]
|
||||
|
||||
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
|
||||
Artist = objects.Artist
|
||||
|
||||
FormattedText = objects.FormattedText
|
||||
|
||||
Database = database.Database
|
||||
cache = temp_database.TempDatabase()
|
||||
|
@ -2,7 +2,8 @@ from . import (
|
||||
song,
|
||||
metadata,
|
||||
source,
|
||||
parents
|
||||
parents,
|
||||
formatted_text
|
||||
)
|
||||
|
||||
MusicObject = parents.DatabaseObject
|
||||
@ -21,3 +22,5 @@ Target = song.Target
|
||||
Lyrics = song.Lyrics
|
||||
|
||||
Album = song.Album
|
||||
|
||||
FormattedText = formatted_text.FormattedText
|
||||
|
@ -51,6 +51,10 @@ class FormattedText:
|
||||
return None
|
||||
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:
|
||||
def __init__(self) -> None:
|
@ -23,6 +23,7 @@ from .source import (
|
||||
SourcePages,
|
||||
SourceAttribute
|
||||
)
|
||||
from .formatted_text import FormattedText
|
||||
|
||||
"""
|
||||
All Objects dependent
|
||||
@ -363,7 +364,7 @@ class Artist(DatabaseObject, SourceAttribute, MetadataAttribute):
|
||||
feature_songs: List[Song] = None,
|
||||
main_albums: List[Album] = None,
|
||||
album_type: str = None,
|
||||
notes: str = None,
|
||||
notes: FormattedText = None,
|
||||
lyrical_themes: List[str] = None,
|
||||
general_genre: str = "",
|
||||
country=None,
|
||||
@ -382,7 +383,9 @@ class Artist(DatabaseObject, SourceAttribute, MetadataAttribute):
|
||||
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
|
||||
"""
|
||||
self.notes = notes
|
||||
self.notes: FormattedText = notes
|
||||
if self.notes is None:
|
||||
self.notes = FormattedText()
|
||||
self.lyrical_themes: List[str] = lyrical_themes
|
||||
if self.lyrical_themes is None:
|
||||
self.lyrical_themes = []
|
||||
@ -406,7 +409,11 @@ class Artist(DatabaseObject, SourceAttribute, MetadataAttribute):
|
||||
self.source_list = source_list
|
||||
|
||||
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):
|
||||
return self.__str__()
|
||||
|
@ -15,7 +15,8 @@ from ..database import (
|
||||
SourcePages,
|
||||
Song,
|
||||
Album,
|
||||
ID3Timestamp
|
||||
ID3Timestamp,
|
||||
FormattedText
|
||||
)
|
||||
from ..utils import (
|
||||
string_processing
|
||||
@ -383,6 +384,19 @@ class EncyclopaediaMetallum(Page):
|
||||
|
||||
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
|
||||
def fetch_artist_details(cls, artist: Artist) -> Artist:
|
||||
source_list = artist.get_sources_from_page(cls.SOURCE_TYPE)
|
||||
@ -397,12 +411,12 @@ class EncyclopaediaMetallum(Page):
|
||||
|
||||
"""
|
||||
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
|
||||
[] 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
|
||||
[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
|
||||
@ -414,4 +428,7 @@ class EncyclopaediaMetallum(Page):
|
||||
# EXTERNAL SOURCES
|
||||
artist = cls.fetch_artist_sources(artist, artist_id)
|
||||
|
||||
# ARTIST NOTES
|
||||
artist = cls.fetch_band_notes(artist, artist_id)
|
||||
|
||||
return artist
|
||||
|
Loading…
Reference in New Issue
Block a user