completed the refactored and improved version of the metadata search module :3

This commit is contained in:
lars 2022-11-07 20:02:38 +01:00
parent 994726e09c
commit 9a771b6673

View File

@ -50,6 +50,12 @@ class Search:
self.options_history.append(new_choices) self.options_history.append(new_choices)
def get_previous_options(self):
self.options_history.pop(-1)
print()
for i, choice in enumerate(self.options_history[-1]):
print(f"{str(i).zfill(2)}) {choice}")
@staticmethod @staticmethod
def fetch_new_options_from_artist(artist: Option): def fetch_new_options_from_artist(artist: Option):
""" """
@ -233,6 +239,7 @@ class Search:
@staticmethod @staticmethod
def search_artist_from_text(artist: str = None): def search_artist_from_text(artist: str = None):
print(artist)
result = musicbrainzngs.search_artists(artist=artist) result = musicbrainzngs.search_artists(artist=artist)
artist_list = get_elem_from_obj(result, ['artist-list'], return_if_none=[]) artist_list = get_elem_from_obj(result, ['artist-list'], return_if_none=[])
@ -248,6 +255,8 @@ class Search:
self.logger.error("either artist, release group or recording has to be set") self.logger.error("either artist, release group or recording has to be set")
return -1 return -1
print()
if recording is not None: if recording is not None:
results = self.search_recording_from_text(artist=artist, release_group=release_group, recording=recording) results = self.search_recording_from_text(artist=artist, release_group=release_group, recording=recording)
elif release_group is not None: elif release_group is not None:
@ -257,7 +266,6 @@ class Search:
self.append_new_choices(results) self.append_new_choices(results)
def search_from_query(self, query: str): def search_from_query(self, query: str):
""" """
mit # wird ein neuer Parameter gestartet mit # wird ein neuer Parameter gestartet
@ -281,7 +289,7 @@ class Search:
for parameter in parameters: for parameter in parameters:
splitted = parameter.split(" ") splitted = parameter.split(" ")
type_ = splitted[0] type_ = splitted[0]
input_ = " ".join(splitted[:1]).strip() input_ = " ".join(splitted[1:]).strip()
if type_ == "a": if type_ == "a":
artist = input_ artist = input_
@ -290,10 +298,11 @@ class Search:
release_group = input_ release_group = input_
continue continue
if type_ == "t": if type_ == "t":
release_group = input_ recording = input_
continue continue
self.search_recording_from_text(artist=artist, release_group=release_group, recording=recording) self.search_from_text(artist=artist, release_group=release_group, recording=recording)
def automated_demo(): def automated_demo():
search = Search(logger=logger_) search = Search(logger=logger_)
@ -308,9 +317,28 @@ def automated_demo():
# choose a recording # choose a recording
search.choose(4) search.choose(4)
def interactive_demo():
search = Search(logger=logger_)
while True:
input_ = input("q to quit, .. for previous options, int for this element, str to search for query, ok to download: ")
input_.strip()
if input_.lower() == "ok":
break
if input_.lower() == "q":
break
if input_.lower() == "..":
search.get_previous_options()
continue
if input_.isdigit():
search.choose(int(input_))
continue
search.search_from_query(input_)
if __name__ == "__main__": if __name__ == "__main__":
logging.basicConfig(level=logging.DEBUG) logging.basicConfig(level=logging.DEBUG)
logger_ = logging.getLogger("test") logger_ = logging.getLogger("test")
search = Search(logger=logger_) interactive_demo()
search.search_from_query("#a Psychonaut 4 #r Tired, Numb and #t Drop by Drop")